?? 逆broyden秩1迭代法.txt
字號:
逆Broyden秩1迭代法的M文件CBroydenIterate.m,如下:
function s=CBroydenIterate(x,eps)
%逆Broyden秩1迭代法求非線性方程組
%x為迭代初值,eps為允許誤差值
if nargin==1
eps=1.0e-6;
elseif nargin<1
error
return
end
x1=fx3(x);%第一次迭代
b1=inv(dfx3(x));
p=-b1*x1';
x3=x'+p;
d=fx3(x3');
q=(d-x1)';
b1=b1+(p-b1*q)*p'*b1*inv(p'*b1*q);
while(norm(p)>=eps) %循環迭代
%b1=b1+b3;
x1=fx3(x3');
p=-b1*x1';
x3=x3+p;
q=((fx3(x3'))-x1)';
b1=b1+(p-b1*q)*p'*b1*inv(p'*b1*q);
end
s=x3;
return
例: x1.^2-10x1+x2.^2+8=0
x1*x2.^2+x1-10x2+8=0
用MATLAB實現,編寫非線性方程組的M文件fx3.m如下所示:
function y=fx3(x)
y(1)=x(1)*x(1)-10*x(1)+x(2)*x(2)+8;
y(2)=x(1)*x(2)*x(2)+x(1)-10*x(2)+8;
y=[y(1) y(2)];
編寫非線性方程組導數的M文件dfx3.m
function y=dfx3(x)
y(1)=2*x(1)-10;
y(2)=2*x(2);
y(3)=x(2)*x(2)+1;
y(4)=2*x(1)*x(2)-10;
y=[y(1) y(2);y(3) y(4)];
CBroydenIterate([0 0])
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -