Как записать экспоненту в матлабе
Перейти к содержимому

Как записать экспоненту в матлабе

  • автор:

Документация

Используйте expm , чтобы вычислить матричный экспоненциал.

Примеры

Числовое Представление e

Вычислите экспоненциал 1, который является номером Эйлера, e .

exp(1)
ans = 2.7183

Идентичность Эйлера

Идентичность Эйлера является равенством e i π + 1 = 0 .

Вычислите значение e i π .

Y = exp(1i*pi)
Y = -1.0000 + 0.0000i

Графическое изображение показательной функции

График y = e x / 2 для значений x в области значений [ — 2 , 10 ] .

X = -2:0.5:10; Y = exp(X/2); plot(X,Y)

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

X Входной массив
скаляр | вектор | матрица | многомерный массив

Входной массив, заданный как скалярный, векторный, матричный или многомерный массив.

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

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

Y Экспоненциальные значения
скаляр | вектор | матрица | многомерный массив

Экспоненциальные значения, возвращенные как скаляр, вектор, матрица или многомерный массив.

Для действительных значений X в интервале (- Inf , Inf ), Y находится в интервале ( 0 , Inf ). Для комплексных чисел X Y является комплексным. Тип данных Y совпадает с типом данных X .

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

«Высокие» массивы
Осуществление вычислений с массивами, которые содержат больше строк, чем помещается в памяти.

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Массивы графического процессора
Ускорьте код путем работы графического процессора (GPU) с помощью Parallel Computing Toolbox™.

Эта функция полностью поддерживает массивы графического процессора. Для получения дополнительной информации смотрите функции MATLAB Выполнения на графическом процессоре (Parallel Computing Toolbox).

Распределенные массивы
Большие массивы раздела через объединенную память о вашем кластере с помощью Parallel Computing Toolbox™.

Эта функция полностью поддерживает распределенные массивы. Для получения дополнительной информации смотрите функции MATLAB Выполнения с Распределенными Массивами (Parallel Computing Toolbox).

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

Представлено до R2006a
Документация MATLAB
Поддержка
  • MATLAB Answers
  • Помощь в установке
  • Отчеты об ошибках
  • Требования к продукту
  • Загрузка программного обеспечения

© 1994-2019 The MathWorks, Inc.

  • Условия использования
  • Патенты
  • Торговые марки
  • Список благодарностей

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

1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.

2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.

3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.

4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.

5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.

02 Основы работы в MATLAB

2- Основы работы в Matlab 2.1. Работа в командном окне, арифметические операции, форматы чисел, константы в Матлаб 2.2. Стандартные функции в MATLAB, специальные функции пользователя 2.3. Векторы, поэлементные и матричные операции, вычисление сложных функции от данного вектора, 2.4. Матрицы как двумерные массивы, обработка матриц и операции с матрицами

2.1 — Работа в командном окне, арифметические операции, форматы чисел, константы в Матлаб Основные арифметические операторы, сложение, вычитание, умножение, деление, возведение в степень + — * / ^ Следующие операции можно выполнять в командном окне: >> x = 2+7 x = 9 >> x = 3*15 x = 45 >> x = 4^4 x = 64 >> x = 100/8 x= 12.5 >> x = (17 — 9) * 6 / 6 x = 8

Форматы чисел;

format short 1.3333 0.0000
format short e 1.3333E+000 1.2345E-6
format long 1.333333333333338 0.000001234500000
format long e 1.333333333333338 E+000 1.234500000000000E-006
format bank 1.33 0.00
>> x=pi >> format long e
x = >> x
3.1416 x =
>> format long 3.141592653589793e+000
>> x >> format bank
x = >> x
3.141592653589793 x =
3.14
>> format short e
>> x
x =
3.1416e+000

