крыса

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

Синтаксис

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))'

Результатом является приближение продолжительным дробным расширением. Если вы рассматриваете первые два срока расширения, вы получаете приближение 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 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).

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

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

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

|

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