常微分方程,从象征性的数字代码
在最近一篇文章中求解常微分方程杰森,读者想知道如果有一个方法手动代数步骤使用符号数学工具箱。目前不是一个罐头的方法结果是一个MATLAB程序,但你可以这样做MuPAD符号数学工具箱,象征性的引擎。现在,我想向你们展示如何生成ODE的解决方案的情况下MuPAD发现封闭的解。
内容
定义符号变量
让我们首先定义变量需要描述一个简单谐振子方程,使用相同的符号,上面的帖子链接。
信谊xt米k
解决系统
使用函数dsolve,我们找到了解决方案。
索尔= dsolve (' m * D2x + k * x (t)”,“x (0) = 0”,“Dx (0) = 1”,“t”);
重新格式化显示的解决方案适合发布。
csol = char (sol);disp (csol (1:45) disp (csol(46:结束)
(m * exp ((t * (- k * m) ^ (1/2)) / m)) / (2 * (- k * m) ^ (1/2)) - m / (2 * exp ((t * (- k * m) ^ (1/2)) / m) * (- k * m) ^ (1/2))
将解决方案从MuPAD
使用matlabFunction我下生成一个函数处理,MATLAB版本的解决方案。
f = matlabFunction (sol);
再一次,重新格式化表达式显示更多的好文章。
cf = func2str (f);disp (cf(一)disp ([' 'cf (66)):)
@ (k、m t) m。* exp (t。*√(m - k . *)) / m)。* 1.0. /√(m - k . *) * (1.0. / 2.0) - m。* exp (- (t。* sqrt (m - k . *)) / m)。* 1.0. /√(m - k . *) * (1.0. / 2.0)
为质量和弹簧常数设置值
我使用相同的值k和米我引用的文章中使用。
k = 10;m = 1;
我现在创建一个速记函数值k和米所以我可以画出结果。
fnew = @ (t) f (k、m t);
情节的解决方案
t = 0:0.01:10;情节(t, fnew (t))
好,如果……
这是好如果MuPAD能找到微分方程的解析解。目前,没有一种方法来自动生成方程组的MATLAB程序定义ODE适合解决数值。MuPAD本身解决数值赋这可能是合适的。你有跨符号和数字世界的问题吗?你如何处理它们?请让我知道在这里。
评论
要发表评论,请点击此处登录到您的MathWorks帐户或创建一个新帐户。