rat

Рациональное дробное приближение (непрерывная дробь)

Описание

пример

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

пример

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

пример

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

пример

___ = rat(___,Name,Value) дополнительные опции использования заданы одним или несколькими Name,Value парные аргументы, чтобы аппроксимировать X.

Примеры

свернуть все

Объявите иррациональное число 3 как символьное число.

X = sqrt(sym(3))
X = 3

Найдите рациональное дробное приближение (усеченная непрерывная дробь) этого номера. Получившееся выражение является вектором символов.

R = rat(X)
R = 
'2 + 1/(-4 + 1/(4 + 1/(-4 + 1/(4 + 1/(-4)))))'

Отобразите символьную формулу от вектора символов R.

displayFormula(["'A rational approximation of X is'"; R])
A rational approximation of X is

2+1-4+14+1-4+14+1-4

Представляйте математическое количество π как символьная константа. Константа π иррациональное число.

X = sym(pi)
X = π

Используйте vpa показать десятичное представление π с 12 значительными цифрами.

Xdec = vpa(X,12)
Xdec = 3.14159265359

Найдите рациональное дробное приближение π использование rat функция с допуском по умолчанию. Получившееся выражение является вектором символов.

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

Используйте str2sym превратить вектор символов в один дробный номер.

Q = str2sym(R)
Q = 

355113

Покажите десятичное представление дробного номера 355/113. Это приближение соглашается с π к 6 десятичным разрядам.

Qdec = vpa(Q,12)
Qdec = 3.14159292035

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

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

10434833215

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

Qdec = vpa(Q,12)
Qdec = 3.14159265392

Решите уравнение cos(x)+x2+x=42 использование vpasolve. Решение возвращено в десятичном представлении.

syms x
sol = vpasolve(cos(x) + x^2 + x == 42)
sol = 5.9274875551262136192212919837749

Аппроксимируйте решение как непрерывную дробь.

R = rat(sol)
R = 
'6 + 1/(-14 + 1/(5 + 1/(-5)))'

Чтобы извлечь коэффициенты в знаменателе непрерывной дроби, можно использовать regexp функционируйте и преобразуйте их в символьный массив.

S = char(regexp(R,'(-*\d+','match'))
S = 3x4 char array
    '(-14'
    '(5  '
    '(-5 '

Возвратите результат как символьный массив.

coeffs = sym(S(:,2:end))
coeffs = 

(-145-5)

Используйте str2sym к поворотам непрерывная дробь R в один дробный номер.

Q = str2sym(R)
Q = 

1962331

Можно также возвратить числитель и знаменатель рационального приближения путем определения двух выходных аргументов в пользу rat функция.

[N,D] = rat(sol)
N = 1962
D = 331

Задайте золотое сечение X=(1+5)/2 как символьное число.

X = (sym(1) + sqrt(5))/ 2
X = 

52+12

Найдите рациональное приближение X в допуске 1e-4.

R = rat(X,1e-4)
R = 
'2 + 1/(-3 + 1/(3 + 1/(-3 + 1/(3 + 1/(-3)))))'

Чтобы возвратить рациональное приближение с 10 коэффициентами, установите 'Length' опция к 10. Эта опция игнорирует заданный допуск в приближении.

R10 = rat(X,1e-4,'Length',10)
R10 = 
'2 + 1/(-3 + 1/(3 + 1/(-3 + 1/(3 + 1/(-3 + 1/(3 + 1/(-3 + 1/(3 + 1/(-3)))))))))'

Чтобы возвратить рациональное приближение со всеми положительными коэффициентами, установите 'Positive' опция к true.

Rpos = rat(X,1e-4,'Positive',true)
Rpos = 
'1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1))))))))))'

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

свернуть все

Введите в виде номера, вектора, матрицы, массива, символьного числа или символьного массива.

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

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Length',5,'Positive',true

Количество коэффициентов или термины непрерывной дроби в виде положительного целого числа. Определение этой опции заменяет аргумент tol допуска.

Пример 5

Опция, чтобы возвратить положительные коэффициенты в виде логического значения (boolean). Если вы задаете true, затем rat возвращает регулярное расширение непрерывной дроби со всеми положительными целыми числами в знаменателе.

Пример: true

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

свернуть все

Непрерывная дробь, возвращенная как символьный массив.

  • Если X массив элементов m, и всеми элементами являются вещественные числа, затем R возвращен как символьный массив со строками m.

  • Если X массив элементов m, который содержит комплексное число, затем R возвращен как символьный массив с 2m+1 строки. Первые строки m R представляйте расширение непрерывной дроби действительных частей X, сопровождаемый ' +i* ... ' в (m +1)-th строка и последние строки m представляют расширения непрерывной дроби мнимых частей X.

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

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

Ограничения

  • Можно только задать Name,Value аргументы, такие как 'Length',5,'Positive',true, если массив X содержит символьное число или тип данных X sym.

Больше о

свернуть все

Простая непрерывная дробь

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

R=ND=a1+1a2+1+1ak 

с конечным числом целочисленных терминов a1,a2,,ak. Точность рационального приближения увеличивается с количеством членов разложения.

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

| |

Введенный в R2020a
Для просмотра документации необходимо авторизоваться на сайте