решение на уравнение на Пел с непрекъсната дроб

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

въведете описание на изображението тук

което в случай на 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