Решение уравнения Пелла с непрерывной дробью

Мы знаем, что уравнение Пелла выражается как

который в случае D не является идеальным квадратом, может быть аппроксимирован продолжением дробного расширения D, например, давайте рассмотрим такое уравнение

квадратный корень из 61 может быть аппроксимирован следующим кодом Matlab

>> b=sqrt(61);
>> format rat
>> b

b =

    1523/195  

но у меня есть вопрос: как я могу назначить результат в двух отдельных переменных?

x=1523 
y=195

с этого сайта https://www.quora.com/What-is-the-fast-way-to-solve-the-fundamental-solution-of-Pell-equation

Я понял, что решение основано на числителе и денумераторе. Как я могу назначить дробные части для x и y во время кода в matlab? заранее спасибо

1 ответ

Хотя, по определению, иррациональное число никогда не может быть точно представлено как отношение целых чисел, оно может быть приблизительно представлено с помощью такого отношения в арифметике конечной точности. Это можно сделать через rat функция в различной степени приближения:

>> [n,d] = rat(sqrt(61),1E-4);  (n/d) - sqrt(61)
ans =
   9.5152e-05
>> [n,d] = rat(sqrt(61),1E-8);  (n/d) - sqrt(61)
ans =
  -4.4218e-09
>> [n,d] = rat(sqrt(61),1E-16);  (n/d) - sqrt(61)
ans =
     0

Отмечено, что финал 0 не указывает на истинное равенство терминов; просто равенство в пределах арифметики двойной точности.

Другие вопросы по тегам