基本目标: 解决& 绘制 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自动替换常量值( a1 , a0 等),然后求解方程式,以便结果显示完整简化形式。
其次下, 我想绘制上述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 绘制解决方案。
答案 0 :(得分:0)
解决方案是一种象征性的表达方式。你需要的是符号表达式的替换和符号表达式的绘制。在Matlab网站上快速搜索,可以subs
和ezplot
作为合适的函数。我修复了代码,但请在网上或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]);