exponenta event banner

крыса

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

Описание

пример

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 = 3sqrt(sym(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 isA rational approximation of X is

2+1-4+14+1-4+14+1-42 + 1/(- 4 + 1/(4 + 1/(- 4 + 1/(sym(4) + 1/(-4)))))

Представить математическую величину δ как символическую константу. Константа δ - иррациональное число.

X = sym(pi)
X = πsym(pi)

Использовать vpa , чтобы показать десятичное представление δ с 12 значащими цифрами.

Xdec = vpa(X,12)
Xdec = 3.14159265359vpa('3.14159265359')

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

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

Использовать str2sym для преобразования символьного вектора в одно дробное число.

Q = str2sym(R)
Q = 

355113sym(355/113)

Отображение десятичного представления дробного числа 355/113. Эта аппроксимация согласуется с δ до 6 десятичных знаков.

Qdec = vpa(Q,12)
Qdec = 3.14159292035vpa('3.14159292035')

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

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

10434833215sym('104348/33215')

Результирующая аппроксимация, 104348/33215, согласуется с δ до 9 десятичных знаков.

Qdec = vpa(Q,12)
Qdec = 3.14159265392vpa('3.14159265392')

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

syms x
sol = vpasolve(cos(x) + x^2 + x == 42)
sol = 5.9274875551262136192212919837749vpa('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)[-sym(14); sym(5); -sym(5)]

Использовать str2sym чтобы повернуть непрерывную фракцию R в одно дробное число.

Q = str2sym(R)
Q = 

1962331sym(1962/331)

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

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

Определите золотое отношение X = (1 + 5 )/2 как символическое число.

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

52+12sqrt(sym(5))/2 + sym(1/2)

Найти рациональное приближение 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 должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

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

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

Пример: 5

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

Пример: true

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

свернуть все

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

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

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