rat

Рациональное приближение дроби

Описание

пример

R = rat(X) возвращает рациональное приближение дроби X в пределах допуска по умолчанию, 1e-6*norm(X(:),1). Приближение является символьным массивом, содержащим усеченное непрерывное дробное разложение.

пример

R = rat(X,tol) аппроксимирует X в пределах допуска, tol.

пример

[N,D] = rat(___) возвращает два массива, N и D, таким образом N./D аппроксимирует X, с использованием любого из вышеуказанных синтаксисов.

Примеры

свернуть все

Аппроксимируйте значение π использование рационального представления величины pi.

Математическая величина π является не рациональным числом, а количеством pi что аппроксимирует это рациональное число, поскольку все числа с плавающей запятой рациональны.

Найдите рациональное представление pi.

format rational
pi
ans = 
     355/113   

Получившееся выражение является вектором символов. Можно также использовать rats(pi) получить тот же ответ.

Использование rat чтобы увидеть непрерывное дробное разложение pi.

R = rat(pi)
R = 
'3 + 1/(7 + 1/(16))'

Результатом является аппроксимация по непрерывному дробному разложению. Если вы рассматриваете первые два членов разложения, вы получаете приближение 3+17=227, который согласен только с pi до 2 десятичных чисел.

Однако, если вы рассматриваете все три условия, напечатанные ratможно восстановить значение 355/113, который согласен с pi до 6 десятичных чисел.

3+17+116=355113

Задайте допуск для дополнительной точности в приближении.

R = rat(pi,1e-7)
R = 
'3 + 1/(7 + 1/(16 + 1/(-294)))'

Получившееся приближение, 104348/33215, соглашается с pi до 9 десятичных чисел.

Создайте матрицу 4 на 4.

format short;
X = hilb(4)
X = 4×4

    1.0000    0.5000    0.3333    0.2500
    0.5000    0.3333    0.2500    0.2000
    0.3333    0.2500    0.2000    0.1667
    0.2500    0.2000    0.1667    0.1429

Выражайте элементы X как коэффициенты малых целых чисел, использующих rat.

[N,D] = rat(X)
N = 4×4

     1     1     1     1
     1     1     1     1
     1     1     1     1
     1     1     1     1

D = 4×4

     1     2     3     4
     2     3     4     5
     3     4     5     6
     4     5     6     7

Две матрицы, N и D, аппроксимация X с N./D.

Просмотрите элементы X как коэффициенты с использованием format rational.

format rational
X
X = 
       1              1/2            1/3            1/4     
       1/2            1/3            1/4            1/5     
       1/3            1/4            1/5            1/6     
       1/4            1/5            1/6            1/7     

В этой форме понятно, что N содержит числители каждой дроби и D содержит знаменатели.

Входные параметры

свернуть все

Входной массив, заданный как числовой массив классов single или double.

Типы данных: single | double
Поддержка комплексного числа: Да

Допуск, заданный как скаляр. N и D аппроксимировать X, таким образом abs(N./D - X) <= tol. Допуск по умолчанию 1e-6*norm(X(:),1).

Выходные аргументы

свернуть все

Непрерывная дробь, возвращенная как символьный массив с m строки, где m количество элементов в X. Точность рационального приближения через непрерывные дроби увеличивается с количеством членов.

Числитель, возвращенный как числовой массив. N./D аппроксимирует X.

Знаменатель, возвращенный как числовой массив. N./D аппроксимирует X.

Алгоритмы

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

rat функция аппроксимирует каждый элемент X по непрерывной части формы

ND=D1+1D2+1+1Dk.

D s получаются путем повторного снятия целочисленной части и последующего взятия обратного дробной части. Точность приближения увеличивается экспоненциально с количеством членов и является худшей, когда X = sqrt(2). Для X = sqrt(2) , ошибка с k условия около 2.68*(.173)^kтаким образом, каждый дополнительный член увеличивает точность менее чем на одну десятичную цифру. Чтобы получить полную точность с плавающей точностью, требуется 21 срок.

Расширенные возможности

.

См. также

|

Представлено до R2006a