matlab Newton迭代法和二分法

学习 时间:2026-04-04 21:33:47 阅读:5662
matlab Newton迭代法和二分法3.分别用Newton迭代法和二分法求解非线性方程非线性方程3*x.^2+x – 2*exp(x)=0在1,10附近的根并比较两种方法的迭带次数.(用函数实现)

最佳回答

碧蓝的飞机

结实的小猫咪

2026-04-04 21:33:47

function testclearclc%实验方程:3*x。^2+x+2*exp(x)=0%原函数f=@(x)3*x。^2+x-2*exp(x);%导函数df=@(x)6*x+1-2*exp(x);%原函数在[-1 0]上的图像(有根范围)fplot(f,[-1 0])hold on%牛顿切线法[x1,n1]=fnewton(f,df,-0。5);disp(sprintf('牛顿切线法\n在%f附近的根:%f\n迭代次数:%d',-0。5,x1,n1))%二分法[x2,n2]=f2fen(f,-1,0);disp(sprintf('二分法\n在[%f,%f]上的根:%f\n迭代次数:%d',-1,0,x2,n2))plot(x1,f(x1),'xr',x2,f(x2),'+g')%-------------牛顿切线法---------------function [x,n]=fnewton(f,df,x0)x=x0;%初值delta=1;n=0;%迭代次数,下同while abs(delta)>1e-6delta=f(x)/df(x);x=x-delta;n=n+1;endend%--------------二分法--------------function [x,n]=f2fen(f,a,b)xab=[a;b];%两个端点值pab=sign(f(xab));n=0;while diff(xab)>1e-6x=mean(xab);p=sign(f(x));n=n+1;if p,break;endxab(p==pab)=x;endend%-----------------------------------end

最新回答共有2条回答

  • 忧虑的方盒
    回复
    2026-04-04 21:33:47

    function testclearclc%实验方程:3*x。^2+x+2*exp(x)=0%原函数f=@(x)3*x。^2+x-2*exp(x);%导函数df=@(x)6*x+1-2*exp(x);%原函数在[-1 0]上的图像(有根范围)fplot(f,[-1 0])hold on%牛顿切线法[x1,n1]=fnewton(f,df,-0。5);disp(sprintf('牛顿切线法\n在%f附近的根:%f\n迭代次数:%d',-0。5,x1,n1))%二分法[x2,n2]=f2fen(f,-1,0);disp(sprintf('二分法\n在[%f,%f]上的根:%f\n迭代次数:%d',-1,0,x2,n2))plot(x1,f(x1),'xr',x2,f(x2),'+g')%-------------牛顿切线法---------------function [x,n]=fnewton(f,df,x0)x=x0;%初值delta=1;n=0;%迭代次数,下同while abs(delta)>1e-6delta=f(x)/df(x);x=x-delta;n=n+1;endend%--------------二分法--------------function [x,n]=f2fen(f,a,b)xab=[a;b];%两个端点值pab=sign(f(xab));n=0;while diff(xab)>1e-6x=mean(xab);p=sign(f(x));n=n+1;if p,break;endxab(p==pab)=x;endend%-----------------------------------end

上一篇 同义句转换:1.Liu Ying is twelve years old and Liu Ping is twelve

下一篇 CBD软床怎么样,听说口碑很不错