我试图从零开始在R中生成Mandelbrot集代码,而不使用任何预定义的函数。但我收到一条错误信息说-
复数(实= rl,虚=高):在胁迫中丢弃的虚部
我认为这意味着复数不能存储在向量中。
请告诉我我是对还是错,也请帮助我解决这个错误。
下面是我的密码。
listx=c()
z=0
inmbs=F
imgdispl=matrix(c(),441 ,441 )
for (hig in seq(-220,220,1)){
for (wid in seq(-220,220,1)){
listx=c()
z=0
for (k in 0:5){
inmbs=F
xx=z^2
rl=xx+wid
l = complex(real = rl, imaginary = hig)
if (l %in% listx){
inmbs=T
break
}
else{
append(listx,l)
z=l
}
}
if (inmbs==T){
imgdispl[hig+221,wid+221]=1
}
else{
imgdispl[hig+221,wid+221]=0
}
}
}
image(imgdispl)更新代码:
listx=c()
z=0
inmbs=F
imgdispl=matrix(c(0),441 ,441 )
for (hig in seq(-220,220,1)){
for (wid in seq(-220,220,1)){
listx=c()
z=0
for (k in 0:5){
inmbs=F
xx=z^2
coor = complex(real = wid/15, imaginary = hig/15)
l=xx+coor
if (l %in% listx){
inmbs=T
break
}
else{
append(listx,l)
z=l
}
}
if (inmbs==T){
imgdispl[hig+221,wid+221]=1
}
else{
imgdispl[hig+221,wid+221]=0
}
}
}
image(imgdispl)发布于 2020-08-23 16:08:03
如果调试代码,您将看到rl变得复杂。
消息告诉您,在调用以下内容时只使用真实的部分:
l = complex(real = rl, imaginary = hig)如果你遵循这些使用说明,你会得到:
z=0
N=10
inmbs=F
imgdispl=matrix(c(0),441 ,441 )
for (hig in seq(-220,220,1)){
for (wid in seq(-220,220,1)){
coor = complex(real = wid/220, imaginary = hig/220)
z=0
for (k in 0:N){
inmbs=F
if ((Re(z)^2+Im(z)^2)>4){
inmbs=T
break
}
z = z^2 + coor
}
if (inmbs==T){
imgdispl[hig+221,wid+221]=1
}
else{
imgdispl[hig+221,wid+221]=0
}
}
}
image(imgdispl)

https://stackoverflow.com/questions/63549089
复制相似问题