log10
Y = log10( X ) возвращает десятичный логарифм каждого элемента в массиве X . Функция принимает и действительные и комплексные входные параметры. Для действительных значений X в интервале (0, Inf ), log10 возвращает действительные значения в интервале ( -Inf , Inf ). Для комплексных и отрицательных действительных значений X функция log10 возвращает комплексные числа.
Примеры
Вычисление скалярных значений десятичного логарифма
Исследуйте несколько значений основы 10 функций логарифма.
Вычислите десятичный логарифм 1.
log10(1)
ans = 0
Результатом является 0 , таким образом, это — x-прерывание функции log10 .
Вычислите десятичный логарифм 10.
log10(10)
ans = 1
Результатом является 1 с тех пор 1 0 1 = 10 .
Вычислите десятичный логарифм 100.
log10(100)
ans = 2
Результатом является 2 с тех пор 1 0 2 = 100 .
Вычислите десятичный логарифм 0.
log10(0)
ans = -Inf
Результатом является -Inf с тех пор 1 0 — ∞ = 0 .
Десятичный логарифм с действительным знаком
Создайте вектор чисел в интервале [0.5 5] .
X = (0.5:0.5:5)';
Вычислите десятичный логарифм X .
Y = log10(X)
Y = 10×1 -0.3010 0 0.1761 0.3010 0.3979 0.4771 0.5441 0.6021 0.6532 0.6990
Десятичный логарифм с комплексным знаком
Создайте две Декартовых сетки для X и Y .
[X,Y] = meshgrid(0:0.5:1.5,-2:0.5:2);
Вычислите комплексную основу 10 логарифмов l o g 10 ( X + i Y ) на сетке. Используйте 1i для улучшенной скорости и робастности с комплексной арифметикой.
Z = log10(X + 1i*Y)
Z = 9×4 complex 0.3010 - 0.6822i 0.3142 - 0.5758i 0.3495 - 0.4808i 0.3979 - 0.4027i 0.1761 - 0.6822i 0.1990 - 0.5425i 0.2559 - 0.4268i 0.3266 - 0.3411i 0.0000 - 0.6822i 0.0485 - 0.4808i 0.1505 - 0.3411i 0.2559 - 0.2554i -0.3010 - 0.6822i -0.1505 - 0.3411i 0.0485 - 0.2014i 0.1990 - 0.1397i -Inf + 0.0000i -0.3010 + 0.0000i 0.0000 + 0.0000i 0.1761 + 0.0000i -0.3010 + 0.6822i -0.1505 + 0.3411i 0.0485 + 0.2014i 0.1990 + 0.1397i 0.0000 + 0.6822i 0.0485 + 0.4808i 0.1505 + 0.3411i 0.2559 + 0.2554i 0.1761 + 0.6822i 0.1990 + 0.5425i 0.2559 + 0.4268i 0.3266 + 0.3411i 0.3010 + 0.6822i 0.3142 + 0.5758i 0.3495 + 0.4808i 0.3979 + 0.4027i
Входные параметры
X Входной массив
скаляр | вектор | матрица | многомерный массив
Входной массив, заданный как скалярный, векторный, матричный или многомерный массив.
Типы данных: single | double
Поддержка комплексного числа: Да
Расширенные возможности
«Высокие» массивы
Осуществление вычислений с массивами, которые содержат больше строк, чем помещается в памяти.
Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.
Массивы графического процессора
Ускорьте код путем работы графического процессора (GPU) с помощью Parallel Computing Toolbox™.
Указания и ограничения по применению:
- Если вывод функции, работающей на графическом процессоре, может быть комплексным, то необходимо явным образом задать его входные параметры как комплекс. Для получения дополнительной информации смотрите работу с Комплексными числами на графическом процессоре (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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.
Встроенные функции. Функции, задаваемые пользователем
Основные элементарные математические функции приведены в табл. 1.
Таблица 1. Основные элементарные функции
| exp | экспонента | abs | Модуль |
| log | натуральный логарифм | asin | арксинус |
| log10 | десятичный логарифм | acos | арккосинус |
| sqrt | квадратный корень | atan | арктангенс |
| sin | синус | sinh | гиперболический синус |
| cos | косинус | cosh | гиперболический косинус |
| tan | тангенс | tanh | гиперболический тангенс |
| cot | котангенс | asinh | гиперболический арксинус |
| cec | секанс | acosh | гиперболический арккосинус |
| csc | косеканс | atanh | гиперболический арктангенс |
Аргументами элементарных функций могут быть действительные либо комплексные числа, а также массивы. Если в качестве аргумента функции задан массив, результат представляет собой массив, полученный поэлементным вычислением функции для соответствующих элементов исходного массива. Аргументы тригонометрических функций задаются в радианах. Обратные к ним функции возвращают результат также в радианах.
1.0000 2.7183 7.3891 20.0855
Справочная информация по встроенным элементарным функциям содержится в разделе elfun справочной системы MATLAB. Информацию из раздела можно получить, набрав в командной строке команду doc elfun. В этом разделе содержится полная информация о функциях комплексного аргумента real, angle, abs и т. д. (см. раздел 5). В раздел elfun включены также функции округления и остатка от деления: round (округление до ближайшего целого), fix (усечение дробной части числа), floor (округление до меньшего целого), ceil (округление до большего целого), mod (остаток от деления с учетом знака), rem (остаток в смысле модульной арифметики), sign (знак числа). В этих случаях о комплексных аргументах не может быть и речи.
В MATLAB предусмотрены встроенные функции, связанные с целочисленной арифметикой: factor (разложение числа на простые множители), isprime (истина, если число простое), primes (формирование списка простых чисел), rat (приближение числа в виде отношения двух небольших целых чисел), lcm (наименьшее общее кратное), gcd (наибольший общий делитель).
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
Есть также функции, предназначенные для решения стандартных задач комбинаторики: функция perms вычисляет число перестановок, а функция nchoosek – число сочетаний. Например, C12 4 – число сочетаний из 12 по 4, легко находится вызовом функции nchoosek:
Информация по функциям целочисленной арифметики содержится в разделе specfun справочной системы MATLAB. В разделе specfun находится также информация по встроенным специальным математическим функциям (функциям Бесселя besselj, bessely, полиномам Лежандра legendre и др.).
MATLAB включает побитовые функции преобразования систем счисления: dec2bin (перевод десятичного числа в двоичное); bin2dec (перевод двоичного числа в десятичное); dec2hex (перевод десятичного числа в шестнадцатеричное); hex2dec (перевод шестнадцатеричного числа в десятичное).
Информация по этим функциям находится в разделе strfun справочной системы MATLAB.
И, наконец, есть функции для работы со значениями даты и времени. Чтобы отобразить календарь какого — либо года и месяца, нужно задать функцию calendar с двумя аргументами. Например, отобразим календарь на март 2008 года:
S M Tu W Th F S
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 0 0 0 0 0
Функция calendar без аргументов выводит в командное окно календарь на текущий месяц.
Пара функций tic и toc позволяет вычислить время выполнения системой MATLAB той или иной операции. Если в командной строке набрать
где Fun – команда или набор команд, то будет отображен не только результат выполнения команды Fun, но и приблизительное время ее выполнения (в секундах), которое зависит от быстродействия данного компьютера. Это время может несколько отличаться при повторном замере. Поэтому делают несколько измерений, а в качестве итоговой оценки используют среднее арифметическое значение затраченного времени.
>> tic, A=1:100; B=0.01:0.01:1;C=A*B’, toc
Информация о функциях даты и времени содержится в разделе timefun справочной системы MATLAB.
В MATLAB мы будем использовать как встроенные функции, так и свои собственные функции. Собственные функции можно задавать в отдельных файлах, которые называются M-файлами. M-файлы-функции полезны для задания функций, которые требуют несколько промежуточных команд для вычисления результата. Задание простых функций, которые можно выразить в одной строке, осуществляется с помощью команды inline.
В этом примере показано, как задается функция f (x) = с использованием команды inline:
Вычислим эту функцию, например, при x = 2:
Как отмечалось ранее, большинство функций системы MATLAB могут оперировать как скалярами, так и массивами. Для того, чтобы заданная вами функция могла оперировать массивами, надо поставить точки перед математическими операторами >, < * >, < / >. Векторизацию символьного выражения S осуществляет команда vectorize(S). Таким образом, чтобы получить векторизованную версию функции f (x) =, введем строку
Теперь можно вычислить эту функцию для вектора:
1.0000 0.2500 0.1111 0.0625 0.0400
Отметим, что можно также задавать собственные функции с двумя или более аргументами. Например:
Тогда выполнение выражения
дает значения функции в точках (1;2) и (3;4).
Какой встроенной функцией matlab вычисляется десятичный логарифм
4 -е занятие по MATLAB
ЛАБОРАТОРНАЯ РАБОТА №4
I. Базовые операции символьной математики
системы MATLAB — SIMBOLIC MATHEMATICS TOOLBOX
1. Создание символьных переменных и массивов (x, y, z, a, b, c и т.д.).
Первый способ c помощью команды sym: x = sym(‘x’); y = sym(‘y’); z = sym(‘z’);
Второй способ с помощью команды syms: syms a b c;
1.1. Создание символьных матриц А1 (А2) или массивов:
1-й способ : A1 = sym(‘[a1 b1 c1;d1 e1 f1;g1 h1 k1]’); % матрица А1 размера 3 ´ 3
% Вывод матрицы А1 в командной строке
» A1 % После набора А1 нажать клавишу Enter
2- й способ : syms a b c d e f g h k
A2 = [a2 b2 c2;d2 e2 f2;g2 h2 k2]; % Матрица А2 размера 3 ´ 3
% Вывод матрицы А2 в командной строке
1.2. Проверить рабочую область c помощью команды whos.
1.3. Символьные числовые матрицы и элементы:
Ac1=sym([1 3 7;2 4 6;1 7 5]); % Без апострофа
Ас2 = sym(‘7’); % С апострофом
1.4. Детерминант символьной матрицы — det :
» det(A1) % Без присвоения результата
a1*e1*k1-a1*f1*h1-d1*b1*k1+d1*c1*h1+g1*b1*f1-g1*c1*e1
» D 2= det ( A 2) % С присвоением результата ячейке под именем D 2
a2*e2*k2-a2*f2*h2-d2*b2*k2+d2*c2*h2+g2*b2*f2-g2*c2*e2
» det ( Ac 1) % Детерминант символьной числовой матрицы
% Детерминант матрицы 2-го порядка A 3= sym (‘[ a 1 b 1; c 1 d 1]’)
1 .5. Выделение диагонали заданной символьной матрицы:
1.6. Выделение диагонали символьной числовой матрицы
1.7. Создание символьной диагональной матрицы по заданной:
» diag(diag(A1))
1.8. Создание числовой символьной диагональной матрицы по заданной
» diag(diag(Ac1))
1.9. Вычисление собственных значений и собственных векторов символьно-числовой матрицы.
Собственные векторы — это такие векторы v , которые преобразуются матрицей А в векторы, отличающиеся от исходных лишь скалярным множителем s :
» A=sym([-1 0 0;2 -2 0;0 4 -2.5])
% Вычисление собственных векторов и собственных значений квадратной матрицы А — eig
v = % Матрица правых собственных векторов матрицы А
s = % Диагональная матрица собственных значений матрицы А
% Справедливо следующее спектральное разложение: ,
% Спектральное разложение может быть осуществлено по вектору столбцу, например
» A*v(:,2) % По второму столбцу
» v(:,2)*s(2,2) % По второму столбцу
% Первый собственный вектор v1 — это первый столбец матрицы v: v1=(0, 1, 8)
% Второй собственный вектор v2 — это второй столбец матрицы v: v2=(1, 2 ,16/3)
% Третий собственный вектор v3 — это третий столбец матрицы v: v3=(0, 0 ,1)
% Собственные числа матрицы А: s1=-2, s2=-1, s3=-5/2=-2.5
% Справедливы следующие соотношения:
A*v1=s1*v1; A*v2=s2*v2; A*v3=s3*v3.
Задание: Найти собственные векторы и собственные значения матрицы [7,-2,0;-2,6,-2;0,-2,5] , проверить результат.
2. Графические построения символьных функций — ezplot .
2.1. 1-й способ. Область определения по умолчанию от -2* pi до 2* pi
» syms t % Определение символьной переменной
» ezplot(f1),grid
2.2. 2-й способ обращения к функции ezplot . Задаваемая область определения
» ezplot(f1,[-4*pi 6*pi]),grid
» ezplot(f1,[- 7 9 ]),grid
2 .3. 3-й способ обращения к функции ezplot . Определение функции под знаком ezplot
» ezplot(exp(-0.5*t)*cos(5*t),[0 9]),grid
2 .4. 4-й способ обращения к функции ezplot .
» ezplot exp(-0.5*t)*cos(5*t) [0 9],grid
» ezplot sin(t)/t [ -12 12 ],grid
3. Свойства собственнх значений матрицы:
где — след матрицы А, т.е. сумма элементов главной диагонали, — собственные значения матрицы А, , — размерность матрицы А.
% В системе MATLAB
» trace(A) % След матрицы А
» sum(eig(A)) % Сумма собственных значений матрицы А
» det(A) % Определитель матрицы А
» prod(eig(A)) % Произведение собственных значений матрицы А
4. Создание полиномов и характеристических полиномов.
4.1. Создание полинома по вектору заданных коэффициентов — poly2sym .
» c=[2 3 5 7 8];
» poly2sym(c) % Вектор коэффициентов может быть непосредственно введен в poly2sym
% Переменная х устанавливается по умолчанию. Другие переменные следует определять
» c=[2 3 5 7 8]; % Можно определить и как вектор столбец
» poly2sym(c,z)
4.2. Характеристический полином заданной символьно-числовой матрицы
Характеристический полином определяется из следующего характеристического уравнения для заданной матрицы А:
где — единичная матрица
Каждое собственное число матрицы А удовлетворяет ее характеристическому уравнению
» A=sym([2 -4 5;0 7 -3;4 -3 6]);
» syms s % Задали символьную переменную s
% Для чисто числовой матрицы функция poly определяет только строку коэффициентов
Задание. Вычислить собственные значения матрицы А с присвоением результата и подставить каждое из собственных значений в полученный характеристический полином. Результат должен быть равен нулю. Использовать функцию упрощения результата вычислений simplify.
4.3. Выделение коэффициентов из заданного полинома — sym2poly.
» p=poly2sym([1 3 4 6],s) % Формирование полинома с заданными коэффициентами
» sym2poly(p) % Выделение вектор-строки коэффициентов из заданного полинома
% Полученную вектор-строку можно переопределить с присвоением
Задание. Сформировать характеристический полином по полученному вектору-строки с использованием функции poly2sym по переменной z.
5. Решение символьных конечных уравнений — solve .
5.1. Решение квадратного уравнения
» syms x % Задание символьной переменной х
» solve(‘x^2+2*x-8=0’) % Формат записи решателя solve
[ -1-i*7^(1/2)] % Комплексное решение, i — мнимая единица
5.2. Решение нелинейных уравнений.
» q n =solve(‘x-sin(x)-0.25=0’)
1.1712296525016659939038330755362
5.3. Решение систем нелинейных уравнений.
» [X1,X2]=solve(‘x1+3*log(x1)-x2^2=0,2*x1-x1*x2-5*x1+1=0’);
» simplify([X2,X1]) % Для упрощения результата
5.4. Решение систем трансцендентных уравнений.
Пример. Решить следующую систему трансцендентных уравнений:
где t1, t2, t3 — искомые переменные.
syms t1 t2 t3
[T1,T2,T3]=solve(‘(1-0.5)*exp(t3)-2*exp(t2)+2*exp(t1)-1=0,(1-0.5)*exp(0.5*t3)-2*exp(0.5*t2)+2*exp(0.5*t1)-1=0,(1-0.5)*exp(0.25*t3)-2*exp(0.25*t2)+2*exp(0.25*t1)-1=0’);
% Функция vpa используется д ля задания количества значащих цифр
O4=(1-0.5)*exp(T3(4))-2*exp(T2(4))+2*exp(T1(4))-1 % Для проверки
% Каждое из 6 решений должно удовлетворять любому из 3-х уравнений
II. Вычисление символьных выражений
с различным представлением результатов.
Вычисление пределов в MATLAB. Вычисление сумм, произведений.
в пакете SIMBOLIC MATHEMATICS TOOLBOX.
1. Представление результата в виде рационального числа — ‘r’ .
1.1. Вычисление дроби 1/3:
» r1=sym(1/3,’r’) % С присвоением результата
1.2. Вычисление натурального логарифма от 3 — :
4947709893870347*2^(-52)
1.3. Вычисление десятичного логарифма от 3 — :
8595052419864061*2^(-54)
1.4. Вычисление логарифма по основанию два от 3 — :
7138036527644009*2^(-52)
Замечание: Представление в виде рационального числа имеет формат либо p/q либо p*2^q, где p, q — целые числа.
2. Представление результата в виде числа с плавающей точкой — ‘f’ .
Все величины представляются в форме ‘1.F’*2^(e) или ‘-1.F’*2^(e), где F — это ряд из 13 шестнадцатиричных цифр, а e — целое число. В случае, когда результат вычисления не может быть представлен точно в форме с плавающей точкой, то выводятся буквы, имеющие то или иное назначение в интерпретации результата.
2.1. Вычисление дроби 1/2:
» f1=sym(1/2,’f’) % Формат записи
‘1.0000000000000’*2^(-1)
% Результат записан в виде точного представления в арифметике с плавающей точкой
2.2. Вычисление дроби 1/5:
‘1.999999999999a’*2^(-3)
% Результат записан в виде приближенного (буква а — approximately) представления в арифметике с плавающей точкой.
3. Рациональное число с оценкой погрешности полученного представления —‘e’.
Рациональное представление добавляется переменной ‘eps’, которая оценивает разницу между теоретическим рациональным выражением (результатом) и его действительной величиной с плавающей точкой.
3.1. Вычислить дробь 1/2:
1/2 % Результат как и в случае рационального представления
3.2. Вычислить дробь 1/3:
3.3. Вычислить выражение :
7248263982714163*2^(-52)
3.4. Вычислить дробь 3/33
4. Формат десятичного числа — ‘d’ .
4.1. Вычислить дробь 1/3:
.33333333333333331482961625624739 % По умолчанию поддерживаются 16 цифр %мантиссы полученного числа
4.2. вычислить выражение :
.10000000000000000762976984109189e51
4.3. Вычислить дробь 1/3 с 23 знаками в мантиссе с использованием функции vpa :
.33333333333333333333333
4.4. Вычислить дробь 1/3 с 23 знаками в мантиссе с использованием vpa и digits
.33333333333333333333333
% Использование только digits приводит к выводу результата с заданным количеством цифр, но %с ограниченной точностью (в формате ‘d’):
.33333333333333331482962
5. Вычисление пределов — limit.
Вычисление пределов от символьных выражений производится с помощью встроенной функции limit . Соответствие между традиционным математическим описанием и символьным системы MATLAB приводится в таблице 1.
Примечание: символ бесконечность ( ) в MATLAB записывается как inf . Неопределенное значение в MATLAB записывается как NaN .
5.1. Вычислить предел выражения :
1 % Предел отношения равен единицы
5.2. Вычислить предел выражения :
» limit(y2,inf)
exp(1) % Ответ: число е в первой степени
5.3. Вычислить предел выражения при стремлении х к нулю слева:
» limit(y3,x,0,’left’)
-inf % Ответ: минус бесконечность
5.4. Вычислить предел выражения при стремлении х к нулю справа:
» limit(y4,x,0,’right’)
inf % Ответ: бесконечность (т.е. плюс бесконечность)
limit((sin(x+h)-sin(x))/h,h,0) returns cos(x)
5.5. Вычислить предел выражения :
» limit(y5,h,0) % Вычисление предела по одной из переменных — по h
6 . Дифференцирование функций одной переменной — diff .
6.1. Найти производную функции по переменной х:
6.2. Найти производную функции по переменной х:
» diff(sin(x+h)/x) % Формат записи без предварительного присвоения
6.3. Найти производную функции по переменной h :
» diff(sin(x+h)/x,h) % В записи указывается имя символьной переменной, по которой
6.4. Найти вторую производную от функции по переменной h :
6.5. Найти вторую производную от функции по переменной х:
» diff(sin(x+h)/x,2) % Цифра два указывает на порядок производной
6.6. Найти третью производную от функции по переменной h :
7. Интегрирование функции одной переменной — int .
7.1. Вычисление неопределенного интеграла:
» int((x+h)^2) % По умолчанию интегрирование ведется по переменной х
% Вычислить неопределенный интеграл от функции по переменной h :
% Вычислить неопределенный интеграл от функции по переменной x :
1/2*x^2+2*h*x+h^2*log(x) % В ответе имеется в виду натуральный логарифм
7.2. Вычисление определенного интеграла.
% Вычислить определенный интеграл :
» y7=int(x^2*sin(x),1,2*pi)
% Вычислить определенный интеграл по переменной h :
2*sin(x)*x^2*pi+4*sin(x)*x*pi^2+8/3*sin(x)*pi^3-sin(x)*x^2-sin(x)*x-1/3*sin(x)
5.2832*sin(x)*x^2+38.479*sin(x)*x+82.353*sin(x)
8. Решение обыкновенных дифференциальных уравнений в символьном виде — dsolve .
Решатель дифференциальных уравнений может быть использован, если решение существует в аналитическом виде. Практически это означает, что решателем dsolve можно пользоваться только при поиске решения линейного дифференциального уравнения (или системы линейных уравнений).
8 .1. Решить дифференциальное уравнение с начальным условием Построить график решения в интервале [-0.5, 7].
% Создадим следующий сценарий под именем sdif1 :
% Решение диф.уравнения в символьном виде
ezplot(x1,[-0.5,7]),grid,title(‘ Диф.уравнение ‘)
% Область построения графика решения можно задавать без квадратных скобок
8 .2. Решить систему однородных дифференциальных уравнений с начальными условиями Построить график решения в интервале [-0.5, 13].
% Создадим следующий сценарий под именем sdif2 :
ezplot(x1,0,13),grid,hold on,ezplot(x2,[0,13]),title (‘Однородная система 2-х уравнений’)
8.3. Решить систему неоднородных дифференциальных уравнений
с нулевыми начальными условиями и построить график решения в интервале [0, 5] для первой координаты и в интервале [0, 9] для второй координаты .
% Создадим следующий сценарий под именем sdif3 :
[x1,x2]=dsolve(‘Dx1=-3*x1+12′,’Dx2=2.5*x1-1.25*х2′,’x1(0)=0’,
ezplot(x1,[0,5]),grid,hold on,ezplot(x2,[0,9]),title( ‘ Неоднородная система 2-х уравнений ‘)
8.4. Решить дифференциальное уравнение 2-го порядка с нулевыми начальными условиями и построить график решения в интервале [-0.2, 9] .
% Создадим следующий сценарий под именем sdif4 :
ezplot(x,[-0.2 9]),grid,title (‘Д иф.уравнение 2-го порядка ‘)
8.5. Решить дифференциальное уравнение 3-го порядка с нулевыми начальными условиями и построить график решения в интервале [-0.2, 21] .
% Создадим следующий сценарий под именем sdif5 :
ezplot(x,[-0.2 21]),grid,title (‘Диф.уравнение 3-го порядка’)
8.6. Решить неоднородную систему дифференциальных уравнений 3-го порядка
с нулевыми начальными условиями и построить график решения по каждой координате в одной системе координат в интервале [-1, 19] с различными цветами по , , .
% Создадим следующий сценарий под именем sdif6 :
[x1,x2,x3]=dsolve(‘Dx1=-x1+2.3′,’Dx2=x3′,’Dx3=1.025*x1-0.4*x3-0.8*х2’,
ezplot(x1,[-1,19]),grid, hold on,ezplot(x2,[-1,19],
title (‘Н еоднородная система 3-го порядка ‘),
% Функция ezplot не позволяет строить графики с заданными цветами. Применим fplot . Для этого в функцию fplot следует вставить решения из командного окна MATLAB. Например, решение по первой координате имеет вид
% Тогда формат записи fplot для графика по х1 будет следующий (с красным цветом):
% Через hold on можно добавить еще fplot по второй координате х2 и по третьей х3.
¾ Для объекта с передаточной функцией решить соответствующее дифференциальное уравнение при нулевых начальных условиях и построить график решения (переходный процесс).
¾ Для того же объекта с передаточной функцией W(s) записать систему дифференциальных уравнений первого порядка, решить ее и сравнить с решением соответствующего дифференциального уравнения 3-го порядка.
¾ Исследовать переходной процесс по выходным координатам двух колебательных звеньев, соединенных последовательно. Передаточные функции звеньев принять в виде:
¾ Решение в символьном виде систем дифференциальных уравнений сравнить с решением численного метода с помощью решателя ode45.
Справочник по MATLAB — Математические функции (В.Г.Потемкин)
Информация в данной статье относится к релизам программы MATLAB ранее 2016 года, и поэтому может содержать устаревшую информацию в связи с изменением функционала инструментов. С более актуальной информацией вы можете ознакомиться в разделе документация MATLAB на русском языке.
В системе MATLAB имеется обширная библиотека математических функций. Каждой функции соответствует определенное имя. Функция ставит в соответствие значениям своих аргументов значение результата.
Аргументы функции всегда указываются в круглых скобках после имени функции и, если их больше одного, разделяются запятыми. В качестве аргументов могут использоваться другие функции и любые выражения языка MATLAB (при условии соответствия типов аргументов).
Элементарная математическая функция — это, как правило, функция от одной переменной, и в этом случае устанавливается соответствие между массивами значений аргумента и результата.
Аргумент указывается в круглых скобках после имени функции. Имя переменной, которой присваивается значение функции, располагается слева от знака равенства. Если имя присваиваемой переменной не указано, значение функции присваивается служебной переменной ans.
Тип результата вычисления математической функции всегда совпадает с типом ее аргумента. Например, если аргументом функции является вектор-столбец, то значением этой функции также будет вектор-столбец.
Рассмотрим встроенные математические функции системы MATLAB, которые применяются к числам, скалярным переменным и к массивам (поэлементно).
Базовые функции
- ABS — абсолютное значение
- ANGLE — аргумент комплексного числа
- REAL, IMAG — действительная и мнимая части комплексного числа
- CONJ — операция комплексного сопряжения
- SIGN — вычисление знака числа
- CEIL, FIX, FLOOR, ROUND — функции округления
- REM — функция остатка
- GCD — наибольший общий делитель
- LCM — наименьшее общее кратное
- RAT, RATS — представление результата в виде рационального числа или цепной дроби
Трансцендентные функции
- SQRT — квадратный корень
- EXP — экспоненциальная функция
- LOG — функция натурального логарифма
- POW2 — экспонента по основанию 2
- NEXTPOW2 — ближайшая степень по основанию 2
- LOG2 — фунции логарифма
- LOG10 — функции логарифма
Тригонометрические функции
- SIN, SINH — функции синуса
- ASIN, ASINH — функции обратного синуса
- CSC, CSCH — функции косеканса
- ACSC, ACSCH — функции обратного косеканса
- COS, COSH — функции косинуса
- ACOS, ACOSH — функции обратного косинуса
- SEC, SECH — функции секанса
- ASEC, ASECH — функции обратного секанса
- TAN, TANH — функции тангенса
- ATAN, ATAN2, ATANH — функции обратного тангенса
- COT, COTH — функции котангенса
- ACOT, ACOTH — функции обратного котангенса
Преобразования системы координат
- CART2POL — преобразование декартовой системы координат в полярную и цилиндрическую
- CART2SPH — преобразование декартовой системы координат в сферическую
- POL2CART — преобразование полярной и цилиндрической систем координат в декартову
- SPH2CART — преобразование сферической системы координат в декартову
Специальные функции
- BESSEL — функции Бесселя
- BETA, BETACORE, BETAINC, BETALN — бета-функции
- ELLIPJ — эллиптические функции Якоби
- ELLIPKE — полные эллиптические интегралы
- ERF, ERFCORE, ERFC, ERFCX, ERFINV — функции ошибок
- GAMMA, GAMMAINC, GAMMALN — гамма-функции
Базовые функции
ABS — абсолютное значение
Для массива действительных чисел X функция Y = abs(X) возвращает массив Y абсолютных значений элементов X.
Для массива комплексных чисел Z функция Y = abs(Z) возвращает массив Y модулей комплексных элементов Z.
Для строковой переменной S функция Y = abs(S) возвращает вместо символов, включая пробелы, их ASCII-коды.
Примеры:
abs(-5)
ans = 5
abs(3 + 4i)
ans = 5
ascii = abs(‘3 + 4I’)
ascii = 51 32 43 32 52 73
setstr(ascii)
ans = 3 + 4I
ANGLE — аргумент комплексного числа
Для массивов комплексных чисел Z функция P = abs(Z) возвращает массив значений аргументов для элементов Z. Значение аргумента измеряется в радианах и находится в пределах от — p до p .
Пример:
Для комплексного числа z = x + iy = re i j его модуль r и аргумент j вычисляются следующим образом:
r = abs(z)
phi = angle(z),
выполняет обратное преобразование.
Для вычисления аргумента комплексного числа используется следующее соотношение:
angle(z) = atan2(imag(z), real(z))
REAL, IMAG — действительная и мнимая части комплексного числа
X = real(Z)
Y = real(Z)
Для массивов комплексных чисел Z функция X = real(Z) возвращает массив действительных, а Y = real(Z) — мнимых частей элементов Z.
CONJ — операция комплексного сопряжения
Для массивов комплексных чисел Z функция V = conj(Z) возвращает массив комплексно-сопряженных значений для элементов Z.
SIGN — вычисление знака числа
Для массивов действительных чисел X функция S = sign(X) возвращает массив S тех же размеров, в котором на месте положительного числа стоит 1, на месте нулевого — 0, на месте отрицательного — (-1).
Для массивов комплексных чисел Z функция S = sign(Z) возвращает массив комплексных чисел S = Z ./abs(Z), модуль которых равен единице.
CEIL, FIX, FLOOR, ROUND — функции округления
Y = ceil(X)
Y = fix(X)
Y = floor(X)
Y = round(X)
Для массивов действительных чисел X:
- функция Y = ceil(X) возвращает значения, округленные до ближайшего целого >=X;
- функция Y = fix(X) возвращает значения с усечением дробной части числа;
- функция Y = floor(X) возвращает значения, округленные до ближайшего целого
- функция Y = round(X) возвращает значения, округленные до ближайшего целого.
Для массивов комплексных чисел Z эти функции применяются одновременно к действительной и мнимой частям.
Примеры:
Задан одномерный массив действительных чисел
x = [-1.9 -0.2 3.4 5.6 7.0];
| ceil(x) | ans = -1 0 4 6 7 | fix(x) | ans = -1 0 3 5 7 |
| floor(x) | ans = -2 -1 3 5 7 | round(x) | ans = -2 0 3 6 7 |
REM — функция остатка
Для действительных чисел x и y функция rem(x, y) вычисляет остаток от деления x на y или, в других обозначениях, функцию x(mod y) = x — y*n, где n = fix(x/y) — ближайшее целое.
Для массивов чисел эта функция применяется поэлементно.
GCD — наибольший общий делитель
g = gcd(m, n)
[g, c, d] = gcd(m, n)
Функция g = gcd(m, n) вычисляет наибольший общий делитель двух целых чисел m и n. Принято, что gcd(0, 0) = 0.
Функция [g, c, d] = gcd(m, n) кроме наибольшего общего делителя вычисляет два множителя c и d, таких, что выполняется соотношение g = = m*c + n*d.
Для массивов чисел эту функцию применять нельзя.
if round(a) ~= a | round(b) ~= b
error(‘Входные аргументы должны быть целыми числами.’)
end
u = [1 0 abs(a)];
v = [0 1 abs(b)];
while v(3)
q = floor( u(3) / v(3) );
t = u — v*q;
u = v;
v = t;
end
c = u(1) * sign(a);
d = u(2) * sign(b);
g = u(3);
Пример:
[g, c, d] = gcd(45, 36);
[g c d] ans = 9 1 -1
LCM — наименьшее общее кратное
Функция g = lcm(m, n) вычисляет наименьшее общее кратное двух целых чисел m и n.
Для массивов чисел эту функцию применять нельзя.
if round(a) ~= a | round(b) ~= b | a < 1 | b < 1
error(‘Входные аргументы должны быть целыми числами.’)
end
c = a*b/gcd(a,b);
Пример:
g = lcm(45, 36)
g = 180
RAT, RATS — представление результата в виде рационального числа или цепной дроби
| [N, D] = rat(X) | rat(X) | S = rats(X) |
| [N, D] = rat(X, tol) | rat(X, tol) | S = rats(X, tol) |
Несмотря на то что все числа с плавающей точкой представлены в ком-пьютере в виде рациональных чисел, иногда целесообразно представить число в виде отношения двух относительно небольших целых чисел. Такое представление на основе цепных дробей и реализуется с использованием вышеперечисленных функций.
Функция [N, D] = rat(X) определяет для входа x два таких целых числа n и d, при которых выполняется условие n/d — x
Функция [N, D] = rat(X, tol) позволяет указать точность приближения tol, отличную от 1e-6.
Функции rat(X) и rat(X, tol) позволяют вывести на экран результат в виде цепной дроби.
Если в качестве входа задан массив чисел X, то результатом операций будут массивы соответствующего размера.
Функция S = rats(X, k) использует функцию rat(X), чтобы вывести на экран результат в виде простой дроби
s = [sprintf([‘%’ num2str(fix(k/2)), n) ‘/’ sprintf([‘%-‘ num2str(fix(k/2)) ‘.0f’], d)],
точность аппроксимации для которой составляет tol = 10^(-fix(k/2)) * abs(x).
Для функции S = rats(X) точность аппроксимации принимается по умолчанию равной 1e-6* abs(x), что соответствует значению k = 13.
Функция format rat равносильна функции rats.
Функция rat(X) аппроксимирует каждый элемент массива X цепной дробью следующего вид:
Величины dk получены последовательным выделением целой части с последующим обращением дробной части. Точность аппроксимации возрастает по степенному закону с ростом числа членов. Самая медленная сходимость наблюдается при рациональной аппроксимации числа x = sqrt(2). Погрешность аппроксимации с учетом k членов составляет 2.68 * (0.173)^k, так что учет каждого последующего члена увеличивает точность менее чем на одну десятичную цифру, так что для достижения максимальной точности в арифметике с плавающей точкой требуется 21 член.
Примеры:
Рассмотрим аппроксимацию числа p в виде цепной дроби и рационального числа
rat(pi)
ans = 3 + 1/(7 + 1/(16))
rat(pi, 1e-12)
ans = 3 + 1/(7 + 1/(16 + 1/(-294 + 1/(3 + 1/(-4 + 1/(5))))))
[n,d]=rat(pi);
[n d]
ans = 355 113
[n, d]=rat(pi, 1e-12);
[n d]
ans = 5419351 1725033
s = rats(pi)
s = 355/113
s = rats(pi, 26)
s = 5419351/1725033
Трансцендентные функции
SQRT — квадратный корень
Функция V = sqrt(Z) вычисляет квадратные корни элементов массива Z. Для отрицательных и комплексных значений результат является комплексным числом.
Пример:
| 0+ 1.4142i |
| 0+ 1.0000i |
| 0 |
| 1.0000 |
| 1.4142 |
| Name | Size | Bytes | Class |
| w | 5×1 | 80 | double array (complex) |
Grand total is 5 elements using 80 bytes
Общее число элементов 5, используют 80 байтов.
Сопутствующие функции: EXP, LOG, SQRTM.
EXP — экспоненциальная функция
Функция V = exp(Z) вычисляет экспоненты значений элементов массива Z. Для комплексных значений z = x + iy справедлива формула Эйлера
e z = e x (cos(y) + i sin(y)).
Вычисление экспоненты от матрицы реализовано с помощью специальной функции expm.
Сопутствующие функции: LOG, LOG2, LOG10, EXPM.
LOG — функция натурального логарифма
Функция V = log(Z) вычисляет натуральный логарифм значений элементов массива Z. Для комплексных значений z = x + iy справедлива формула
ln(z) = ln(abs(z)) + i atan2(y, x).
Вычисление функции натурального логарифма от матрицы реализовано с помощью специальной функции logm.
Пример:
Одна из возможностей вычисления значения числа p — это вычислить log(-1):
log(-1)
ans = 0 +3.141592653589793e+000i
Сопутствующие функции: EXP, LOG2, LOG10, LOGM.
POW2 — экспонента по основанию 2
V = pow2(Z)
X = pow2([M, P])
Функция V = pow2(Z) вычисляет массив степеней 2.^Z.
Функция X = pow2([M, P]) для действительных массивов M и P вычисляет массив X = M.*(2.^P).
Пример:
Для компьютеров с IEEE-арифметикой, в которых определены объекты eps, realmax и realmin, функция x = pow2([m, p]) вычисляет следующие величины:
| m | p | x |
| 1/2 | 1 | 1 |
| pi/4 | 2 | pi |
| -3/4 | 2 | -3 |
| 1/2 | -51 | eps |
| 1-eps/2 | 1024 | realmax |
| 1/2 | -1021 | realmin |
NEXTPOW2 — ближайшая степень по основанию 2
p = nextpow2(n)
p = nextpow2(x)
Функция p = nextpow2(n) возвращает такой показатель степени p, что 2^p >= n.
Функция p = nextpow2(x) для одномерного массива x возвращает значение nextpow2(length(x)). Эта операция широко применяется при вычислении быстрого преобразования Фурье.
Пример:
Для любого целого числа n в диапазоне от 513 до 1024 функция nextpow2(n) возвращает значение 10.
LOG2 — фунции логарифма
V = log2(Z)
[M, P] = log2(X)
Функция V = log2(Z) вычисляет логарифм по основанию 2 от значений элементов массива Z.
Функция [M, P] = log2(X) для массива X действительных чисел возвращает массив M значений мантисс и целочисленный массив P показателей степеней, позволяющих представить любой элемент x в виде x = f*2^p; нулевому элементу соответствует представление .
Примеры:
Для компьютеров с IEEE-арифметикой, в которых определены объекты eps, realmax, realmin, функция log2 вычисляет следующие величины:
| log2(eps) | log2(realmax) | log2(realmin) |
| ans = -52 | ans = 1024 | ans = -1022 |
а функция [M, P] = log2(X) строит следующие представления чисел:
| x | m | p |
| 1 | 1/2 | 1 |
| pi | pi/4 | 2 |
| -3 | -3/4 | 2 |
| eps | 1/2 | -51 |
| realmax | 1-eps/2 | 1024 |
| realmin | 1/2 | -1021 |
LOG10 — функции логарифма
Функция V = log10(Z) вычисляет логарифм по основанию 10 от значений элементов массива Z.
Примеры:
Для компьютеров с IEEE-арифметикой, в которых определены объекты eps, realmax realmin, функция log10 вычисляет следующие величины:
| log10(eps) | log10(realmax) | log10(realmin) |
| ans = -15.6536 | ans = 308.2547 | ans = -307.6527 |
Сопутствующие функции: EXP, LOG2, LOGM, POW2.
Тригонометрические функции
SIN, SINH — функции синуса
V= sin(Z)
V = sinh(Z)
Функция V = sin(Z) вычисляет синус от значений элементов массива Z.
Функция V = sinh(Z) вычисляет гиперболический синус от значений элементов массива Z.
Массив Z допускает комплексные значения; углы измеряются в радианах.
Для вычисления функции от матрицы следует применять специальные функции funm или expm.
Для вычисления функций синуса используются следующие соотношения:
sin(x + iy) = sin(x)ch(y) + icos(x)sh(y);
sh(z) = ;
sin(z) = — i sh(iz).
ASIN, ASINH — функции обратного синуса
V = asin(Z)
V = asinh(Z)
Функция V = asin(Z) вычисляет обратную функцию синуса от значений элементов массива Z.
Функция V = sinh(Z) вычисляет обратную функцию гиперболического синуса от значений элементов массива Z.
Массив Z допускает комплексные значения; углы V измеряются в радианах.
Функция Y = asin(X) для действительных значений -1
Для вычисления функции от матрицы следует применять специальную функцию funm.
Для вычисления функций обратного синуса используются следующие соотношения:
arsh(z) = ln[z + (1 + z 2 ) 1/2 ];
arcsin(z) = — i arsh(iz).
CSC, CSCH — функции косеканса
V = csc(Z)
V = csch(Z)
Функция V = csc(Z) вычисляет косеканс от значений элементов массива Z.
Функция V = sinh(Z) вычисляет гиперболический косеканс от значений элементов массива Z.
Массив Z допускает комплексные значения; углы измеряются в радианах.
Для вычисления функции от матрицы следует применять специальную функцию funm.
Для вычисления функций косеканса используются следующие соотношения:
csc(z) = 1/sin(z);
csch(z) = 1/sinh(z).
ACSC, ACSCH — функции обратного косеканса
V = acsc(Z)
V = acsch(Z)
Функция V = acsc(Z) вычисляет обратную функцию косеканса от значений элементов массива Z.
Функция V = acsch(Z) вычисляет обратную функцию гиперболического косеканса от значений элементов массива Z.
Массив Z допускает комплексные значения; углы V измеряются в радианах.
Для вычисления функции от матрицы следует применять специальную функцию funm.
Для вычисления функций обратного косеканса используются следующие соотношения:
arccosec(z) = arcsin(1/z);
arcosech(z) = arsinh(1/z).
COS, COSH — функции косинуса
V = cos(Z)
V = cosh(Z)
Функция V = cos(Z) вычисляет косинус от значений элементов массива Z.
Функция V = cosh(Z) вычисляет гиперболический косинус от значений элементов массива Z.
Массив Z допускает комплексные значения; углы измеряются в радианах.
Для вычисления функции от матрицы следует применять специальные функции funm или expm.
Для вычисления функций косинуса используются следующие соотношения:
cos(x + iy) = cos(x)ch(y) — isin(x)sh(y);
ch(z) =;
cos(z) = ch(iz).
ACOS, ACOSH — функции обратного косинуса
V = acos(Z)
V = acosh(Z)
Функция V = acos(Z) вычисляет обратную функцию косинуса от значений элементов массива Z.
Функция V = acosh(Z) вычисляет обратную функцию гиперболического косинуса от значений элементов массива Z.
Массив Z допускает комплексные значения; углы V измеряются в радианах.
Функция Y = acos(X) для действительных значений -1
Для вычисления функции от матрицы следует применять специальную функцию funm.
Для вычисления функций обратного косинуса используются следующие соотношения:
arch(z) = ln[z + (z 2 — 1) 1/2 ];
arccos(z) = -i arch(z).
SEC, SECH — функции секанса
V = sec(Z)
V = sech(Z)
Функция V = sec(Z) вычисляет секанс от значений элементов массива Z.
Функция V = sech(Z) вычисляет гиперболический секанс от значений элементов массива Z.
Массив Z допускает комплексные значения; углы измеряются в радианах.
Для вычисления функции от матрицы следует применять специальную функцию funm.
Для вычисления функций секанса используются следующие соотношения:
sec(z) = 1/cos(z);
sech(z) = 1/cosh(z).
ASEC, ASECH — функции обратного секанса
V = asec(Z)
V = asech(Z)
Функция V = asec(Z) вычисляет обратную функцию секанса от значений элементов массива Z.
Функция V = asech(Z) вычисляет обратную функцию гиперболического секанса от значений элементов массива Z.
Массив Z допускает комплексные значения; углы V измеряются в радианах.
Для вычисления функции от матрицы следует применять специальную функцию funm.
Для вычисления функций обратного секанса используются следующие соотношения:
arcsec(z) = arccos(1/z);
arsech(z) = arcosh(1/z).
TAN, TANH — функции тангенса
V = tan(Z)
V = tanh(Z)
Функция V = tan(Z) вычисляет тангенс от значений элементов массива Z.
Функция V = sinh(Z) вычисляет гиперболический тангенс от значений элементов массива Z.
Массив Z допускает комплексные значения; углы измеряются в радианах.
Для вычисления функции от матрицы следует применять специальную функцию funm.
Для вычисления функций тангенса используются следующие соотношения:
ATAN, ATAN2, ATANH — функции обратного тангенса
V = atan(Z)
V = atan2(Y, X)
V = atanh(Z)
Функция V = atan(Z) вычисляет обратную функцию тангенса от значений элементов массива Z.
Функция V = atan2(Y, X) вычисляет обратную функцию тангенса от значений элементов двух связанных действительных массивов Y и X. Если массивы оказались комплексными, берутся их действительные части. Углы V вычисляются с учетом знаков Y и X и определены в интервале — p
Функция V = atanh(Z) вычисляет обратную функцию гиперболического тангенса от значений элементов массива Z.
Массив Z допускает комплексные значения; углы V измеряются в радианах.
Для вычисления функции от матрицы следует применять специальную функцию funm.
Для вычисления функций обратного тангенса используются следующие соотношения:
arctg(z) = -i arth(iz);
COT, COTH — функции котангенса
V = cot(Z)
V = coth(Z)
Функция V = csc(Z) вычисляет котангенс от значений элементов массива Z.
Функция V = sinh(Z) вычисляет гиперболический котангенс от значений элементов массива Z.
Массив Z допускает комплексные значения; углы измеряются в радианах.
Для вычисления функции от матрицы следует применять специальную функцию funm.
Для вычисления функций косеканса используются следующие соотношения:
ctg(z) = 1/tg(z);
cth(z) = 1/th(z).
ACOT, ACOTH — функции обратного котангенса
V = acot(Z)
V = acoth(Z)
Функция V = acsc(Z) вычисляет обратную функцию котангенса от значений элементов массива Z.
Функция V = acsch(Z) вычисляет обратную функцию гиперболического котангенса от значений элементов массива Z.
Массив Z допускает комплексные значения; углы V измеряются в радианах.
Для вычисления функции от матрицы следует применять специальную функцию funm.
Для вычисления функций обратного котангенса используются следующие соотношения:
arсth(z) = ;
arcctg(z) = i arcth(iz).
Преобразования системы координат
CART2POL — преобразование декартовой системы координат в полярную и цилиндрическую
[TH, R] = CART2POL(X, Y)
[TH, R, Z] = CART2POL(X, Y, Z)
Функция [TH, R] = CART2POL(X, Y) преобразует точки декартовой системы координат в точки полярной системы координат. Размеры массивов X и Y должны быть согласованы. Угол TH измеряется в радианах.
Функция [TH, R, Z] = CART2POL(X, Y, Z) преобразует точки трехмерной декартовой системы координат в точки цилиндрической системы координат. Размеры массивов X, Y и Z должны быть согласованы. Угол TH измеряется в радианах.
Для вычисления используются следующие формулы преобразования:
r = sqrt(x.^2 + y.^2);
th = atan2(y, x).
CART2SPH — преобразование декартовой системы координат в сферическую
[AZ, EL, R] = CART2SPH(X, Y, Z)
Функция [AZ, EL, R] = CART2SPH(X, Y, Z) преобразует точки трехмерной декартовой системы координат в точки сферической системы координат. Размеры массивов X, Y и Z должны быть согласованы. Углы AZ, EL измеряются в радианах.
Для вычисления используются следующие формулы преобразования:
r = sqrt(x.^2 + y.^2 + z.^2);
elev = atan2(z, sqrt(x.^2 + y.^2));
az = atan2(y, x).
POL2CART — преобразование полярной и цилиндрической систем координат в декартову
[X, Y] = POL2CART(TH, R)
[X, Y, Z] = POL2CART(TH, R, Z)
Описание:
Функция [X, Y] = POL2CART(TH, R) преобразует точки полярной системы координат в точки декартовой системы координат. Размеры массивов X и Y должны быть согласованы. Угол TH измеряется в радианах.
Функция [TH, R, Z] = CART2POL(X, Y, Z) преобразует точки цилиндрической системы координат в точки трехмерной декартовой системы координат. Размеры массивов X, Y и Z должны быть согласованы. Угол TH измеряется в радианах.
Для вычисления используются следующие формулы преобразования:
x = r.*cos(th);
y = r.*sin(th);
z = z;
SPH2CART — преобразование сферической системы координат в декартову
[AZ, EL, R] = CART2SPH(X, Y, Z)
Функция [AZ, EL, R] = CART2SPH(X, Y, Z) преобразует точки трехмерной декартовой системы координат в точки сферической системы координат. Размеры массивов X, Y и Z должны быть согласованы. Углы AZ, EL измеряются в радианах.
Для вычисления используются следующие формулы преобразования:
z = r .* sin(elev);
x = r .* cos(elev) .* cos(az);
y = r .* cos(elev) .* sin(az).
Специальные функции
BESSEL — функции Бесселя
J = bessel(alpha, X)
Линейное дифференциальное уравнение вида
где a — неотрицательная величина, называется уравнением Бесселя, а его решения известны как функции Бесселя.
Для вычисления функций Бесселя разработан набор M-файлов, обеспечивающий высокую точность их вычисления для действительных значений аргумента:
- besselj(alpha, X) — функция Бесселя первого рода J a (x);
- bessely(alpha, X) — функция Бесселя второго рода Y a (x);
- besseli(alpha, X) — модифицированная функция Бесселя первого рода I a (x);
- besselk(alpha, X) — модифицированная функция Бесселя второго рода K a (x).
Сохранена также функция [J, digits] = bessela(alpha, Z), которая допускает комплексные значения аргумента и позволяет получать оценку количества правильных цифр результата. Значение digits, равное 14 или 15, соответствует максимальной точности IEEE- или VAX-арифметик; однако значение digits, равное единице или двум, означает, что результату доверять нельзя. Для значений alpha и x, не превышающих 50, количество точных цифр по крайней мере 8. На плоскости (alpha, x) область наименьшей точности расположена вблизи прямой alpha = x, так что малые alpha и большие x, и наоборот, дают более точные значения.
Функция J = bessel(alpha, X) вызывает:
- функцию besselj(alpha, X), если X — массив действительных чисел;
- функцию besseli(alpha, X), если X — массив чисто мнимых чисел;
- функцию bessela(alpha, Z), если Z — массив комплексных чисел.
Примеры:
Функция besselj(3:9, (10:.2:20)’) генерирует таблицу размера 51 х 7, воспроизведенную на стр. 400 работы [1];
функция bessely(3:9,(10:.2:20)’) генерирует таблицу размера 51 х 7, воспроизведенную на стр. 401 работы [1];
функция besseli(3:9, [0:.2:9.8 10:.5:20], 1) генерирует таблицу размера 71 х 7, воспроизведенную на стр. 423 работы [1];
функция besselk(3:9, [0:.2:9.8 10:.5:20], 1) генерирует таблицу размера 71 х 7, воспроизведенную на стр. 424 работы [1].
Оценим точность вычисления функции Бесселя для разных значений alpha и x.
Abramovitz M., Stegun I. A. Handbook of Mathematical Functions. National Bureau of Standards, Applied Math. Series #55. Dover Publications, 1965.
BETA, BETACORE, BETAINC, BETALN — бета-функции
B = beta(p, q)
B = betacore(x, p, q)
I = betainc(x, p, q)
y = betaln(p, q)
Полная бета-функция B = beta(p, q) определяется следующим образом [2]:
Неполная бета-функция B = betainc(p, q) определяется так [2]:
Для ее вычисления используется вспомогательная функция betacore(x, p, q).
Функция y = betaln(p, q) представляет натуральный логарифм полной бета-функции B = beta(p, q). Поскольку бета-функция изменяется в широких пределах, знание ее логарифма может оказаться более предпочтительным. Вычисление функции ln(B) реализуется без вычисления функции beta(p, q).
Если p и q — массивы, то их размеры должны быть согласованы.
betaln(p, q) = gammaln(p) + gammaln(q) — gammaln(p + q)
beta(p, q) = exp(betaln(p, q))
Пример:
formt rar
beta((1:10)’, 3)
ans =
| 0/0 |
| 1/3 |
| 1/12 |
| 1/30 |
| 1/60 |
| 1/105 |
| 1/168 |
| 1/252 |
| 1/360 |
| 1/495 |
| 1/660 |
В данном случае при целочисленных аргументах
beta(n, 3) = (n — 1)! * 2!/(n + 2)! = 2/((n * (n + 1) * (n + 2))
и представляет собой отношение двух сравнительно небольших целых чисел, так что представление результата в формате format rat оказывается точным.
Для x = 510 betaln(x, x) = -708.8616, что для компьютеров с IEEE-арифметикой немного меньше, чем log(realmin) = -708.3964, так что при вычислении функции beta(x, x) следует проявлять осторожность.
- Abramovitz M., Stegun I. A. Handbook of Mathematical Functions. National Bureau of Standards, Applied Math. Series #55. Dover Publications, 1965.
- Корн Г., Корн Т. Справочник по математике для научных работников и инженеров. М.: Наука, 1968. 720 с.
ELLIPJ — эллиптические функции Якоби
[sn, cn, dn] = ellipj(m, phi)
функция j = am(z) называется амплитудой, функция sn(z) — синусом амплитуды, функция cn(z) — косинусом амплитуды, и dn(z) — дельтой амплитуды.
Эти эллиптические функции Якоби связаны между собой следующим образом [1, 2]:
sn(z) = sin( j ),
cn(z) = cos( j ),
dn(z) = (1 — m sn(z)) 1/2 .
Функция [sn, cn, dn] = ellipj(m, phi) вычисляет эллиптические функции Якоби sn, cn, dn для заданных значений m и phi, которые могут быть как скалярами, так и массивами, но обязательно одинаковых размеров.
Ограничения:
Входной параметр m должен принадлежать диапазону 0
- Abramovitz M., Stegun I. A. Handbook of Mathematical Functions. National Bureau of Standards, Applied Math. Series #55. Dover Publications, 1965.
- Корн Г., Корн Т. Справочник по математике для научных работников и инженеров. М.:Наука, 1968. 720 с.
ELLIPKE — полные эллиптические интегралы
K = ellipke(m)
[K, E] = ellipke(m)
Полные эллиптические интегралы первого и второго рода определяются следующим образом [1, 2]:
Ограничения:
Входной параметр m должен принадлежать диапазону 0
- Abramovitz M., Stegun I. A. Handbook of Mathematical Functions. National Bureau of Standards, Applied Math. Series #55. Dover Publications, 1965
- Корн Г., Корн Т. Справочник по математике для научных работников и инженеров. М.:Наука, 1968. 720 с.
ERF, ERFCORE, ERFC, ERFCX, ERFINV — функции ошибок
y = erf(x)
y = erfc(x)
y = erfcx(x)
x = erfinv(y)
Функция ошибки erf(x) определяется следующим образом [2]:
Функция y = erfc(x) задается соотношением
erfc(x) = = 1 — erf(x).
Функция y = erfcx(x) определяется так:
Для вычисления этих функций используется вспомогательная функция erfcore(x, n). При этом справедливо
erf(x) = erfcore(x, 0);
erfc(x) = erfcore(x, 1);
erfcx(x) = erfcore(x, 2).
Алгоритм основан на работе [1] и представляет собой переработанную с языка FORTRAN программу из раздела NETLIB/SPECFUN, написанную W. J. Cody (Argonne National Laboratory, March 19, 1990).
- Cody W. J. Rational Chebyshev approximations for the error function//Math. Comp., 1969. P. 631-638.
- Корн Г., Корн Т. Справочник по математике для научных работников и инженеров. М.:Наука, 1968. 720 с.
GAMMA, GAMMAINC, GAMMALN — гамма-функции
y = gamma(a)
y = gammainc(x, a)
y = gammaln(a)
Гамма-функция gamma(a) определяется следующим образом [2]:
Неполная гамма-функция gammainc(x, a) задается соотношением
gammainc(x, a) = P(x, a) = .
Логарифмическая гамма-функция определяется так:
gammaln(a) = ln G(a).
Алгоритм основан на работе [1] и представляет собой переработанную с языка FORTRAN программу из раздела NETLIB/SPECFUN, написанную W. J. Cody (Argonne National Laboratory, October 12, 1989).
- Cody W. J. An Overview of Software Development for Special Functions//Lecture Notes in Mathematics. Berlin, 1976. Vol. 506.
- Корн Г., Корн Т. Справочник по математике для научных работников и инженеров. М.:Наука, 1968. 720 с.
