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

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

введите здесь описание изображения

который в случае 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? заранее спасибо


person dato datuashvili    schedule 03.04.2017    source источник


Ответы (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 не указывает на истинное равенство условий; просто равенство в пределах арифметики с двойной точностью.

person TroyHaskin    schedule 03.04.2017
comment
так просто, большое спасибо, я понял, а что если у нас будет вот так 2+3*sqrt(2)? как я могу получить доступ к 2 и 3? - person dato datuashvili; 03.04.2017