Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Вычисление элементарных и специальных математических функций в MATLAB.



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

1. Функции Эйри

Функция Эйри формирует пару линейно независимых решений линейного дифференциального уравнения вида

Связь между функцией Эйри и модифицированной функцией Бесселя выражается следующей формулой:

где

airy(Z) — возвращает функцию Эйри, AKZ), для каждого элемента комплексного массива Z;

airy(k.Z) — возвращает различные варианты результата в зависимости от значения k:

k=0 — тот же результат, что и airy(Z);

k=l — производную от А1 (Z);

k=2 — функцию Эйри второго рода, 61 (Z):

k=3 — производную от B1(Z).

 

2. Функции Бесселя

Линейное дифференциальное уравнение второго порядка вида

где v — неотрицательная константа, называется уравнением Бесселя, а его решения известны как функции Бесселя. Функции Jv(z) и J_v(z) формируют фундаментальное множество решений уравнения Бесселя для неотрицательных значений п (это так называемые функции Бесселя первого рода): где для гамма-функции используется следующее представление:

Второе решение уравнения Бесселя, линейно независимое от Jv(z), определяется как и задает функции Бесселя второго рода Yv(z).

Функции Бесселя третьего рода (функции Ханкеля) и функция Бесселя первого и второго рода связаны следующим выражением:

 

bessel j(nu, Z) — возвращает функцию Бесселя первого рода, Jv(z), для каждого элемента комплексного массива Z. Порядок ш может не быть целым, однако должен быть вещественным. Аргумент Z может быть комплексным. Результат вещественный, если Z положительно. Если nu и Z — массивы одинакового размера, то результат имеет тот же размер. Если любая входная величина — скаляр, результат расширяется до размера другой входной величины. Если одна входная величина — вектор-строка, а другая — вектор-столбец, результат представляет собой двумерный массив значений функции.

bessely(nu.Z) — возвращает функцию Бесселя второго рода, Yv(z).

[J.ierr] = besse1j(nu, Z) и [Y.ierr] = bessely(nu.Z) функции всегда возвращают массив с флагами ошибок:

ierr = 1 — запрещенные аргументы;

ierr = 2 — переполнение (возвращает Inf);

ierr = 3 — некоторая потеря точности при приведении аргумента;

ierr = 4 — недопустимая потеря точности: Z или nu слишком велики;

ierr = 5 — нет сходимости (возвращает NaN).

 

3. Бета-функция и ее варианты

Бета-функция определяется как

где Г (z) — гамма-функция. Неполная бета-функция определяется по формуле

beta(Z.W) — возвращает бета-функцию для соответствующих элементов комплексных массивов Z и W. Массивы должны быть одинакового размера (или одна из величин может быть скаляром).

beta i nc ( X, Z, W ) — возвращает неполную бета-функцию. Элементы X должны быть в закрытом интервале [0, 1].

beta 1 п ( Z, W ) — возвращает натуральный логарифм бета-функции log ( beta ( Z, W ) ), без вычисления beta(Z.W). Так как сама бета-функция может принимать очень большие или очень малые значения, функция betaln(Z.W) иногда более полезна, так как позволяет избежать переполнения.

 

4. Эллиптические функции и интегралы

Эллиптические функции Якоби определяются интегралом и соотношениями

сn(u) = cos ф,

cn(u)=cosф,

dn(u) = (1-sin2ф)1/2,

аm(u) = ф.

В некоторых случаях при определении эллиптических функций используются модули k вместо параметра гл. Они связаны выражением k = т = sin a.

[SN.CN.DN] = ellipj(U.M) — возвращает эллиптические функции Якоби SN, CN и. DN, вычисленные для соответствующих элементов — аргумента U и параметра М. Входные величины U и М должны иметь один и тот же размер (или любая из них может быть скаляром).

[SN.CN.DN] = ellipj(U, M, to1) — возвращает эллиптическую функцию Якоби, вычисленную с точностью tol. Значение tol по умолчанию — eps; его можно увеличить, тогда результат будет вычислен быстрее, но с меньшей точностью.

 

