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

本文介绍了一种使用牛顿法求解非线性方程组的方法,并给出了具体的MATLAB函数实现。该函数接受初始迭代向量和迭代精度作为输入参数,输出非线性方程组的解向量及迭代次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能:牛顿法求解非线性方程组。

  • 调用示例

    命令行输入:

[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];

 

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值