крыса

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

Синтаксис

R = rat(X)
R = rat(X,tol)
[N,D] = 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 rat
pi
ans = 
     355/113   

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

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

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

Результатом является приближение продолжительным дробным расширением. Если вы рассматриваете первые два срока расширения, вы получаете приближение, которое только соглашается с pi к 2 десятичным числам.

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

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

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 D.

Просмотрите элементы X как отношения с помощью format rat.

format rat
X
X = 4×4

       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, такой что N./D - X < tol. Допуском по умолчанию является 1e-6*norm(X(:),1).

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

свернуть все

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

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

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

Алгоритмы

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

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

ND=D1+1D2+1 (D3 +... +1Dk) .

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

Смотрите также

|

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

Была ли эта тема полезной?