利用牛顿迭代法和雅克比迭代法解决实际问题

建立shuzhi.m 文件如下:(把非线性方程组保存到shuzhi.m 文件中)

function F=shuzhi(X)
x=X(1);
y=X(2);
F=zeros(1,2);
F(1)=x.^2-2*x-y+0.5;
F(2)=x.^2+4*y.^2-4
end

建立jacobi.m 文件如下:(把非线性方程组的雅可比矩阵保存到jacobi.m 文件中)

function J=jacobi(X)
x=X(1);
y=X(2);
J=[2*x-2 -1;2*x 8*y];
end

建立ma_nl_newton.m 文件如下:

function [p,iter,err]=ma_nl_newton(F,J,p,delta,epsilon,max1)
y=feval(F,p);
for k=1:max1
    j=feval(J,p);
    q=p-(j\y')';
    z=feval(F,q);
    err=norm(q-p);
    relerr=err/(norm(q)+eps);
    p=q;
    y=z;
    iter=k;
    if(err<delta)|(relerr<delta)|(abs(y)<epsilon)
        break
    end
end
end

在命令窗口输入如下:

>> ma_nl_newton('shuzhi','jacobi',[2 0.25],0.001,0.01,100)

F =

    0.2500    0.2500


F =

    0.0088    0.0244


F =

   1.0e-04 *

    0.3091    0.3754


ans =

    1.9007    0.3112
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值