方程:z^6-1=0;

%f为求解的方程,df是导数,使用的时候用funchandler定义
%res是目标分辨率,iter是循环次数,(xc,yc)是图像的中心,xoom是放大倍数
%参数视自己需求增加或减少
function newton(f,df,res,iter,xc,yc,xoom)
%一些乱糟糟的初始化
eol=1e-5;
x0=xc-2.5/xoom;x1=xc+2.5/xoom;
y0=yc-2.5/xoom;y1=yc+2.5/xoom;
x=linspace(x0,x1,res);
y=linspace(y0,y1,res);
[xx,yy]=meshgrid(x,y);
z=xx+yy*1i;
kk=zeros(res,res);
tic
%对每个点进行牛顿迭代
%这个代码并行度很差,因为要对每个点单独进行一次牛顿迭代,执行速度非常慢
%明天的r参数染色我会加入并行化的算法
for m=1:res
for n=1:res
k=0;
t=z(m,n);
ff=f(t);
while (k<=iter)&&(abs(ff)>eol)
t=t-f(t)/df(t);
ff=f(t);
k=k+1;
end;
kk(m,n)=k;
end;
end;
colormap hsv;
image(x,y,kk);
axis square;
toc
end
View Code

相关文章:

  • 2021-09-08
  • 2021-12-30
  • 2022-03-04
  • 2021-06-17
  • 2021-08-12
  • 2022-12-23
  • 2022-02-14
  • 2022-12-23
猜你喜欢
  • 2021-10-28
  • 2021-09-08
  • 2021-07-05
  • 2021-11-18
  • 2022-12-23
  • 2021-07-17
  • 2021-11-18
相关资源
相似解决方案