Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция _8_Символьные вычисления ML.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
174.08 Кб
Скачать

Символьные вычисления в ml

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

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

Аналитические решения чаще удаётся получить для наиболее грубых (простых) моделей, и реже - для более точных сложных.

Тому, кто знаком с основами высшей математики, наверняка известны десятки правил нахождения пределов, взятия интегралов, нахождения производных и т.д. Если добавить к этому то, что для нахождения большинства интегралов нужно также помнить таблицу основных интегралов, то получается очень большой объем информации. И если какое-то время не тренироваться в решений подобных задач, то многое быстро забывается и для нахождения, например, интеграла посложнее придется уже заглядывать в справочники. Но ведь взятие интегралов и нахождение пределов в реальной работе не является главной целью вычислений. Реальная цель заключается в решении каких-либо проблем, а вычисления — всего лишь промежуточный этап на пути к этому решению.

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

Мы познакомились с вычислительными возможностями ML. Теперь рассмотрим символьные вычисления. Расчеты можно выполнять в символьном виде, т.е. расчеты, в которых используются символьные переменные, а в результате получают символьные (аналитические) выражения. Это обеспечиваются пакетом Symbolic Math Toolbox, который входит в систему ML.

К задачам, которые решаются в символьном виде, относятся

  • Аналитическое преобразование выражений

  • Построение графиков, заданных символьными функциями

  • Аналитическое решение линейных и нелинейных уравнений и систем

  • Решение систем дифференциальных уравнений

  • Вычисление пределов, производных, интегралов

  • Разложение функций в ряд и др.

Основой аналитических вычислений являются символьные переменные.

Значения символьным переменным не присваивается. Значением символьных переменных являются их названия.

Символьные переменные предварительно необходимо объявить. Они определяются с помощью команды

syms <имя1> <имя2>….

В символьном виде удобно задавать функции и выражения. Для этого аргументы функции надо объявить как символьные. Например, объявим две символьные переменные:

>> syms x y

Затем на основе этих переменных зададим значение переменной f

>> f=sin(2*x)

f =

sin(2*x)

Теперь эту функцию можно использовать, например в команде ezplot(f, [-2*pi 2*pi]) при построении графика функции.

Построим еще одно выражение

>> g=x+y

g =

x+y

На основе одних выражений можно строить другие

>> f1=f / g

f1 =

sin(2*x)/(x+y)

Для объявления символьных переменных и создания функций и выражений (символьную функцию можно создать и без предварительного объявления) можно использовать функцию sym (), например,

>> d=sym('(a+b)/(2*a)')

d =

(a+b)/(2*a)

>> b=0.2

b =

0.2000

>> c=sym (b) % Аналитическое представление в виде рац.дроби

c =

1/5

>> s=sym ('3/5')+sym ('2/7')

s =

31 / 35 % Результат символьный

Существует возможность получить более естественный вид выражения (в математическом виде) в данном случае в виде дроби:

>> pretty(s)

31

--

35

Для преобразования символьного числового выражения в формат с плавающей точкой используется функция vpa () – её результат тоже символьный, но с ним можно выполнять арифметические действия

>> s1= vpa (s)

s1 =

.88571428571428571428571428571429

>> s1= vpa (s, 6) % 2-й параметер – количество значащих цифр в дробной части числа

s1 =

.885714

>> k=vpa(s1+2,4)

k =

4.886