sphm.net
当前位置:首页 >> mAtlAB编写 牛顿法解非线性方程的程序 >>

mAtlAB编写 牛顿法解非线性方程的程序

Newton's method is the classic algorithm for finding roots of functions. The breif introduction is written below. The analytic solution is The code is clear allx = zeros(1,2);f = zeros(1,2);tol = 1E-7;invJ = zeros(2,2);x(1) = 0...

你可以利用海塞矩阵来求解 http://blog.csdn.net/u010922186/article/details/41449781

原因在这一句:else fprintf('x0=%f xe=%f k=%d\n',x0,xe,k) 其中xe=%f只能输出的精度是0.000000,默认6位仅只小数点后面包含6位。而实际xe=0.0000001139,因此没有看到数字。 改成:xe=%.10f,表示小数位有十个。 结果:xe=0.0000001139

g = inline('9*y^2-24*y+13');gy = inline('18*y-24 ');a = 2; e1=0.0001;n=1;y = a-(g(a)/gy(a));z = abs(y-a);while z>e1 y = a-(g(a)/gy(a)); z = abs(y-a); a = y;n=n+1;enda,n

给你一个完整版:% 牛顿法求解非线性方程组 function main() clc; clear all; f = @(x)log(x+sin(x)); % 测试函数 df = @(x)(1+cos(x))/(x+sin(x)); % 导数函数 x0 = 0.1; % 迭代初值 x = TestNewton(f, df, x0) % 牛顿法求解 function x = Test...

牛顿迭代法: function[x0,n]=newton(fx,dfx,x0,tol,N) % 牛顿迭代法 % 第一个参数 fx 是关于变量x的所要求的函数表达式. % 第二个参数 dfx 是fx的一阶导数. % x0 是迭代初始值. % tol 是迭代误差限. % N 最大迭代次数. x=x0;f0=eval(fx);df0=ev...

clear,clc ezplot('sin(x)') hold on ezplot('x^2/4') grid on f=@(x)sin(x)-x^2/4; df=@(x)cos(x)-x/2;%导数 x=3;%任意有意义的初始值 while abs(f(x))>0.00001 x=x-f(x)/df(x); end x %图很明显有两个 这里给的逼近值不同所以求出哪一个也不一...

你这个出什么问题了??

不能。一般来说,一次迭代只能找到一个根。另外,并不是所有的根都能被找到,导数为0的根是不能用牛顿法找到的,原因看迭代公式就知道了。

用牛顿迭代法求得, x1 = 0.7867;x2 = 0.8045;x3 = 30.8824 运行代码:

网站首页 | 网站地图
All rights reserved Powered by www.sphm.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com