• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% % 函数功能:用逆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

例子:求解:

                     

运算结果:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi2010安装TWordApplication控件发布时间:2022-07-18
下一篇:
matlab基本粒子群算法实现(四)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap