Re: [问题] 方程式微分问题

楼主: jurian0101 (Hysterisis)   2013-04-25 11:23:30
※ 引述《huarache (~絮~)》之铭言:
: http://ppt.cc/CSIt
: 小弟 mathematica 新手,只会简单的把公式微分
: 不知道 mathematica 可否像书上的公式运算呢?
: 小弟想利用书上的公式画成图
: 还烦请版上的高手替小弟解惑
: 谢谢!
引用说明文件
tutorial/TotalDerivatives
里的写法
主要用到全微分函数Dt[],见说明文件
底下代码是顺序式的,每当我写一个 "=>"
就代表把之前那一部分代码贴到MMA并执行看输出
(*code*)
eqn1= (r2 Cos[s2] + r3 Cos[s3] - r4 Cos[s4] - r1 == 0)
eqn2= (r2 Sin[s2] + r3 Sin[s3] - r4 Sin[s4] == 0)
=>
(*设r1,r2,r3,r4对t为常数*)
r1/:Dt[r1,t]=0
r2/:Dt[r2,t]=0
r3/:Dt[r3,t]=0
r4/:Dt[r4,t]=0
(*微分*)
eqns= {Dt[eqn1, t], Dt[eqn2, t]}
=>
(*消掉Dt[s4, t], Eliminate一般会减少方程式数量,eqns是两条联立,相消后
只输只出一条*)
eqn3= Eliminate[eqns, Dt[s4, t]]
=>
(*解Dt[s3,t]*)
Solve[eqn3, Dt[s3, t]]
=>
(*但出来的结果需要一番调理才会好看,因此改成*)
(Solve[eqn3, Dt[s3, t]][[1, 1]] // FullSimplify) /. Rule -> Equal
=>
(*同理,快转把上面步骤黏一起,改成消Dt[s3,t],解Dt[s4,t]*)
(Solve[Eliminate[eqns, Dt[s3, t]], Dt[s4, t]][[1, 1]]
// FullSimplify) /. Rule -> Equal
感谢FullSimplify的自动和角,不过表达成Csc(s3-s4)很奇怪,可以手动改
另一种写法是用偏微分D[ ,t] 代替 全微分Dt[ ,t],差别只在于
偏微分你得把方程式写成
eqn1 = (r2 Cos[s2[t]] + r3 Cos[s3[t]] - r4 Cos[s4[t]] - r1 == 0);
eqn2 = (r2 Sin[s2[t]] + r3 Sin[s3[t]] - r4 Sin[s4[t]] == 0);
然后
eqns = {D[eqn1, t], D[eqn2, t]};
重点在需要明确把是t的函数者通通以s2[t]这样写出来,其余未明确表示与t有关的东西
在D[,t]里面会一律视为常数微掉。
在Dt[,t]刚好相反,它假定所有东西都是t的函数,因此你才需要定义 r1/:Dt[r1,t]=0
等四行,标明说r1~r4对t是常函数,请MMA微掉他(看到就令为0)。
两个写法各有优劣,我觉得变量一多用 D[] 写起来会多一层括号很难读,
但其实Dt[]也没多好因为它会让算式比较长,偶尔转换成TraditionalForm (见说明)
之后会变得简洁一点。
作者: huarache (~çµ®~)   2013-04-25 13:24:00
谢谢你详尽的解说,我大概了解了,谢谢你!

Links booklink

Contact Us: admin [ a t ] ucptt.com