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]

begin pagina
[derdegra.htm] laatste wijziging op: 05-02-2006