找回密码
 注册
Simdroid-非首页
查看: 142|回复: 7

[符号计算] 请高手帮忙用mathematica解一类代数定积分问题

[复制链接]
发表于 2008-4-8 19:11:25 | 显示全部楼层 |阅读模式 来自 安徽合肥
举个简单的例子吧:
Integrate[1/a x,{x,c,d}];我不想要得到一大串讨论性结果,而是一完整的数学表达式,该如何操作,难道mathematica仅仅只能算数值上的积分吗?急等解答.谢了
发表于 2008-4-8 22:00:53 | 显示全部楼层 来自 美国
Simdroid开发平台
In[1]:= Integrate[1/a x, {x, c, d}]

Out[1]= -(c^2/(2 a)) + d^2/(2 a)   <---------------  You don't want this?
回复 不支持

使用道具 举报

 楼主| 发表于 2008-4-9 01:22:36 | 显示全部楼层 来自 安徽合肥
我举的例子太简单了,下午在验证一个很复杂的积分公式,总是出现一大串的表达讨论式子,我把其中一表达式写出来:
Integrate[1/(x^2+y^2+z^2)^(5/2),{x,a,b}],你再验证一下,是否是一大串讨论式子,一下午没有算出一个出来,其实积分出来的,真郁闷,难道是我的mathematica6.0出问题了?
附上我的算的结果,看看到底怎么了
In[3]:=Integrate[1/(x^2 + y^2 + z^2)^(5/2), {x, a, b}]
Out[3]:=If[(-Im Re[a] + Im[a] Re)/(Im[a] - Im) >=
   0 && (Re[(a - Sqrt[-y^2 - z^2])/(a - b)] <= 0 ||
    Re[(a - Sqrt[-y^2 - z^2])/(a - b)] >= 1 ||
    Im[(a - Sqrt[-y^2 - z^2])/(a - b)] !=
     0) && (Re[(a + Sqrt[-y^2 - z^2])/(a - b)] <= 0 ||
    Re[(a + Sqrt[-y^2 - z^2])/(a - b)] >= 1 ||
    Im[(a + Sqrt[-y^2 - z^2])/(a - b)] != 0), -(
   a (2 a^2 + 3 (y^2 + z^2)))/(
   3 (y^2 + z^2)^2 (a^2 + y^2 + z^2)^(3/2)) + (
  b (2 b^2 + 3 (y^2 + z^2)))/(
  3 (y^2 + z^2)^2 (b^2 + y^2 + z^2)^(3/2)),
Integrate[1/(x^2 + y^2 + z^2)^(5/2), {x, a, b},
  Assumptions -> ! ((-Im Re[a] + Im[a] Re)/(Im[a] - Im) >=
       0 && (Re[(a - Sqrt[-y^2 - z^2])/(a - b)] <= 0 ||
        Re[(a - Sqrt[-y^2 - z^2])/(a - b)] >= 1 ||
        Im[(a - Sqrt[-y^2 - z^2])/(a - b)] !=
         0) && (Re[(a + Sqrt[-y^2 - z^2])/(a - b)] <= 0 ||
        Re[(a + Sqrt[-y^2 - z^2])/(a - b)] >= 1 ||
        Im[(a + Sqrt[-y^2 - z^2])/(a - b)] != 0))]]
回复 不支持

使用道具 举报

发表于 2008-4-9 01:48:35 | 显示全部楼层 来自 美国
Mathematica gives full results because it considers all variables as complex variables.  If you are interested in real variables only, you may explicitly assume it.  For example:

In[1]:= Assuming[0 < a < b && {y, z} \[Element] Reals,  Integrate[1/(x^2 + y^2 + z^2)^(5/2), {x, a, b}]]

Out[1]= (-2 a^3 (b^2 + y^2 + z^2)^(3/2) - 3 a (y^2 + z^2) (b^2 + y^2 + z^2)^(3/2) + a^2 b Sqrt[a^2 + y^2 + z^2] (2 b^2 + 3 (y^2 + z^2)) + b (y^2 + z^2) Sqrt[a^2 + y^2 + z^2] (2 b^2 + 3 (y^2 + z^2)))   /
(3 (y^2 +  z^2)^2 ((a^2 + y^2 + z^2) (b^2 + y^2 + z^2))^(3/2))

[ 本帖最后由 pcqsl 于 2008-4-9 01:58 编辑 ]

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2008-4-9 02:07:31 | 显示全部楼层 来自 安徽合肥
太谢谢你了,无法用言语表达!学习mathematica一个多月了,却总是停留在肤浅的表面,找不到一本合适的书,加上市面上mathematica书非常少,且都是一般性指导!我是学工科的,mathematica会在我不久的论文阶段起着很关键性作用,请高手指导一翻,不甚感激!
回复 不支持

使用道具 举报

发表于 2008-4-10 21:36:37 | 显示全部楼层 来自 北京海淀
学习!!!
回复 不支持

使用道具 举报

 楼主| 发表于 2008-6-25 02:39:48 | 显示全部楼层 来自 安徽合肥
此类积分问题写入过多假设也挺麻烦的,有时考虑不周全的话还是一大串输出或是根本解不出,本人也试过!
昨天又回到解这类型的问题,偶发现一条指令很方便,彻底解决这一类型的问题,例子如下:
In[2]:=Integrate[(-2 q)/(\[Pi] (x^2 + (y - \[Xi])^2)^2) x^3, {\[Xi], a, b},
  GenerateConditions -> False] // Simplify

结果为:-(q (-(x (a - y))/(x^2 + (a - y)^2) + (x (b - y))/(x^2 + (b - y)^2) -
    ArcTan[(a - y)/x] + ArcTan[(b - y)/x]))/\[Pi]

本人再用"GenerateConditions -> False"解代定的代数方程,好象效果不是太好,也没有深入去摸索,希望共同探讨!
回复 不支持

使用道具 举报

发表于 2008-6-27 22:11:00 | 显示全部楼层 来自 美国
能先给假设最好,或者在没有假设的情况下看看结果,然后进行需要的假设。 可以这样看,
solu = Integrate[1/(x^2 + y^2)^(5/2), {x, a, b}]
然后Length[solu],就知道有几项,分析一下就好了。
Mathematica还没有完全自动,而且它的积分,你最好检查检查。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-27 19:52 , Processed in 0.067349 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表