一道难题,回答对的送分。

jiangyang6 2002-07-27 09:01:08
题目如下:
一个多项式,当它的值为0时,如何求它的解。
比如:
a*x^3+b*x^2+c*x+d=0;
如何求x1,x2,x3的值
...全文
46 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoukun666 2002-07-30
up
回复
dcyu 2002-07-30
用Mathematica 4.1软件求解:
Reduce[a*x^3+b*x^2+c*x+d==0,x]

结果:
(i) 当 a!=0 时
令 t=(-2*b^3+9*a*b*c-27*a^2*d+sqrt(4*(-b^2+3*a*c)^3+(-2*b^3+9*a*b*c-27*a^2*d)^2))^(1/3);
x1=-b/(3*a)-2^(1/3)*(-b^2+3*a*c)/3/a/t + t/3/2^(1/3)/a (实数解)
x2=-b/(3*a)+(1+i*sqrt(3))*(-b^2+3*a*c)/3/a/t/2^(1/3) - (1-i*sqrt(3))*t/6/a/2^(1/3)
x3=-b/(3*a)+(1-i*sqrt(3))*(-b^2+3*a*c)/3/a/t/2^(1/3) - (1+i*sqrt(3))*t/6/a/2^(1/3)
(ii) 当 a==0,b!=0 时
x1=(-c-sqrt(c^2-4*b*d))/2/b
x2=(-c+sqrt(c^2-4*b*d))/2/b
(iii)当 a==0,b==0,c!=0 时
x=-d/c
(iv)当 a==0,b==0,c==0 时
无解(d!=0)或有无穷解(d==0)
回复
Bonny_lj 2002-07-29
栈包括顺序栈和链栈,顺序栈是通过数组来进行存取,而链栈就是通过链表来进行存取,两者都是先进后出的,这就是两者的联系.
回复
mmmcd 2002-07-28
这不就是解三次方程的比内公式吗?
回复
c_and_pascal 2002-07-28
经典解法汇编:
(1) a*x = b
x = b / a
(2) a*x*x + b*x + c = 0
x = (-b+/-sqrt(b^2-4*a*c))/(2*a)
(3)
(a)
x*x*x - 1 = 0
x1 = 1, x2 = w = (-1 + i*sqrt(3)), x3 = w*w = (-1 -i*sqrt(3))/2

(b)
a*x*x*x + b*x*x + c*x + d = 0
x*x*x + p*x + q = 0 (卡尔丹公式)
x1 = (-q/2 + ((q/2)^2 + (p/3)^3)^(1/2))^(1/3)
+ (-q/2 - ((q/2)^2 + (p/3)^3)^(1/2))^(1/3)
x2 = w*(-q/2 + ((q/2)^2 + (p/3)^3)^(1/2))^(1/3)
+ w*w*(-q/2 - ((q/2)^2 + (p/3)^3)^(1/2))^(1/3)
x1 = w*w*(-q/2 + ((q/2)^2 + (p/3)^3)^(1/2))^(1/3)
+ w*(-q/2 - ((q/2)^2 + (p/3)^3)^(1/2))^(1/3)

(c)
a*x*x*x + b*x*x + c*x + d = 0
设 x = y - b/(3*a)
转化成 y*y*y + p*y + q = 0
解法同(b)

(4)
(a) a*x*x*x*x + c*x*x + e = 0
y = x*x : a*y*y + c*y + e = 0

(b) a*x*x*x*x = b&x&x&x + c*x*x + b*x + a = 0
y= x + 1/x :
x1,2,3,4 = (y +- sqrt(y*y - 4)) / 2
y = (-b +-sqrt(b*b-4*a*c+8*a*a))/(2*a)

(c) a=1 : x^4 + b*x^3 + c*x^2 + d*x + e =0
x^2 + (b + sqrt(8*y + b^2 - 4*c)*x/2 + (y+(b*y-d)/(sqrt(8*y + b^2 - 4*c)) = 0
y是:8*y^3 - 4*c*y^2 + (2*b*d-8*e)*y + e*(4*c-b^2) - d^2 = 0
的任一实根

(5) 阿贝尔定理
五次级更高次代数方程没有一般性的代数解法(即由方程的系数经过有限次的四则运算和开方运算求根的方法)

(6) 整系数求有理解
如果代数方程能分解成(a*x*x*... + b) * ( c*x*x ... + d) * ... = 0 的形式,可以断定该方程的常数项必然可以分解成 b*d*...的形式,最高项系数可以分解成 a*c*...的形式.
回复
Renny 2002-07-28
我来给你做一个演示怎么求解一元三次方程吧:

x^3-6*x-6=0
解:因为(a+b)^3-3*a*b(a+b)-(a^3+b^3)=0
所以 假设 x=a+b,则
x^3-3*a*b*x-(a^3+b^3)=0
3*a*b=6,a^3+b^3=6
27*a^3*b*3=216, a^3+b^3=6
a^3*b^3=8,a^3+b^3=6
我们用一元二次方程得到:
a^3=4,b^3=2 因为是对称的,所以我们不用考虑
a^3=2,b^3=4
由此我们得到,a=4^(1/3),b=2^(1/3)
所以我们得到了上面方程的其中一个解:
x=4^(1/3)+2^(1/3)

因为上面的方法是通用的,所以你就可以推倒出一元三次方程的求根公式了。
回复
Lawrence444 2002-07-27
但是好像五阶以上的就不能求了吧。我记得在什么地方看过的好像。
回复
Lawrence444 2002-07-27
先设多项式可以分解为
(x-x1)(x-x2)(x-x3)...(x-xn)=0
即多项式的解为x1,x2,x3,...,xn

然后再把这个多项式乘起来,得到一个式子
x^n+y1*x^(n-1)+y2*x^(n-2)+...=0
其中y1,y2,...是x1,x2,x3,...,xn的函数
将你的原式除以a,得到
x^n+(b/a)*x^(n-1)+(c/a)*x^(n-2)+...=0

然后解
y1=b/a
y2=c/a
...
的方程组
就可以求出a,b,c等等的值了
回复
发动态
发帖子
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
社区公告
暂无公告