Константы и переменные в Matlab >> pi ans = 3.1416 (какой формат ?) >> e = exp (1) e = 2.7183e+000 (Какой формат ?) Здесь exp( ) встроенная функция, вычисляет экспоненты. eps − ε = 2.2204e-016 (самое малое число, которое отличает двух чисел друг от друга) ans − результат последней операции без знака присвивания i, j − мнимая единица ( −1 ) inf − машинный символ бесконечности NaN − неопределенный результат (0/0, ∞/ ∞, 1 ∞ , и т.д.) Знак процента % используется при вводе комментарий в любом месте в листинге кода, в начале операции или между строками. 4

2.2. Стандартные функции в MATLAB, специальные функции пользователя

Тригонометрические Описание функции
Функции
sin(x) / sind(x) синус числа х (радиан) / синус числа х (градус)
cos(x) / cosd(x) косинус числа х (радиан) / косинус числа х (градус)
tan(x) / tand(x) тангенс числа х (радиан) / тангенс числа х (градус)
cot(x) / cotd(x) котангенс числа х (радиан) / котангенс числа х (градус)
sec(x) / secd(x) секанс числа х (радиан) / секанс числа х (градус)
csc(x) / cscd(x) косеканс числа х (радиан) / косеканс числа х (градус)
asin(x) / asind(x) арксинус чилса х (радиан) / арксинус чилса х (градус)
acos(x) / acosd(x) арккосинус числа х (радиан) / арккосинус числа х (градус)
atan(x) / atand(x) арктангенс числа х (радиан) / арктангенс числа х (градус)
acot(x) / acotd(x) арккотангенс числа х (радиан) / арккотангенс числа х
(градус)
asec(x) / asecd(x) арксеканс числа х (радиан) / арксеканс числа х (градус)
acsc(x) / acscd(x) арккосеканс числа х (радиан) / арккосеканс числа х
(градус)
Гиперболические Функции Описание функции
sinh(x) гиперболический синус числа х
cosh(x) гиперболический косинус числа х
tanh(x) гиперболический тангенс числа х
coth(x) гиперболический котангенс числа х
sech(x) гиперболический секанс числа х
csch(x) гиперболический косеканс числа х
Экспоненциальные Описание функции
Функции
exp(x) Экспонента числа х
log(x) Натуральный логарифм числа х
Целочисленные Описание функции
Функции
fix(x) Округление числа х до ближайжего целого в сторону нуля
floor(x) Округление числа х до ближайжего целого в сторону -∞
ceil(x) Округление числа х до ближайжего целого в сторону +∞
round(x) Обычное округление числа х до ближайжего целого
rem(x,y) Вычисление остатка от деления x на y
sign(x) Сигнум-функция числа х
Другие Функции Описание функции
sqrt(x) (square root of x) Корень квадратной из числа х
abs(x) (absolute of x) Модуль числа х
log10(x) Десятичный логарифм от числа х
log2(x) Логарифм по основанию два от числа х
pow2(x) Возведение двойки в степень х
gcd(x) (greatest common Наибольший общий делитель чисел x и y
divisor)
lcm(x) (least common Наименьшее общее кратное чисел x и y
multiple)
rats(x) Представление числа х в виде рациональной дроби
factorial(x) Вычисление факториала от х
primes(x) Генерация простых чисел, не превосходящих
аргумента x
reallog(x) ln(x) натуральный логарифм от х
realsqrt(x) корень квадратный

возведение в степень

A, t скаляр, вектор или матрица кодированных целых чисел, десятичных или комплексных чисел, полиномов или дробно-рациональных выражений.

b скаляр, вектор или матрица кодированных целых чисел, десятичных или комплексных чисел.

Если операндом являются кодированные целые числа, то другие числа могут быть только кодированными целыми числами или вещественными числами.

Если A является полиномами или дробно-рациональными выражениями, то b может быть только одиночным десятичным (положительным или отрицательным) числом.

Описание

.^ поэлементное возведение в степень

Если A или b скаляр, то он сначала реплицируется до размера другого с помощью A*ones(b) или b*ones(A) . В противном случае A и b должны быть одинакового размера.

Затем для каждого элемента с индексом i вычисляется t(i) = A(i)^b(i) .

