首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab牛顿拉夫森

Matlab牛顿拉夫森
EN

Stack Overflow用户
提问于 2014-12-15 17:05:01
回答 1查看 1.1K关注 0票数 0

几周前,我向大家寻求有关Matlab任务的帮助,但是因为它花了我一些时间来解决,所以我把它删除了。不幸的是,我仍然有一个问题。

任务是:使用牛顿-拉夫森方法,使用至少3次迭代找到函数f(x)=tanh(x^2 - 9)的实际根。x= 3.2以图形方式显示每个迭代。

在代码中"pog“的意思是min。错了,"br“是反的。

如果我不放一个计数器,它立即给我"NaN",它用计数器写前几个计算。

我的代码:

代码语言:javascript
复制
clc

clear all

x=3.2;

fx=tanh(x^2-9);

iter=5;

pog=0.01;

br=1;

while br<10;

xk= x-((tanh(x^2-9))/(-2*x*(tanh(x^2 - 9)^2 - 1)));

fprintf ('x=%g\txk=%g\t%g\n', x,xk, abs(xk-x))

if pog>abs(xk-x);

break

end

x=xk;

br=br+1;

end

提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-15 23:46:25

就以图形方式显示迭代而言,这是我所能做的最好的:

代码语言:javascript
复制
clc
clear all
close
G=zeros(20,10);
X=linspace(2.5,3.5,20)
G(:,1)=X;
for i=1:length(X)
    x=X(i)
    fx=tanh(x^2-9);
    pog=0.0001;
    br=1;
    while br<10;
        xk= x-((tanh(x^2-9))/(2*x*sech(9-x^2)^2));
        G(i,br+1)=xk;
        x=xk;
        br=br+1;
    end
end
I=tanh(G(:,end).^2-9)<1e-5;
X(I)
plot(G,1:10)
hold off
axis([2.5 3.5 0 5])

X(I)是一个开始值的列表--收敛到根,图中显示y轴上的迭代数,以及在x轴上对该迭代的猜测。您可以跟踪每个起始值并查看发生了什么。

这是另一种可视化牛顿方法的方法。它显示了构造的切线,它通过0,给出了新的x值,垂直线给出了新的函数值,为下一次迭代定义了一条新的切线。也许能帮上忙。

代码语言:javascript
复制
clc
clear all
close
G=zeros(20,10);
X=linspace(2.75,3.25,20)
G(:,1)=X;

x2=2:.01:4;f2=@(x) tanh(x.^2-9); %// to help with plotting

for i=1:length(X)
    x=X(i)
    fx=tanh(x^2-9);
    pog=0.0001;
    br=1;
    xk=x;

    while br<10;
        %// Newton method step        
        dx=((tanh(x^2-9))/(2*x*sech(9-x^2)^2));
        xk=x-dx;

        %// plotting everything
        G(i,br+1)=xk;
        plot(x2,f2(x2))
        hold all
        plot(G(i,br:br+1),f2(G(i,br:br+1)),'.','MarkerSize',16)
        plot(x2,f2(x)+(x2-x)./(xk-x).*(-f2(x)))
        plot(xk,0,'.','MarkerSize',16)
        plot(x2,(x2-xk)*(2*xk*sech(9-xk^2)^2)+f2(xk))
        plot([xk xk],[-1 1])
        plot([2 4],[0 0],'k')
        axis([2 4 -1 1])
        drawnow
        pause
        hold off

        %// finishing Newton step
        x=xk;
        br=br+1;
    end
    hold off
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27489231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档