Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2012-11-06, 15:59   #1
旁听生
初级会员
 
注册日期: 2010-10-14
帖子: 6
声望力: 0
旁听生 正向着好的方向发展
默认 符号解三次方程有误?

问题如图,怎样正确计算出三个精确实根?
上传的图像
文件类型: jpg MATLAB01.jpg (15.8 KB, 7 次查看)
旁听生 当前离线   回复时引用此帖
旧 2012-11-06, 16:01   #2
旁听生
初级会员
 
注册日期: 2010-10-14
帖子: 6
声望力: 0
旁听生 正向着好的方向发展
默认 回复: 符号解三次方程有误?

主题帖图片显示太小,问题重发如下:

三次方程 x^3+3*x^2-1=0 的判别式小于零,有三个不相等的实数根。
用MATLAB符号运算(solve函数求解),却得到三个复数根。MATLAB大概是直接将系数代入求根公式求解,因为判别式<0,就不可避免的会对负数开平方,从而算得三个复根。

调用格式如下:
>> syms x
>> f1=sym('x^3+3*x^2-1=0');
>> x=solve(f1,x)

此帖于 2012-11-06 16:03 被 旁听生 编辑。 原因: 增加说明
旁听生 当前离线   回复时引用此帖
旧 2012-11-07, 19:12   #3
zsy312
普通会员
 
注册日期: 2008-08-17
年龄: 43
帖子: 77
声望力: 18
zsy312 正向着好的方向发展
默认 回复: 符号解三次方程有误?

代码:
syms x
s=solve(x^3+3*x-1,x);
s=real(s)+1i*imag(s)
ds=double(s)
输出:
代码:
s =
 
                                                                1/2*(4+4*5^(1/2))^(1/3)-2/(4+4*5^(1/2))^(1/3)
 -1/4*(4+4*5^(1/2))^(1/3)+1/(4+4*5^(1/2))^(1/3)+1/2*i*3^(1/2)*(1/2*(4+4*5^(1/2))^(1/3)+2/(4+4*5^(1/2))^(1/3))
 -1/4*(4+4*5^(1/2))^(1/3)+1/(4+4*5^(1/2))^(1/3)-1/2*i*3^(1/2)*(1/2*(4+4*5^(1/2))^(1/3)+2/(4+4*5^(1/2))^(1/3))
 
 

ds =

   0.3222          
  -0.1611 + 1.7544i
  -0.1611 - 1.7544i
zsy312 当前离线   回复时引用此帖
旧 2012-11-10, 22:01   #4
旁听生
初级会员
 
注册日期: 2010-10-14
帖子: 6
声望力: 0
旁听生 正向着好的方向发展
默认 回复: 符号解三次方程有误?

谢谢回复,但你计算的结果不对。
这个三次方程判别式小于零,有三个不相等的实数根,请参见我主题贴里的附件图片。
旁听生 当前离线   回复时引用此帖
旧 2012-11-10, 23:51   #5
zsy312
普通会员
 
注册日期: 2008-08-17
年龄: 43
帖子: 77
声望力: 18
zsy312 正向着好的方向发展
默认 回复: 符号解三次方程有误?

引用:
作者: 旁听生 查看帖子
谢谢回复,但你计算的结果不对。
这个三次方程判别式小于零,有三个不相等的实数根,请参见我主题贴里的附件图片。
我把x^2错输成x了。这个符号解如果引用maple函数就能得到化简后的结果:
代码:
maple('s:=evalc([solve(x^3+3*x^2-1,x)])')
maple('simplify(s)')
代码:
ans =

s := [1/2*8^(1/3)*cos(2/9*pi)+1/4*8^(2/3)*cos(2/9*pi)-1+i*(1/2*8^(1/3)*sin(2/9*pi)-1/4*8^(2/3)*sin(2/9*pi)), -1/4*8^(1/3)*cos(2/9*pi)-1/8*8^(2/3)*cos(2/9*pi)-1-1/2*3^(1/2)*(1/2*8^(1/3)*sin(2/9*pi)+1/4*8^(2/3)*sin(2/9*pi))+i*(-1/4*8^(1/3)*sin(2/9*pi)+1/8*8^(2/3)*sin(2/9*pi)+1/2*3^(1/2)*(1/2*8^(1/3)*cos(2/9*pi)-1/4*8^(2/3)*cos(2/9*pi))), -1/4*8^(1/3)*cos(2/9*pi)-1/8*8^(2/3)*cos(2/9*pi)-1+1/2*3^(1/2)*(1/2*8^(1/3)*sin(2/9*pi)+1/4*8^(2/3)*sin(2/9*pi))+i*(-1/4*8^(1/3)*sin(2/9*pi)+1/8*8^(2/3)*sin(2/9*pi)-1/2*3^(1/2)*(1/2*8^(1/3)*cos(2/9*pi)-1/4*8^(2/3)*cos(2/9*pi)))]


ans =

[2*cos(2/9*pi)-1, -cos(2/9*pi)-1-3^(1/2)*sin(2/9*pi), -cos(2/9*pi)-1+3^(1/2)*sin(2/9*pi)]
第二个ans还是没有虚部的。说明化简的还行。
zsy312 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 21:11


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.