Matlab学习手记——非线性方程组求解:牛顿法

·  阅读 667
功能:牛顿法求解非线性方程组。
调用示例
命令行输入:

[r, n]=mul_Newton([0 0 0], 1e-5)
得到结果:

r =
0.4996 -0.0900 -0.5259
n =
5
源码
function [r, n] = mul_Newton(x0, eps)
% 牛顿法求解非线性方程组
% 输入参数说明:
% 初始迭代向量:x0
% 迭代精度:eps
% 输出参数说明:
% 解向量:r
% 迭代次数:n
r = x0- myfun(x0)/dmyfun(x0);
n = 1;
tol = 1;
while tol > eps
x0 = r;
r = x0 - myfun(x0)/dmyfun(x0);
tol = norm(r - x0);
n = n + 1;
if(n > 100000)
disp('迭代步数太多,可能不收敛!');
return;
end
end

function f = myfun(x)
x1 = x(1);
x2 = x(2);
x3 = x(3);
f(1) = 3*x1 - cos(x2*x3) -1/2;
f(2) = x1^2 - 81*(x2 + 0.1) + sin(x3) + 1.06;
f(3) = exp(-x1*x2) + 20*x3 + 1/3*(10*pi - 3);

function df =dmyfun(x)
x1 = x(1);
x2 = x(2);
x3 = x(3);
df=[3, x3*sin(x2*x3), x2*sin(x2*x3); 2*x1, -81, cos(x3); -x2*exp(-x1*x2), -x1*exp(-x1*x2), 20];

---------------------
作者:有个家伙喜欢代码
来源:CSDN
原文:blog.csdn.net/u012366767 …
版权声明:本文为博主原创文章,转载请附上博文链接!

更多免费技术资料可关注:annalin1203


分类:
代码人生
标签:
分类:
代码人生
标签: