Matlab解决矩阵微分方程建模(代码开源)

作者 : admin 本文共1042个字,预计阅读时间需要3分钟 发布时间: 2024-06-5 共1人阅读

#用matlab解决施密特正交规范化矩阵之后,我又想到矩阵的微分方程计算量真的太大了,来回转化让我头大,于是我尝试了一下用matlab建立模型来解决这类问题。

代码部分如下:注解还挺清晰的:

%%
    %解微分方程组
    %eg:x1t'=3*x1t+x2t
    %    x2t'=x1t+2*x2t+x3t
    %    x3t'=x2t+3*x3t
    
    
    %1.首先设出xt
    syms x1t;syms x2t; syms x3t;
    syms x1t_;syms x2t_; syms x3t_;
    xt1=[x1t;x2t;x3t];
    xt_1=[x1t_;x2t_;x3t_];%用_代表一撇(导数)
    %正常带入进去
   %我们有:xt_=[x1t_;x2t_;x3t_]
    %         =[3*x1t+x2t;x1t+2*x2t+x3t;x2t+3*x3t]
    %         =[3 1 0;1 2 1;0 1 3]*[x1t;x2t;x3t]
    %         =[3 1 0;1 2 1;0 1 3]*xt
    

    A=[3 1 0;1 2 1;0 1 3];

    %2.对A进行对角化

    %2.1求A的特征值
    syms t;
    %法1:因式分解
    f=t*A-eye(3);%是多少写多少
    fa=det(f);%求行列式
    fac=factor(fa);
   
    
    %法2:直接求解
    [v,D]=eig(A);%v为特征向量,D为特征值
    disp('特征值:');
    disp(diag(D)');
    disp('特征向量:');
    disp(v);

    %我们可知:p-1*A*p=D;
    %       有A=p*D*p-1

    %我们接着带入得:xt'=P*D*P-1*xt;

    %移项凑形式:    p-1*xt'=D*p-1*xt;

    %引入变量   Yt=p-1*xt=[y1t;y2t;y3t]
    %有 yt'=D*yt

    %可得:[y1t';y2t';y3t']=D*[y1t;y2t;y3t]=[y1t;3*y2t;4*y3t];
    syms y1t;
    syms y2t;
    syms y3t;
    syms y1t_;
    syms y2t_;
    syms y3t_;
    yt1=[y1t;y2t;y3t];
    y1t_1=[y1t_;y2t_;y3t_];
    %截图:


    %微积分知识求解微分方程
    %代入方程得到:
    [y1t,y2t,y3t]=dsolve('Dy1t=y1t','Dy2t=3*y2t','Dy3t=4*y3t','t');
    yt=[y1t;y2t;y3t];

    %又知:xt=p*yt


        xt=v*yt;
        disp(xt);
%即为我们得到的答案

我们带入例题验证一下结论:

Matlab解决矩阵微分方程建模(代码开源)插图

我们直接带入我们的代码:

得到:

Matlab解决矩阵微分方程建模(代码开源)插图(1)

Matlab解决矩阵微分方程建模(代码开源)插图(2)

结果是正确的,遇到类似题目可以直接带入模型进行求解,大大节约了我们的时间!

谢谢大家的支持啦~

本站无任何商业行为
个人在线分享 » Matlab解决矩阵微分方程建模(代码开源)
E-->