- •2. Matlab.
- •2.9. Символьные вычисления в Matlab.
- •2.9.1. Символьные переменные и функции [1, с. 751].
- •2.9.2. Матрицы и векторы.
- •2.9.3. Вычисления с символьными переменными.
- •2.9.4. Графическое представление функций.
- •2.9.5. Упрощение и преобразование символьных выражений [1, с. 760].
- •2.9.6. Другие возможности символьных преобразований в matlab.
- •2.9.6.1. Численное вычисление интегралов в Matlab.
- •2.9.7.Решение уравнений и систем в символьном виде.
- •2.10. Интерактивное взаимодействие м-функиий с пользователем [2, с. 185].
- •2.11. Работа со строками [1, с. 386].
- •2.11.1. Ввод и сцепление строк.
- •2.11.2. Сервисные функции для работы со строками.
- •2.11.3. Массивы строк.
- •2.11.4. Еще некоторые функции для работы со строковыми переменными.
- •2.11.5. Структуры.
- •2.12. Текстовые файлы [1, с. 392].
2.9.6. Другие возможности символьных преобразований в matlab.
Разложение математических функций в ряд Тейлора позволяет проделать функция taylor, например:
» f = sym( '1/ (1 + х) ') ;
» tf = taylor (f ) ;
» pretty(tf)
2 3 4 5
1 - X + X - X + X - X
По умолчанию выводится шесть членов ряда разложения в окрестности точки ноль. Число членов разложения можно задать во втором дополнительном параметре taylor. Третий параметр указывает, по какой из переменных следует производить разложение в том случае, когда символьная функция определена от нескольких переменных [1, с. 767].
Нахождение символьных выражений для сумм, в том числе и бесконечных, позволяет осуществить функция symsum. Обращение к symsum в общем виде предполагает задание четырех аргументов: слагаемого в символьной форме, зависящего от индекса, самого индекса и верхнего и нижнего предела суммы [1, с. 768].
Ряд функций Symbolic Math Toolbox предназначен для решения задач дифференциального и интегрального исчисления. Функция limit находит предел функции в некоторой точке, включая и плюс или минус бесконечность. Первым входным аргументом limit является символьное выражение, вторым— переменная, а третьим— точка, в которой разыскивается предел [1, с. 769].
Возможность определения производной через предел позволяет применять limit для дифференцирования функций. Например, если для определения первой производной функции arctg(x) применить выражение
;
то в MATLAB
можно
записать:
» syms h x
» L = limit ( (atan(x + h) - atan (x) ) /h, h, 0) ;
» pretty(L)
.
Вычисление производных любого порядка проще производить при помощи функции diff. Символьная запись функции указывается в первом входном аргументе, переменная, по которой производится дифференцирование — во втором, а порядок производной — в третьем :
» Р = diff('atan(x)', х, 1);
» pretty(P)
.
Для исследования скорости роста функций можно использовать файл-функцию tangent. Входными аргументами tangent являются строка с символьным представлением функции одной переменной х и числовое значение абсциссы точки, в которой следует провести касательную. Файл-функция tangent выводит в одно графическое окно графики функции и касательной к ней в заданной точке [1, с. 771].
Символьное интегрирование является значительно более сложной задачей, чем дифференцирование. Symbolic Math Toolbox позволяет работать как с неопределенными интегралами, так и с определенными. Неопределенные интегралы от символьных функций вычисляются при помощи int, в качестве входных аргументов указываются символьная функция и переменная, по которой происходит интегрирование, например:
» syms х
» f = sym('х^3*ехр(х)');
» I = int(f, x)
I =
x^3*ехр(х) - 3*x^2*exp(x) + 6*x*exp(x) - 6*exp(x)
» pretty(I) % степени выводятся в отдельной строке и могут быть не на месте
x3 exp(x) - 3 x2 exp(x) + 6х exp(x) — 6 exp(x) .
Проверка дифференцированием полученной первообразной:
» diff (I, х, 1)
ans =
х^3*ехр(х) .
Функция int не всегда может выполнить интегрирование. В некоторых случаях int возвращает выражение для первообразной через специальные функции. Например, если необходимо получить значение интеграла
,
то
результат будет иметь следующий вид:
» syms x
» f = sym( 'exp(sin(x)^2)*cos(x) ' ) ;
» I = int(f, x);
» pretty(I)
-1/2 i pi1/2 erf(i sin(x)) .
Ответ содержит так называемую функцию ошибки, которая определяется интегралом с переменным верхним пределом:
.
Кроме того, в полученное выражение входит комплексная единица, хотя подынтегральная функция вещественна. Требуются дополнительные преобразования для достижения окончательного результата. Функции simple и simplify не смогут упростить данное выражение.
Для нахождения определенного интеграла в символьном виде следует задать нижний и верхний пределы интегрирования, соответственно, в третьем и четвертом аргументах int:
» syms x a b
» f = sym('(x^3 + 1)/(х - 1)');
» I = int (f, x, a, b) ;
» pretty(I)
1/3 b3 + 1/2 b2 + b + 2 log(b – 1) - 1/3 a3 - 1/2 a2 - a - 2 log (a - 1)
Двойные интегралы вычисляются повторным применением функции int.
Аналогичным образом в символьном виде вычисляются любые кратные интегралы [1, с. 775].
