matlab利用牛顿法求解非线性方程01

在如下链接中,本人看到了牛顿法求解非线性方程的一个程序,给人耳目一新的感觉。

https://blog.csdn.net/weixin_43429936/article/details/83720382

但不知何故,本人未能运行该博主写的程序,于是我对原程序做了一定修改,程序得以运行,代码如下:

牛顿法程序代码: 

function gen=newton(f,x,tol)
%f为函数,x0为初值,tol为指定允差,如果缺省,默认为1e-6
if(nargin==2)
    tol=1e-6;
end
x0=x;%给定初值
wucha=0.1;%给定一个误差初值,以方便进入循环计算
while(wucha>tol)
    fx=double(subs(f,x0));%首先调用subs函数,将x0代入,计算f(x0);然后调用double函数,计算结果取小数
    df=double(subs(diff(f),x0));%首先调用diff函数,对f求导;然后调用subs函数,将x0代入,计算f'(x0);最后调用double函数,计算结果取小数
    gen=x0-fx/df;%牛顿法迭代公式,计算非线性方程的根
    wucha=abs(gen-x0);%计算误差绝对值
    x0=gen;%把gen赋给x0,进行下一轮计算
end
gen;%程序结果出口

函数程序代码:

function y=f
syms x
y=x^2-4*x-5;

输入

>> newton(f,5.5,tol)

计算结果如下: 

ans =

   5.000000041578143

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值