dh-Materialien
Einführung in Maple    
Anwendungen
 

Lösungen einer Pell’schen Gleichung

> restart; with(numtheory):

Wahl einer beliebigen nicht-quadratischen natürlichen Zahl:

> d:= 57;

d:= 57

Die zu d gehörende Pell’sche Gleichung x2d·y2 = 1:

> pell:= x^2 - d*y^2 = 1:
  pell;

x^2 - 57*y^2 = 1

Berechnen von cf, dem Kettenbruch von sqrt(d):

> cf:= cfrac(sqrt(d), 'periodic', 'quotients'):
  sqrt(d) = cf; ;
  len:= nops(op(cf)[2]): # Periodenlänge
  cfrac(sqrt(d), 2*len + 1);

sqrt(57) = [[7],[1,1,4,1,1,14]]

Kettenbruch von sqrt(57)
 

Die Näherungsbrüche für sqrt(d) bis zur 15. Ordnung:

> konv:= NULL:
  for i from 1 to 15 do
    konv:= konv, nthconver(cf, i);
  od:
  konv;

8, 15/2, 68/9, 83/11, 151/20, ...

Der n1-te Näherungsbruch ist der erste, der eine nicht-triviale Lösung für die Gleichung pell liefert:

> if is(len, even) then
    n[1]:= len - 1;
    l:= len:
  fi;
  if is(len, odd) then
    n[1]:= 2*len - 1;
    l:= 2*len:
  fi;

n[1]:= 5; l:= 6

Berechnung der n1-ten Konvergenten des Kettenbruchs von sqrt(d):

> nthconver(cf, n[1]);
  x:= nthnumer(cf, n[1]);
  y:= nthdenom(cf, n[1]);
  x^2 - d*y^2;

151/20

Auflistung weiterer Lösungen der Gleichung x2 − d·y2 = 1:

> for i from 0 to 5 do
    x:= nthnumer(cf, n[1]+i*l):
    y:= nthdenom(cf, n[1]+i*l):
    lsg[i]:= [x, y]:
  od:
  for i from 0 to 5 do
    lsg[i];
    lsg[i][1]^2 - d*lsg[i][2]^2;
  od;

[151, 20], [45601, 6040], ...


 Home   Back   Top