首页 > 解决方案 > 在 Matlab 中执行割线方法时没有得到结果

问题描述

我是 MATLAB 的新手,正在研究数值计算课程的割线法,但我没有得到结果,因为我在纸上解决了问题。我正在提供我的代码,请告诉我此代码中缺少什么。

function x = mysecant(f,x0,x1,n)
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here
y0 = f(x0);
y1 = f(x1);

for i = 1:n
    x = x1 - (x1 - x0)*y1/(y1-y0); %secant formula.
    y = f(x);
    x0 = x1;
    y0=y1;
    x1=x;
end

end

标签: matlabnumerical-methods

解决方案


基本上,我们必须在割线方法的每次迭代之后x1更新值。y1您只是在更新x1而不是 y1,添加y1 = y. 这将解决您的问题。

function x = mysecant(f,x0,x1,n)
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here
y0 = f(x0);
y1 = f(x1);

for i = 1:n
    x = x1 - (x1 - x0)*y1/(y1-y0); %secant formula.
    y = f(x);
    x0 = x1;
    y0=y1;
    x1=x;
    y1=y;
end

end

推荐阅读