QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4908|回复: 6
打印 上一主题 下一主题

一个比较简单的三次方程怎么mathematica算出来3个复根呢?

[复制链接]
字体大小: 正常 放大
ntf198602 实名认证       

1

主题

3

听众

21

积分

升级  16.84%

  • TA的每日心情
    难过
    2014-1-13 16:40
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    跳转到指定楼层
    1#
    发表于 2012-12-17 16:25 |只看该作者 |正序浏览
    |招呼Ta 关注Ta
    如题,我的问题如下:
    * @6 o' C7 s; s0 r如果不赋值的话,
    1. Clear["`*"];
      + r* |! _0 T3 ?
    2. Solve[4 (a + b (c - 2 w)) (a + b (c + 4 c r - 2 (w + 2 r w))) +
      \" C- M! Y7 W- M3 }
    3.    4 b (-a + b c) r (c - w)^2 (a +
      \" O% \: g/ ^3 E5 m, V
    4.       b (c + 2 c r - 2 (1 + r) w)) \[Rho]r == 0, w]
    复制代码
    这样会得到数值结果,看起来应该是1个实数根和两个复根,这个我比较满意,而且我也希望是这个结果。# q, ~, U/ h- }0 y
    然而,我赋值进去算过之后发现:
    1. Clear["`*"];
      ( K1 W$ K% I0 K  n
    2. a = 10; b = 2; c = 3; r = 1; \[Rho]r = 1.5;
      2 j. W( A7 [4 @0 O
    3. Solve[4 (a + b (c - 2 w)) (a + b (c + 4 c r - 2 (w + 2 r w))) + \" M7 m3 r- d& Q
    4.    4 b (-a + b c) r (c - w)^2 (a + \" w' A. Z, x# {# J( @1 \
    5.       b (c + 2 c r - 2 (1 + r) w)) \[Rho]r == 0, w]
    复制代码
    其结果如下:3 ^, I% ^+ R! b
    {{w -> 2.0793}, {w -> 3.28456}, {w -> 3.63614}}' V  v) z+ @; |2 q& n% T) ]2 M
    可以看到,分明是同样的一个方程,为什么赋值与不赋值得到的复根数量不一样呢?为什么赋值之后是3个实数根。太奇怪了,应该也是2个复根和一个实数根才对啊?
    # b5 R6 s" ]' Z! Y8 i# W8 O; Z还有,我将不赋值的情况所求得的那三个根分别赋值计算发现,这3个又都是复根了,连那个看上去是实数根(看上去是实数根是因为我在里面没有发现复根的标志i)的根都变成了复根了。真的太奇怪了。求高人解释为什么会出现这种情况呢?到底最后有几个复根和几个实数根啊?难道mathematica算的结果不可以令人相信吗?大家只要代入算一下就马上又结果,很快的。
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    0

    主题

    5

    听众

    96

    积分

    升级  95.79%

  • TA的每日心情
    慵懒
    2013-6-25 17:56
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    自我介绍
    我是学物理的
    另外,mathematica里面,其实不只mathematica,整个计算机里面,计算机里面储存的0其实都很有可能并不是严格的0,而是一个很小的数,比如10的-17次方什么的,反过来也有可能把一个很小的数,比如10的-16次方什么的当做零来处理,总之呢,就是有个精度问题的,计算机是无法做到理想中的百分之百精确的。你用mathematica解出来的那个解析符号解是个很精确的表达式,这点是毋庸置疑的,如果你把那个几个参数代进去如果你肯手动计算应该是可以把虚数部分消掉的,但是计算机算的话,就有可能因为精度问题而把本来是零的虚部以很小的一个数给保留下来。相信你代进那个解析解去的话,也会发现,虚部是个非常非常非常非常小的数,而实部就是你想要的结果。
    2 o9 p6 @4 p  E你如果是解之前就把各项系数都代进去得到一个各项系数都确定的方程,系统会自行判断得到的解是虚数还是实数什么的,就会算出一个数值结果的。
    回复

    使用道具 举报

    0

    主题

    5

    听众

    96

    积分

    升级  95.79%

  • TA的每日心情
    慵懒
    2013-6-25 17:56
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    自我介绍
    我是学物理的
    mathematica默认所有的变量都是复数,所以算出表达式里有i不一定根就是复的,因为如果考虑到你给的a,b,c什么的都有可能含有虚数的成分的话,会把i抵消成一个实根也不一定的。不知道这么说你明不明白?
    回复

    使用道具 举报

    ntf198602 实名认证       

    1

    主题

    3

    听众

    21

    积分

    升级  16.84%

  • TA的每日心情
    难过
    2014-1-13 16:40
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    回复

    使用道具 举报

    ntf198602 实名认证       

    1

    主题

    3

    听众

    21

    积分

    升级  16.84%

  • TA的每日心情
    难过
    2014-1-13 16:40
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    zhb 发表于 2012-12-17 19:46
    * ?5 M! |- O- ]. }% S" L% W5 z' u表示看的不是恒明白。。

    , M" u- m4 [% T/ l- ^问题应该比较清楚了吧。请复制“不赋值”的那4行代码,然后在mathematica里面计算一下,会得到3个解,其中第一个解显示为实数根(原因是表达式里面没有虚部),而后面两个是复根(因为它们都有虚部)。6 p8 V( q! k7 W( a
    然后,复制“赋值”的情况,那就是另外5行代码,算一下,结果为3个实数根,我在问题里面都写出来了。同样的方程,只不过一个赋值了一个没有赋值,是符号计算,为什么实数根和复根的个数在两种情况下不一样呢。复根不可能变成实数根的,相反也是一样。这里可能的原因,我猜可能是因为误差的原因。但是,到底这个方程有几个实数根和几个复根呢。不可能说,在这种赋值下有2个复根,在另外情况下有3个复根的。
    回复

    使用道具 举报

    zhb        

    24

    主题

    7

    听众

    887

    积分

    升级  71.75%

  • TA的每日心情
    郁闷
    2014-10-17 15:24
  • 签到天数: 246 天

    [LV.8]以坛为家I

    自我介绍
    回复

    使用道具 举报

    ntf198602 实名认证       

    1

    主题

    3

    听众

    21

    积分

    升级  16.84%

  • TA的每日心情
    难过
    2014-1-13 16:40
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-8-18 23:19 , Processed in 0.513909 second(s), 82 queries .

    回顶部