将函数转换为极坐标并在R中绘图

时间:2018-06-11 01:58:52

标签: r graph polar-coordinates

我尝试使用极坐标在两个多项式的R中重现图形。 f1(x)和f2(x)是具有转换的极坐标函数f1(θ)和f2(θ)的两个多项式。目标是从笛卡尔和极坐标函数中获得相同的图形。目前,我只使用极坐标获得多项式的一部分。

x<-seq(0,10,0.001)
f1x<-function(x){
  (x-4)*(x-3)+1
}
f2x<-function(x){
  (x-5)*(x-4)+20
}

f1<-function(theta){
  #y=(x-4)*(x-3)+10
  #r*sin(theta)=(r*cos(theta)-4)*(r*cos(theta)-3)+1
  r=0.50*(1/cos(theta))^2*(sin(theta)+7*cos(theta)-sqrt(7*sin(2*theta)-2*cos(2*theta)-1))
  r
}
f2<-function(theta){
  #y=(x-5)*(x-4)+30
  #r*sin(theta)=(r*cos(theta)-5)*(r*cos(theta)-4)+20
  r = 0.50*(1/cos(theta))^2*(sin(theta)+9*cos(theta)-sqrt(9*sin(2*theta)-40*cos(2*theta)-39))
  r
}

##theta=atan(y/x)
##r=sqrt(x^2+y^2)
#starts
c(0,f1x(0)) #(0,13)----->(pi/2,13)
c(0,f2x(0)) #(0,40)----->(pi/2,40)

#ends
# c(10,f1x(10)) #(10,43)-->(sqrt(1949),atan(43/10))
# c(10,f2x(10)) #(10,50)-->(sqrt(2600),atan(5)+pi)

#Plot
plot(x,f2x(x),ylab="",xlab="", type="l",ylim=c(0,55),xlim=c(-2,12))
lines(x,f1x(x))
linesPolar<-function(fn,theta){
  r<-fn(theta)
  x=r*cos(theta)
  y=r*sin(theta)
  lines(x,y,type="l",col="red",lty=3,lwd=2)
}
linesPolar(f1,seq(atan(43/10),(pi/2+0.01),0.01))
linesPolar(f2,seq(atan(4),(pi/2+0.01),0.01))

0 个答案:

没有答案