防灾数学分享 http://blog.sciencenet.cn/u/fzmath 防灾科技学院数学教研室

博文

非线性方程求解——牛顿法

已有 7225 次阅读 2011-3-24 22:02 |个人分类:未分类|系统分类:科研笔记| MATLAB, 牛顿法

高等数学中非线性方程求解的一种方法——牛顿法的matlab实现。
matlab中有fzero可用来求根,这里作为教学例子供学生理解牛顿法原理时参考。
 
本程序需要使用者提供至少三个输入:
fun 非线性方程
dfun 非线性方程的导函数
x0   猜想的初始根
下面是牛顿法的源代码。
function [sol,fval] = newtonalgorithm0(fun,dfun,x0,tolerance)
if  nargin < 3
    disp('Newton algorithm requires at least three input arguments.');
    return;
end
if  nargin < 4
    tolerance = 1e-6;
end
f0 = feval(fun,x0);
if abs(f0) < tolerance
    sol = x0; fval = f0; k = 0;
    return;
end
k = 0; error=1; x1=x0+1;
while error > tolerance
    f0 = feval(fun,x0);
    df0 = feval(dfun,x0);
    x1 = x0 - f0/df0;
    error = abs(x1 - x0);
    x0 = x1;
    k = k+1
end
sol = x1;
fval = feval(fun,sol);
%iters = k;


https://wap.sciencenet.cn/blog-292361-425983.html

上一篇:高斯消去法的matlab程序
下一篇:一道用定义解决的概率题
收藏 IP: 27.189.251.*| 热度|

1 金小伟

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-8 12:14

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部