^ матричное возведение в степень
  • A скаляр, а b вектор;
  • A вектор, а b скаляр.
  • если A скаляр, а b квадратная матрица, то A^b является матрицей expm(log(A) * b) ;
  • если A квадратная матрица, а b скаляр, то A^b является матрицей A в степени b .
Примечания
  1. Для квадратных матриц A , A^p вычисляется через последовательное перемножение матриц, если p является положительным числом, а иначе — через диагонализацию (см. примечания №2 и №3 ниже).
  2. Если A квадратная и эрмитова матрица, а p нецелый скаляр, то A^p вычисляется как: A ^ p = u * diag ( diag ( s ) .^ p ) * u ‘ (для вещественной матрицы A во внимание принимается только вещественная часть ответа). u и s определяются как [ u , s ] = schur ( A ) .
  3. Если A не является эрмитовой матрицей, а p является нецелым скаляром, то A^p вычисляется как: A ^ p = v * diag ( diag ( d ) .^ p ) * inv ( v ) (для вещественной матрицы A во внимание принимается только вещественная часть ответа). d и v определяются как [ d , v ] = bdiag ( A + 0 * %i ) .
  4. Если A и p вещественные или комплексные числа, то A^p является главным значением, определяемым как A ^ p = exp ( p * log ( A ) ) (или A ^ p = exp ( p * ( log ( abs ( A ) ) + %i * atan ( imag ( A ) / real ( A ) ) ) ) ).
  5. Если A является квадратной матрице, а p вещественным или комплексным числом, то A.^p является главным значением вычисленным как: A .^ p = exp ( p * log ( A ) ) (то же самое, что и в случае 4 выше).
  6. операторы ** и ^ являются синонимами.

Возведение в степень в Scilab является оператором с ассоциативностью справа, в отличие от Matlab® и Octave. Например 2^3^4 в Scilab равно 2^(3^4) , а в Matlab® и Octave равно (2^3)^4 .

Примеры

A = [1 2 ; 3 4]; A ^ 2.5, A .^ 2.5 (1:10) ^ 2 (1:10) .^ 2 A ^ %i A .^ %i exp(%i*log(A)) s = poly(0,'s') s ^ (1:10)

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

  • exp — поэлементная показательная функция
  • expm — квадратная матрица экспоненциальной функции
  • крышечка — (^) возведение в степень
  • inv — matrix inverse

История

Версия Описание
6.0.0 С десятичным или комплексным числами scalar ^ squareMat теперь даёт expm(log(scalar)*squareMat) вместо scalar .^ squareMat .

1-2 Моделирование / Matlab. Практический подход. Самоучитель

Сначала создаем командой A=[1 2 1;-1 0 1;2 -1 1] матрицу, для которой затем вычисляем обратную матрицу. Используем команду B=inv(A) , с помощью которой вычисляем обратную матрицу и результат записываем в переменную B . Свойства обратной матрицы проверяем, вычислив произведение A*B . В результате, как и следовало ожидать, получаем единичную матрицу.

При работе с матрицами часто приходится решать задачу о вычислении собственных чисел и собственных векторов матрицы. Собственные числа

матрицы A получаются как решение уравнения det( A − λE ) = 0 . Соб-

ственным вектором, который соответствует собственному числу λ матрицы

A , называется такой ненулевой вектор ξ

, при котором уравнение Aξ = λξ

имеет нетривиальное решение (то есть решение, отличное от тождественно нулевого).

Собственные векторы определяются не однозначно, а с точностью до общего множителя. Обычно этот множитель выбирается так, чтобы вектор имел единичный модуль.

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

Для вычисления собственных чисел и собственных векторов в Matlab используется функция eig() . Пример использования этой функции в разных вариантах вызова приведен в документе на рис. 4.10.

