如何提高迭代精度?
How to Improve Accuracy of Iteration?
我正在尝试编写 C++ 代码来绘制 Mandlebrot 集。但是,每当我 运行 我的代码时,见下文,收敛性很差。我该如何解决?我在下面提供了一些代码。还有一个 Mandelbrot 集的屏幕截图,红色,以及我的代码的近似值,灰度。
#include <GL/glut.h>
void renderscene(void) {
double x=0;
double y=0;
double ix=0;
double iy=0;
int n=1;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
for(x=-3;x<3;x=x+0.01){
for(y=-3;y<3;y=y+0.01){
for(n=1;n<50;n=n+1){
ix=ix*ix-iy*iy+x;
iy=2*iy*ix+y;
if(ix*ix+iy*iy>4){
break;
}
}
ix=0;
iy=0;
glPointSize(1);
glColor3f(0.1*n,0.1*n,0.1*n);
glBegin(GL_POINTS);
glVertex2f(x*0.4,y*0.4);
glEnd();
}
}
glutSwapBuffers();
}
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH|GLUT_DOUBLE|GLUT_RGBA);
glutInitWindowPosition(300,200);
glutInitWindowSize(500,500);
glutCreateWindow("Hello");
glutDisplayFunc(renderscene);
glutMainLoop();
return 1;
}
您在计算新的 iy
时使用了错误的 ix
。
尝试
double nextix=ix*ix-iy*iy+x;
iy=2*iy*ix+y;
ix = nextix;
我正在尝试编写 C++ 代码来绘制 Mandlebrot 集。但是,每当我 运行 我的代码时,见下文,收敛性很差。我该如何解决?我在下面提供了一些代码。还有一个 Mandelbrot 集的屏幕截图,红色,以及我的代码的近似值,灰度。
#include <GL/glut.h>
void renderscene(void) {
double x=0;
double y=0;
double ix=0;
double iy=0;
int n=1;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
for(x=-3;x<3;x=x+0.01){
for(y=-3;y<3;y=y+0.01){
for(n=1;n<50;n=n+1){
ix=ix*ix-iy*iy+x;
iy=2*iy*ix+y;
if(ix*ix+iy*iy>4){
break;
}
}
ix=0;
iy=0;
glPointSize(1);
glColor3f(0.1*n,0.1*n,0.1*n);
glBegin(GL_POINTS);
glVertex2f(x*0.4,y*0.4);
glEnd();
}
}
glutSwapBuffers();
}
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH|GLUT_DOUBLE|GLUT_RGBA);
glutInitWindowPosition(300,200);
glutInitWindowSize(500,500);
glutCreateWindow("Hello");
glutDisplayFunc(renderscene);
glutMainLoop();
return 1;
}
您在计算新的 iy
时使用了错误的 ix
。
尝试
double nextix=ix*ix-iy*iy+x;
iy=2*iy*ix+y;
ix = nextix;