逆Broyden秩1法求解二阶非线性方程组matlab自编源码

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% % 函数功能:用逆boyden秩1法求解2阶非线性方程
% % 作者:北疆紫云
% % 时间:2018年12月2日
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear all;
close all;
% % 输入方程组矩阵系数,例如:ax1^2+bx1+cx2^2+dx2+e=0;
% %                        Ax1^2+Bx1+Cx2^2+Dx2+E=0; 
% % 则系数矩阵为[a b c d e;A B C D E]
A= inputdlg({'输入方程组系数矩阵'},'输入',1,{'[1 0 0 -1 -1;1 -4 1 -1 3.25]'});
A= str2num(A{1});
% % 输入解得初始估值,例如:[0;0]
B= inputdlg({'输入方程组解的初值'},'输入',1,{'[0;0]'});
B= str2num(B{1});
% % 定义方程组的导数矩阵A
C=cell(2,2);
C{1,1}=[2*A(1,1);A(1,2)];
C{1,2}=[2*A(1,3);A(1,4)];
C{2,1}=[2*A(2,1);A(2,2)];
C{2,2}=[2*A(2,3);A(2,4)];
%%计算初始值A0

C0=zeros(2,2);
C0(1,1)=C{1,1}(1,1)*B(1,1)+C{1,1}(2,1);
C0(1,2)=C{1,2}(1,1)*B(2,1)+C{1,2}(2,1);
C0(2,1)=C{2,1}(1,1)*B(1,1)+C{2,1}(2,1);
C0(2,2)=C{2,2}(1,1)*B(2,1)+C{2,2}(2,1);
H0=inv(C0);

N=10;%%设置迭代次数
 X=zeros(2,N);%%定义每次迭代解的序列;
 H=cell(1,N);%%定义每次迭代方程导数矩阵逆的序列;
 F=zeros(1,N);%%定义方程的代入值
 r=cell(1,N);
 y=cell(1,N);
 AA=cell(1,N);%%定义方程导数矩阵
 F=cell(1,N);
%%开始迭代过程
for k=1:N
   
    if k==1
       X(:,1)= B(:,1)-H0*A(:,5);%%计算X1
       r0=X(:,1)-B(:,1);%%计算r0
       AA{1,1}=[C{1,1}(1,1)*X(1,1)+C{1,1}(2,1) C{1,2}(1,1)*X(2,1)+C{1,2}(2,1);
                C{2,1}(1,1)*X(1,1)+C{2,1}(2,1) C{2,2}(1,1)*X(2,1)+C{2,2}(2,1)];%%计算AA1
       y0=AA{1,1}*r0;%%计算y0
       H{1,1}=H0+((r0-H0*y0)*((r0)'*H0))/((r0)'*H0*y0);
    
    else

    F{1,k-1}=[A(1,1)*X(1,k-1)^2+A(1,2)*X(1,k-1)+A(1,3)*X(2,k-1)^2+A(1,4)*X(2,k-1)+A(1,5);
              A(2,1)*X(1,k-1)^2+A(2,2)*X(1,k-1)+A(2,3)*X(2,k-1)^2+A(2,4)*X(2,k-1)+A(2,5)]; 

    
    
    X(:,k)=X(:,k-1)- H{1,k-1}*F{1,k-1};
    r{1,k-1}= X(:,k)-X(:,1);
    AA{1,k}=[C{1,1}(1,1)*X(1,k)+C{1,1}(2,1) C{1,2}(1,1)*X(2,k)+C{1,2}(2,1);
                C{2,1}(1,1)*X(1,k)+C{2,1}(2,1) C{2,2}(1,1)*X(2,k)+C{2,2}(2,1)];%%计算AA1
    y{1,k-1}=AA{1,k}* r{1,k-1};%%计算y
    H{1,k}=H{1,k-1}+(r{1,k-1}-H{1,k-1}*y{1,k-1})*( (r{1,k-1})'*H{1,k-1})/((r{1,k-1})'*H{1,k-1}*y{1,k-1});
    end
end

例子:求解:x_{1}^{2}-{x_{2}}-1=0

                     x_{1}^{2}-4x_{1}+x_{2}^{2}-x_{1}+3.25=0

运算结果:

猜你喜欢

转载自blog.csdn.net/weixin_42683131/article/details/84720960