Derdegraads vergelijkingen
Methode | Voorbeelden ][ DK & Maple | DK & Algebra
Oplossen van 3e-graads vergelijkingen
met gebruikmaking van het computerprogramma Maple V, release 4
januari 1998
Methode
We gaan uit van onderstaande 3e-graads vergelijking (met a ¹ 0).
> restart:
> V:= a*z^3+b*z^2+c*z+d = 0;
V := a z3 + b z2 + c z + d = 0
Hierin substitueren we z = x - b / 3a.
> V:=subs(z=x-b/(3*a), V);
V := a (x - 1/3 b/a)3 + b (x - 1/3 b/a)2 + c (x - 1/3 b/a) + d = 0
Na uitwerking en ordening naar z zien we dat in de vergelijking geen term met z^2 voorkomt.
> V:=collect(V,x);
/ b2 \ b3 c b V := a x3 + |- 1/3 ---- + c| x + 2/27 -- + d - 1/3 --- = 0 \ a / a2 a
We kunnen een 3e-graads vergelijking dus altijd herleiden tot een vergelijking zonder
de tweede term, waarbij dan de coëfficiënt van z3 gelijk is aan 1
(immers deling door a is mogelijk).
Daarom gaan we in hetgeen volgt uit van een dergelijke gereduceerde vergelijking.
> V:= x^3+p*x+q = 0;
V := x3 + p x + q = 0
Ook nu passen we een substitutie toe: x = y + z.
> V:=subs(x=y+z, V);
V := (y + z)3 + p (y + z) + q = 0
Ook deze vergelijking ordenen we, nu naar y en z:
> V:=sort( simplify(") );
V := y3 + 3 y2 z + 3 y z2 + z3 + y p + z p + q = 0
In deze vergelijking beschouwen we de volgende termen: 3y2z, 3yz2, py en pz.
> 3*y^2*z+3*y*z^2+p*y+p*z;
3 y2 z + 3 y z2 + y p + z p
En ontbonden:
> factor(");
(y + z) (3 y z + p)
Omdat de vergelijking V twee onbekenden (y en z) heeft, kunnen we een
willekeurige betrekking tussen y en z veronderstellen.
We kiezen die betrekking nu zo, dat de tweede factor van het zojuist gevonden product
gelijk is aan 0.
> op(")[2] = 0;
3 y z + p = 0
De vergelijking gaat door deze substitutie over in:
> V:=subs(p=-3*z*y, V);
V := y3 + z3 + q = 0
Voor y3z3 (het product van y3 en z3) kunnen we nu vinden
> prod:=(solve (3*z*y +p , z*y))^3;
prod := - 1/27 p3
En voor y3 + z3 (de som van y3 en z3) vinden we eenvoudig:
> som:=-q;
som := -q
De getallen x3 en y3 zijn nu, volgens de theorie der 2e-graads vergelijkingen oplossing van de volgende 2e-graads vergelijking.
> V2:=X^2 + q*X - 1/27*p^3 = 0;
V2 := X2 + q X - 1/27 p3 = 0
Deze vergelijking lossen we nu op naar x.
> sol_x:=[ solve(V2, X)];
sol_x := [- 1/2 q + 1/18 (81 q2 + 12 p3)1/2, - 1/2 q - 1/18 (81 q2 + 12 p3)1/2]
Ten einde beide oplossingen opnieuw te kunnen behandelen kennen we deze toe aan de variabelen Vy en Vz
> Vy:= y^3 = sol_x[1]; > Vz:= z^3 = sol_x[2];
Vy := y3 = - 1/2 q + 1/18 (81 q2 + 12 p3)1/2 Vz := z3 = - 1/2 q - 1/18 (81 q2 + 12 p3)1/2
Beide vergelijkingen hebben nu een eenvoudige vorm. Bekijken we alleen Vy.
We zien nu, dat voor m = - q / 2 + Ö(81q2
+ 12p3) / 18
y3 = m
Lossen we deze vergelijking op naar y, dan is
> Ym:=[ solve(y^3=m, y) ];
Ym := [m1/3, - 1/2 m1/3 + 1/2 I Ö3 m1/3, - 1/2 m1/3 - 1/2 I Ö3 m1/3]
> Ym:=map(factor, Ym);
Ym := [m1/3, 1/2 m1/3 (-1 + I Ö3), - 1/2 m1/3 (1 + I Ö3)]
We stellen nu
> r:=(-1+I*Ö3)/2;
r := - 1/2 + 1/2 I Ö3
> r^2=expand(r^2);
(- 1/2 + 1/2 I Ö3 )2 = - 1/2 - 1/2 I Ö3
Met y1 = m1/3 en r = r is de oplossing dus te schrijven als
> Y:=[ y1, rho*y1, rho*rho*y1 ];
Y := [y1, r y1, r2 y1]
Voor de wortels van de vergelijking x3 + px + q =
0 geldt verder
x = y + z en 3yz + p = 0.
De bij y behorende waarden van z, en vervolgens de daaruit voortvloeiende waarden
van x kunnen dus met deze vergelijkingen eenvoudig worden gevonden.
1e voorbeeld
We hebben de gereduceerde 3e-graads vergelijking V met p = -8 en q = 12.
> V:=x^3-8*x-12=0;
V := x3 - 8 x - 12 = 0
Hierboven vonden we
> m:=-q/2+sqrt(81*q^2+12*p^3)/18;
m := - 1/2 q + 1/18 Ö(81 q2 + 12 p3)
Substitutie van p en q hierin geeft
> m:=subs( {p=-8, q=-12}, m);
m := 6 + 1/18 Ö5520
En dus vinden we voor y1:
> y1:=m^(1/3); > evalf(y1);
y1 := (6 + 1/18 Ö5520)1/3 2.163559131
De vergelijking waaruit we de bij y behorende waarde van z kunnen vinden is
> p:=-8: > W:=3*y*z+p=0;
W := 3 y z - 8 = 0
met
> Wz:=subs( y=y1, W);
Wz := 3 (6 + 1/18 Ö5520)1/3 z - 8 = 0
> z1:=solve(Wz, z); > evalf(z1);
1 z1 := 8/3 ------------------- (6 + 1/18 Ö5520)1/3 1.232536993
Voor x1 vinden we dus
> x1:=evalf( y1 + z1 );
x1 := 3.396096124
En op dezelfde manier, maar nu korter, voor x2:
> y2:= r*y1: > Wz:= subs(y=y2, W): > z2:= solve(Wz, z): > x2:= evalf( y2 + z2);
x2 := -1.698048063 + .806288824 I
En voor x3:
> y3:= r*r*y1: > Wz:= subs(y=y3, W): > z3:= solve(Wz, z): > x3:= evalf( y3 + z3);
x3 := -1.698048063 - .806288824 I
Ter controle staat hieronder de oplossing van de vergelijking die direct gevonden kan worden met Maple (let daarbij op de toevoeging complex).
> Wx:=[ fsolve(V, x, complex) ];
Wx := [-1.698048062 - .8062888233 I, -1.698048062 + .8062888233 I, 3.396096125]
2e voorbeeld (verkort)
> p:=6: q:=-20: > V:=x^3+p*x+q=0; > W:=3*y*z+p=0;
V := x3 + 6 x - 20 = 0 W := 3 y z + 6 = 0
> m:=-q/2+sqrt(81*q^2+12*p^3)/18;
m := 10 + 6Ö3
> y1:= m^(1/3): > Wz:= subs(y=y1, W): > z1:= solve(Wz, z): > x1:= evalf( y1 + z1);
x1 := 2.000000000
> y2:= r*m^(1/3): > Wz:= subs(y=y2, W): > z2:= solve(Wz, z): > x2:= evalf( y2 + z2);
x2 := -1.000000000 + 3.000000001 I
> y3:= r*r*m^(1/3): > Wz:= subs(y=y3, W): # > z3:= solve(Wz, z): # > x3:= evalf( y3 + z3); #
x3 := -1.000000001 - 3.000000001 I
Merk op, dat we de de drie opdrachten aangegeven met # in één opdracht kunnen plaatsen.
> x3:= evalf( y3 + solve( subs(y=y3, W), z ));
x3 := -1.000000001 - 3.000000001 I
En weer direct als Maple opdracht:
> fsolve(V, x, complex);
-1. - 3. I, -1. + 3. I, 2.
[Einde voorbeelden]