用Broyden法解非线性方程组

时间:2026-01-21

四、(上机题)分别用Newton法和Broyden法求解下面非线性方程组

3x cos(xx) 0.5 0123

22 x1 81(x2 0.1) sinx3 1.06 0

1 e x1x2 20x3 (10 3) 03

(要求:用Matlab编程,并附上源代码及迭代五次的结果,初值可取(0.1,0.1, 0.1))

Broyden法:

function[t]=mybroyden(x0)

syms x y z;

x0 = transpose(x0);

%===============================

f1=3*x-cos(y*z)-0.5;

f2=x^2-81*(y+0.1)^2+sin(z)+1.06; % 定义要求解的函数

f3=exp(-x*y)+20*z+1/3*(10*pi-3);

F=[f1;f2;f3];

%===============================

Fx = subs(F,{x,y,z},x0);

dF = Jacobian(F); % 求雅克比矩阵

dFx = subs(dF,{x,y,z},x0);

A=inv(dFx);

k=0;

%===============================

%Broyden算法

while norm(Fx)>1e-10

x1=x0-A*Fx;

k=k+1;

if k==5

disp('迭代五次的结果为:') ; x1

elseif k>=100

disp('迭代次数过多,不收敛!'); return;

end

Fx1 = subs(F,{x,y,z},x1);

s=x1-x0;

r=Fx1-Fx;

A=A-((A*r-s)*s'*A)/(s'*A*r);

x0=x1;

Fx=Fx1;

end

%==============================

disp('非线性方程组的解为:')

x0 % 输出最后的解

输出结果为:

>> x0=[0.1,0.1,-0.1]; >> mybroyden(x0) 迭代五次的结果为: x1 = 0.5000 0.0000 -0.5236 非线性方程组的解为: x0 = 0.5000 0.0000 -0.5236

用Broyden法解非线性方程组.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:4.9 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:19元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219