5. Функции ошибки

Функция ошибки определяется следующим образом:

 

erf(X) — возвращает значение функции ошибки для каждого элемента вещественного массива X. Дополнительная (остаточная) функция ошибки задается соотношением

erfc(X) — возвращает значение остаточной функции ошибки.

erfcx(X) — возвращает значение масштабированной остаточной функции ошибки. Эта функция определяется так:

егfсх(х) = ех erfc(x).

erfinv(Y) — возвращает значение обратной функции ошибки для каждого элемента массива Y. Элементы массива Y должны лежать в области -1< Y< 1.

 

6. Интегральная показательная функция

Интегральная показательная функция определяется следующим образом:

expint(X) — возвращает интегральную показательную функцию для каждого

элемента X.

 

7. Гамма-функция и ее варианты

Гамма-функция определяется выражением

Неполная гамма-функция определяется как

gamma (А) — возвращает гамма-функцию элементов А. Аргумент А должен быть вещественным.

gamma iпс(X, А) — возвращает неполную гамма-функцию соответствующих элементов X и А. Аргументы X и А должны быть вещественными и иметь одинаковый размер (или любой из них может быть скалярным)

gammaln(A) —возвращает логарифмическую гамма-функцию, gammaln(A) = 1og(gamma(A)). Команда gammaln позволяет избежать переполнения, которое может происходить, если вычислять логарифмическую гамма-функцию непосредственно, используя 1og(gamma(A)).

 

М-сценарии

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

Пример

Следующие операторы вычисляют радиус-вектор rho для различных тригонометрических функций от угла theta и строят последовательность графиков в полярных координатах.

Строка комментария

% M-file petals - сценарий построения лепесткового графика

theta = -pi: 0.01: pi;

rho(1, : ) = 2*sin(5*theta).^2;

rho(2, : ) = cos(10*theta).^3;

rho(3, : ) = sin(theta).^2;

rho(4, : ) = 5*cos(3.5*theta).^3;

for i = 1: 4

polar (theta, rho(i, : ))

pause

end

Вычисления

Команды графического вывода

Создайте М-файл petals.m, вводя указанные выше операторы. Этот файл является сценарием. Ввод команды petals.m в командной строке системы MATLAB вызывает выполнение операторов этого сценария.

После того, как сценарий отобразит первый график, нажмите клавишу Return, чтобы перейти к следующему графику. В сценарии отсутствуют входные и выходные аргументы; программа petals.m сама создаёт переменные, которые сохраняются в рабочей области системы MATLAB. Когда выполнение завершено, переменные (i, theta и rho) остаются в рабочей области. Для того чтобы увидеть этот список, следует воспользоваться командой whos.

М-функции

М-функции являются M-файлами, которые допускают наличие входных и выходных аргументов. Они работают с переменными в пределах собственной рабочей области, отличной от рабочей области системы MATLAB.

Пример

Функция average - это достаточно простой M-файл, который вычисляет среднее значение элементов вектора:

function y = average (x)

% AVERAGE Среднее значение элементов вектора.

% AVERAGE(X), где X - вектор. Вычисляет среднее значение элементов вектора.

% Если входной аргумент не является вектором, генерируется ошибка.

[m, n] = size(x);

if (~((m == 1) | (n == 1)) | (m == 1 & n == 1))

error('Входной массив должен быть вектором’)

end

y =sum(x)/length(x); % Собственно вычисление

Попробуйте ввести эти команды в M-файл, именуемый average.m. Функция average допускает единственный входной и единственный выходной аргументы. Для того чтобы вызвать функцию average, надо ввести следующие операторы:

z = 1: 99;

average(z)

ans = 50

 


Поделиться:



Последнее изменение этой страницы: 2017-03-17; Просмотров: 848; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.032 с.)
Главная | Случайная страница | Обратная связь