早教吧 育儿知识 作业答案 考试题库 百科 知识分享

matlab在求解微分方程时遇到的问题我用的是R2008a的版本,在输入symsy;y=dsolve('(Dy)^2+y^2=1','y(0)=0')后得到的结果是ans=-1/2*RootOf(Z^2+1)*(-1+exp(RootOf(Z^2+1)*t)^2)*RootOf(Z^2-1)/exp(RootOf(Z^2+1)*t)理论上来说

题目详情
matlab在求解微分方程时遇到的问题
我用的是R2008a的版本,在输入syms y;y=dsolve('(Dy)^2+y^2=1','y(0)=0')后得到的结果是
ans =

-1/2*RootOf(_Z^2+1)*(-1+exp(RootOf(_Z^2+1)*t)^2)*RootOf(_Z^2-1)/exp(RootOf(_Z^2+1)*t)
理论上来说解应该是-sin(t) sin(t)这是怎么回事啊?
希望高手就这个现象解释一下,不要说换个解法之类的解决办法,我就是想知道这是怎么回事?谢谢!献上10分聊表心意!
▼优质解答
答案和解析
我的也是2008a,遇到同样的问题.
Root0f其实是根本无法解,只好用这种形式来表式一种结果,是Maple中的叫法.
>> y=dsolve('(Dy)^2+y^2=1','y(0)=0')
y =
-1/2*RootOf(_Z^2-1)*(-1+exp(RootOf(_Z^2+1)*t)^2)*RootOf(_Z^2+1)/exp(RootOf(_Z^2+1)*t)
>> y=dsolve('(Dy)^2+y^2=1')
y =
-1
sin(t-C1)
1
-sin(t-C1)
看到没有?y有4个根,结果无法把这四个根归到一起,就用Root0f来表达.你可以再用:
R=diif(y)^2+y^2验证.
>>simplify(R)
ans=
1