首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Simplify解决方案会产生实际解决方案,而使用FullSimplify解决方案会产生复杂的解决方案吗?

使用Simplify解决方案会产生实际解决方案,而使用FullSimplify解决方案会产生复杂的解决方案吗?
EN

Stack Overflow用户
提问于 2012-09-04 14:27:47
回答 2查看 832关注 0票数 0

我在mathematica 8中的DSolve[]命令有一个问题。解下面的四阶微分方程会得到一个复杂的解,尽管它应该是一个实数解。方程式是:

代码语言:javascript
复制
y''''[x] + a y[x] == 0

手工求解这个方程会得到一个只有实数部分的解。所有常量和边界条件也是实数。

我手把手得到的解决方案是:

代码语言:javascript
复制
y1[x_] = (C[5] E^(Power[a, (4)^-1]/Power[2, (2)^-1] x) + 
  C[6] E^(-(Power[a, (4)^-1]/Power[2, (2)^-1]) x)) Cos[
 Power[a, (4)^-1]/Power[2, (2)^-1]
   x] + (C[7] E^(Power[a, (4)^-1]/Power[2, (2)^-1] x) + 
  C[8] E^(-(Power[a, (4)^-1]/Power[2, (2)^-1]) x)) Sin[
 Power[a, (4)^-1]/Power[2, (2)^-1] x];

现在我必须求解常量C5...C8。这也出现了类似的问题。我使用带有边界条件的Solve[]命令

代码语言:javascript
复制
Solve[{y1''[-c] == ic0, y1''[c] == ic0 , y1'''[-c] == ic1 , 
y1'''[c] == - ic1 }, {C[5], C[6], C[7], C[8]} ];

如果使用//Simplify,则常量C5...C8为实数;如果使用//FullSimplify,则常量为complex。

你知道原因是什么吗?包含我的计算的笔记本可以在以下位置下载:http://dl.dropbox.com/u/4920002/DGL_4th_Order_with_own_solution.nb

在进一步的工作中,我必须使用DSolve[],我想在这里了解这个问题。

谢谢,

安德烈亚斯

EN

回答 2

Stack Overflow用户

发布于 2012-09-04 16:11:05

我认为你的一些陈述取决于细节。例如,如果选择a<0,则某些参数C[]可以是复数:

代码语言:javascript
复制
parS = Solve[{y1''[-c] == ic0, y1''[c] == ic0, y1'''[-c] == ic1, 
    y1'''[c] == -ic1}, {C[5], C[6], C[7], C[8]}] // Simplify;
parFS = Solve[{y1''[-c] == ic0, y1''[c] == ic0, y1'''[-c] == ic1, 
    y1'''[c] == -ic1}, {C[5], C[6], C[7], C[8]}] // FullSimplify

parS /. {a -> -2, c -> 10, ic0 -> 1, ic1 -> -1} // N
parFS /. {a -> -2, c -> 10, ic0 -> 1, ic1 -> -1} // N

(* {{C[5] -> -0.35876 - 2.498*10^-15 I,  C[6] -> -0.35876 - 2.498*10^-15 I, 
     C[7] -> 2.27596*10^-15 - 0.358762 I, C[8] -> -2.27596*10^-15 + 0.358762 I}}

   {{C[5] -> -0.35876 + 5.10703*10^-15 I, C[6] -> -0.35876 + 5.10703*10^-15 I, 
     C[7] -> 2.35922*10^-15 - 0.358762 I, C[8] -> -2.19269*10^-15 + 0.358762 I}} *)

除了这一点,你可以在一行中得到问题的解决方案,事实上,它看起来是一个真实的函数(除了数字):

代码语言:javascript
复制
sol[a_, ic0_, ic1_, c_, x_] = y[x] /. DSolve[{y''''[x] + a y[x] == 0, y''[-c] == ic0, 
     y''[c] == ic0, y'''[-c] == ic1, y'''[c] == -ic1}, y[x], x][[1]] ;

Plot[Im[sol[-2.0, 1.0, -1.0, 10., x]], {x, -10., 10.}]
Plot[Re[sol[-2.0, 1.0, -1.0, 10., x]], {x, -10., 10.}]

票数 1
EN

Stack Overflow用户

发布于 2012-09-05 22:09:29

因为你在Mathematica.SE上交叉发布了这个问题,我在那里给出了答案。问题的症结在于,即使a的值是实数和正值,四阶微分方程的一般解也是复。句号。如果你碰巧只对真正的解决方案感兴趣,it is possible to extract them

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12257883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档