求Matlab画常微分方程解

2025-03-07 16:39:53
推荐回答(1个)
回答1:

你好!我做了一个程序,希望你喜欢!

主程序:

clc
A=[0,1,0,0;0,0,1,0;0,0,0,1;-3,10,-12,6];%特征矩阵
[v,d]=eig(A);%d为特征值eigenvalue
p=[-0.5,1,1,1];%p是对应的系数C1,C2,C3,C4
x=linspace(-1,1,100);
b=zeros(4,1);
for i=1:4
b(i)=real(d(i,i));
end
[C,D,E]=searchs(b);
m=0;y=0;
for i=1:E
for j=1:D(i)
    m=m+1;
y=y+p(m)*x.^(j-1).*exp(C(i)*x);
end
end
plot(x,y,'r.')
xlabel('x','fontsize',20)
ylabel('y','fontsize',20)
title('其中一个解:C1=-0.5,C2=1,C3=1,C4=1','color','b')

函数程序:

function [XE,NUM,N]=searchs(x)%
M=length(x);
k=ones(size(x));
xe=zeros(size(x));
xe(1:M)=inf;
m=0;eps=1e-3;
for i=1:M
   t=0;
   for j=1:M    
       if(abs(x(i)-xe(j))       t=t+1;
       end
   end
    if(t<=0)
        m=m+1;
        xe(m)=x(i);
        for J=i+1:M
           if(abs(x(J)-x(i))           k(m)=k(m)+1;
           end
        end
    end
N=m;
end
XE=xe(1:N);
NUM=k(1:N);
end