Сначала создаем матрицу A , а затем командой eig(A) вычисляем собственные числа матрицы. Стоит обратить внимание, что среди трех вычисленных собственных чисел матрицы два – комплексные. Результатом функции eig() в данном формате вызова возвращается вектор с элементами — собственными числами матрицы. Если результат вызова функции eig() записать в массив из двух элементов, то в первый элемент запишутся по столбикам собственные векторы матрицы-аргумента функции eig() , а во второй элемент записывается матрица, по диагонали которой располагаются соответствующие собственные числа (недиагональные элементы этой матрицы равны нулю). Примером может быть команда [x,l]=eig(A) . В результате матрица x будет состоять из столбцов, которые являются собственными векторами матрицы A , а матрица l будет диагональной. Ее диагональные элементы являются собственными числами матрицы A . Для удобства ниже приведен код, который содержится в документе на рис. 4.10 (жирным шрифтом выделен ввод пользователя):

Рис. 4.10. Вычисление собственных чисел

>> A=[1 2 1;-1 0 1;2 -1 1]

-0.2442 + 1.7764i -0.2442 — 1.7764i

Глава 4. Элементы матричной алгебры

Вычисленные таким образом матрицы x , l и исходная матрица A должны быть такими (в силу определения собственных чисел и векторов), чтобы произведения A*x и x*l давали одинаковые результаты. Это обстоятельство мы проверяем во второй части рассмотренного ранее документа (см. рис. 4.10), представленной на рис. 4.11.

Рис. 4.11. Проверка результатов вычислений собственных чисел и собственных векторов

Как и следовало ожидать, результаты вычисления матриц A*x и x*l идентичны.

При работе с квадратными матрицами, кроме прочего, можно использовать операцию возведения в степень ^ . Показатель степени может быть любым целым числом, в том числе и отрицательным. Примеры возведения матриц в целочисленные степени приведены в документе на рис. 4.12.

Например, командой A^3 вычисляем произведение

A A A , а командой

A^(-1) вычисляется обратная матрица к матрице A .

В некоторых случаях полезно прибегать к вычислению функций от матричных аргументов. При решении задач в аналитическом виде к такому подходу прибегают редко, поскольку для функции от матричного аргумента намного легче записать символьное выражение, чем получить приемлемое для прикладного использования выражение. Другое дело, когда для расчетов используется прикладной математический пакет, такой как Matlab. Ситуацию проиллюстрируем на примере вычисления матричной экспоненты.

Как известно, в Matlab есть встроенная функция exp() для вычисления экспоненты.

Рис. 4.12. Возведение матрицы в степень

По определению экспоненциальная функция для скалярного аргумента x опре-

деляется как e x ≡ exp( x ) = 1 + x +

Аргументом функции exp() можно указать матрицу. В этом случае результатом будет матрица, элементы которой получаются экспонированием со-

ответствующих элементов исходной матрицы. Так, если матрица ˆ состоит

из элементов a ij (индексы i = 1,2. m и j = 1,2. n ) и она записана в переменную A , то в результате вычисления выражения exp(A) получим матрицу с элементами exp( a ij ) . По-другому вычисляется функция expm(A) . Во-первых, матрица-аргумент A должна быть квадратной. Во-вторых, результатом является матрица, которая, если не вдаваться в подробности, вы-

числяется в виде ряда E

+. , то есть по тому же пра-

вилу, что и экспонента от скалярного аргумента. Здесь через ˆ обозначена

единичная матрица того же ранга, что и матрица ˆ . Различие в функциях

A exp() и expm() иллюстрирует документ на рис. 4.13.

Глава 4. Элементы матричной алгебры

Рис. 4.13. Матричная экспонента

На первый взгляд может показаться, что польза от функции expm() и, более обще, матричных функций, которые вычисляются аналогично функциям скалярного аргумента, не очень велика. Но это не так. Рассмотрим простой, но показательный пример.

Допустим, что нам необходимо решить задачу Коши: систему диффе-

= −2 x ( t ) + 3 y ( t ) и

с начальными условиями x (0) = 1 и y (0) = 3 .

Это линейная систе-

ма дифференциальных уравнений первого порядка, и для ее решения в аналитическом виде существуют стандартные приемы. Сложного в них ничего нет, но вычисление решения по общепринятому алгоритму может занять некоторое время. Поэтому простым, но длинным путем мы не пойдем. Отметим только, что точное решение данной систе-

мы уравнений имеет вид x ( t ) = exp(− t / 2)

