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 = 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)[-сим (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.

Подробнее о

свернуть все

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

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

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

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

См. также

| |

Введенный в R2020a