#用matlab解决施密特正交规范化矩阵之后,我又想到矩阵的微分方程计算量真的太大了,来回转化让我头大,于是我尝试了一下用matlab建立模型来解决这类问题。
代码部分如下:注解还挺清晰的:
%%%解微分方程组%eg:x1t'=3*x1t+x2t% x2t'=x1t+2*x2t+x3t% x3t'=x2t+3*x3t%1.首先设出xtsyms 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]*xtA=[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*ytxt=v*yt;disp(xt);
%即为我们得到的答案
我们带入例题验证一下结论:
我们直接带入我们的代码:
得到:
结果是正确的,遇到类似题目可以直接带入模型进行求解,大大节约了我们的时间!
谢谢大家的支持啦~