作业帮 > 综合 > 作业

matlab 中,定义的常量,在求解微分方程后为什么没有自动带入计算

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/12 23:28:56
matlab 中,定义的常量,在求解微分方程后为什么没有自动带入计算
如题.
如:
syms M G k;
M=2e+5;
G=2e+6;
k=2;
y=dsolve('Dy=M*vh/(G-k*vh)','y(0)=0','vh');
解出y是关于vh的表达式,式中有M,G,k,
比如得出了y =M/(2*k1) - M(k*vh^2 - G).
然后如何让他把M、G,k这几个常数带进去写成y关于vh的表达式呢?
如何算出y(vh=2)==?
这些是放在.m文件里的,所以我想在后面加句话就能实现,而不是把得到的结果复制过来,然后把字母改成常数.
在MATLAB的command window下,直接打出算出的式子M/(2*k1) - M(k*vh^2 - G),是可以显示出结果的.但是在.m文件中,怎样写才能使运行后就自动显示了呢?用solve会提示出错.
题问中“如何算出y(vh=2)==?”这句话写错了.抱歉.
应该是:如何算出y=200时,vh的值.
matlab 中,定义的常量,在求解微分方程后为什么没有自动带入计算
说明
1、不需要使用syms定义那几个符号量.
2、使用subs函数把数据代入表达式.
3、使用solve函数求解,并使用double函数转换为浮点数.
4、给出绘图结果,可以直观地验证解的正确性.
 
参考代码
M=2e+5;
G=2e+6;
k=2;
y=dsolve('Dy=M*vh/(G-k*vh)','y(0)=0','vh');

% 得到y关于vh的表达式
y=subs(y)
% 求出y=200对应的vh
vh = solve(y-200)
% 上面求出的是解析解,表达式比较复杂,转为浮点数
vh = double(vh)

% 绘图
ezplot(y,[-100 100])
hold on
plot(vh,200,'ro')