x ( t ) = exp(− t / 2)

. Если отобразить со-

ответствующе решения на графике (а мы это увидим далее), то получим осциллирующие с затуханием функции.

Приведенное решение в числовом виде можно получить достаточно просто без использования специальных функций для решения систем дифферен-

циальных уравнений. Для этого представим исходную систему уравнений

в векторном виде:

( t ) , где введена вектор-функция f

и матрица коэффициентов правых частей системы дифференциальных

. Начальное условие примет вид

Затем воспользуемся формальной аналогией. Если бы у нас было не вектор-

ное уравнение, а скалярное df ( t ) = Af ( t ) с начальным условием f (0) = f 0 , dt

то решение можно было бы записать практически сразу: f ( t ) = f 0 exp( At ) . Но у нас уравнение векторное, поэтому все операции в соответствующем выражении для решения следует понимать в смысле операций с матрицами.

В том числе и вычисление экспоненты. Поэтому решение исходной систе-

мы уравнений имеет вид f

. Таким образом, для получения

решения в фиксированный момент времени t необходимо матрицу ˆ умно-

жить на скаляр t (выполняется поэлементное умножение). В результате по-

лучаем матрицу ˆ . Затем вычисляем матрицу ˆ (по правилу вычис-

ления функции expm() ) и умножаем ее (по правилу умножения матриц)

на вектор начальных значений f 0 .

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

Таким образом, процедура поиска решения ясна, и теперь ее можно автоматизировать – составить программный код, с помощью которого поиск решения системы из двух линейных дифференциальных уравнений первого порядка будет выполняться автоматически. Код соответствующей функции, которая называется ldes() , приведен ниже:

function [x y]=ldes(A,t,z) N=length(t);

Глава 4. Элементы матричной алгебры

for i=1:N M=expm(A*t(i));

Аргументов у функции три: матрица коэффициентов A , список значений аргумента t (узловые точки), в которых вычисляются значения искомых функций, а также вектор начальных значений функций z . Результат вычисления функции записывается в массивы x и y , каждый из которых представляет набор точек-значений соответственно первой x ( t ) и второй y ( t ) искомых функций в узловых точках.

Командой N=length(t) определяется количество узловых точек, для которых необходимо вычислить значения функций. Затем запускается оператор цикла, в котором индексная переменная i пробегает значения от 1 до N . На каждой итерации определяются значения искомых функций в соответствующей узловой точке. Так, при фиксированном значении индексной переменной командой M=expm(A*t(i)) вычисляется матричная экспонента (для данного момента времени t(i) ). Затем командами x(i)=z(1)*M(1,1)+z(2)*M(1,2) и y(i)=z(1)*M(2,1)+z(2)*M(2,2)

вычисляются значения функций в узловой точке.

При вычислении произведения матрицы M на вектор-столбец начальных условий z получаем вектор-столбец. Первый элемент этого вектора-столбца дает значение функции x ( t ) в узловой точке (элемент x(i) ). Второй элемент вектора-столбца дает значение функции y ( t ) в узловой точке (элемент y(i) ). Чтобы получить первый элемент вектора-столбца, необходимо перемножить и сложить соответствующие элементы первой строки матрицы M и элементы вектора начальных значений z . Первая строка матрицы M – это элементы M(1,1) и M(1,2) . Первый элемент вектора начальных значений – это z(1) , а второй элемент вектора начальных значений – это z(2) . В результате получаем комбинацию z(1)*M(1,1)+z(2)*M(1,2) . Аналогично вычисляется второй элемент вектора-столбца: перемножаются и суммируются элементы второй строки матрицы M и элементы вектора начальных значений. Желающие могут подумать, как тот же алгоритм можно было бы реализовать с использованием операции матричного произведения вместо явного выписывания сумм и произведений.

Окно редактора m-файлов с кодом функции ldes() показано на рис. 4.14.

После того, как функция ldes() создана, ее можно использовать для решения системы дифференциальных уравнений. В командном окне вводим следующие команды (жирным шрифтом выделен ввод пользователя):

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *