首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用matlab中的割线法求函数根

用matlab中的割线法求函数根
EN

Stack Overflow用户
提问于 2016-03-31 10:36:40
回答 1查看 1.1K关注 0票数 1

使用割线法计算函数根的matlab代码如下:

代码语言:javascript
复制
syms x
f=@(x) x.^2-2;
x0=1;
x1=5;
tol=0.01;

for i=1:100

    if (f(x0)-f(x1)) < 0.00001
        break;
    end

xn = x0-((f(x0)*(x0-x1))/(f(x0)-f(x1)));

    if abs(xn-x0) < tol*abs(xn)
       break;
    end
    x0=xn;
    x1=x0;
end


fprintf('the root is %g\n', xn)

当我运行代码时,matlab说:Undefined function or variable 'xn'.,它为什么这么说?我在代码中定义了xn!

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-31 10:54:46

在此if语句中缺少一个绝对值:

代码语言:javascript
复制
if abs(f(x0)-f(x1)) < 0.00001
    break;
end

没有这一点,for循环在进入xn定义之前就会中断,这不是因为f(x0)接近f(x1),而是因为结果为负值。

通过运行,您有第二个问题,这些行需要交换,否则它们最终是相等的,这不是你想要的。

代码语言:javascript
复制
x0=xn;
x1=x0;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36330963

复制
相关文章

相似问题

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