在MATLAB中绘制包含多个常数的ODE的dsolve解



基本目标: 求解&绘制一个ODE的解D2f=a1*f+a0

其中

a1=k*H*H/c;
a0=-H*H*tau0/c;
c=0.1;
k=1;
H=1;
tau0=1;

我使用dsolve命令来查找具有上述常量值的解决方案。

sol=dsolve('D2th=a1*th+a0','th(0)=0','th(1)=0','t');

我没有得到一个分配了常量值的解决方案,而是得到了如下的解决方案:

sol =

(exp(a1^(1/2)*t)*(a0 - a0*exp(-a1^(1/2))))/(a1*(exp(a1^(1/2)) - exp(-a1^(1/2)))) - (exp(-a1^(1/2)*t)*(a0 - a0*exp(a1^(1/2))))/(a1*(exp(a1^(1/2)) - exp(-a1^(1/2)))) - a0/a1

我需要MATLAB自动替换常数的值(a1a0等(,然后求解方程,使结果以完全简化的形式显示。

其次,我想将上述ODE的解决方案绘制如下:

t0=0;
tf=1;
N=100;
h=(tf-t0)/N;
t=t0+(0:N)'*h;
plot(t,sol)

我试过plot(t,sol(t))但没有什么好用的。

问题摘要:首先通过替换解中常数的值来求解ODE,然后绘制关于列向量t的解。

解决方案是一个符号表达式。你需要的是符号表达的替换和符号表达的绘图。在Matlab网站上快速搜索得到subsezplot作为合适的函数。我修复了代码,但请检查这两个函数在网络或Matlab中的工作情况。

H=1;
k=1;
c=0.1;
tau0=1;
a1=k*H*H/c;
a0=-H*H*tau0/c;
sol=dsolve('D2th=a1*th+a0','th(0)=0','th(1)=0','t');
sol2 = subs(sol, [sym('a0'),sym('a1')], [a0, a1]);
t0=0;
tf=1;
ezplot(sol2, [t0, tf]);

相关内容

  • 没有找到相关文章

最新更新