Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб. р. СИМВОЛЬНЫЕ ВЫЧИСЛЕНИЯ в MatLab ( ППО МК...doc
Скачиваний:
5
Добавлен:
21.09.2019
Размер:
311.3 Кб
Скачать

3

МИНОБРНАУКИ РОССИИ

Филиал государственного образовательного учреждения высшего профессионального образования

«САМАРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

в г. Сызрани

Кафедра «Электротехника, информатика и компьютерные технологии»

СИМВОЛЬНЫЕ ВЫЧИСЛЕНИЯ В MatLab

Методические указания к лабораторной работе

Составитель: Дремов Ф.В.

Утверждено на заседании кафедры электротехники, информатики и компьютерных технологий 31.03.11

СЫЗРАНЬ 2011

Лабораторная работа

СИМВОЛЬНЫЕ ВЫЧИСЛЕНИЯ В MatLab

Цель работы: приобретение навыков символьных вычислений в MatLab.

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

В систему MatLab 7 входит пакет расширения Symbolic Math Toolbox 3.1, который базируется на библиотеке процедур, являющейся ядром символьной математической системы Mapl 9, лидирующей в области автоматизации аналитических решений. Пакет Symbolic Math Toolbox придает системе MatLab новые качества системы аналитических вычислений, которые по общности результатов и точности вычислений часто превосходят численные вычисления. В MatLab существует также возможность напрямую обращаться к функциям ядра Mapl и вызывать процедуры, написанные на встроенном языке этой системы.

Основные сведения о символьных вычислениях

1. Создание символьных переменных, выражений и матриц

Для создания символьных переменных используется функция sym (sym-символ)

Синтаксис: Имя_переменной = sym (‘имя_переменной’)

П р и м е р 1.

>> x = sym(‘x’)

x =

x

>> a = sym(‘alpha’)

a =

alpha

>>

Для задания нескольких переменных используют функцию syms

>> syms a b c

>>

Задание комплексной переменной

>> syms x y real

z = x + i * y

Создание символьных выражений

>> sym (‘символьное_выражение’)

П р и м е р 2.

>> f = sym (‘a * x^z + b * x + c’) % Всё выражение – единая переменная

Чтобы изменять коэффициенты используют другое задание символьного выражения:

>> syms a b c x

>> f = a * x^z + b * x + c

f =

a * x^z + b * x + c

Создание абстрактной функции

>> f = sym(‘f(x)’)

f =

f(x)

Далее созданную абстрактную функцию можно использовать для создания новых функций. Например, для создания функции df возвращающей значение первой производной необходимо выполнить команды

>> df = (subs(f, ‘x’ , ‘x + h’) - f) / ‘h’ % subs –функция с помощью которой

% осуществляется табуляция функции

df =

(f(x + h) – f(x)) / h % функция df – единая переменная

Для того чтобы иметь возможность менять значения x и h необходимо выполнить команды:

>> syms x h

>> df = (subs(f, x, x + h) - f) / h

df =

(f(x + h) – f(x)) / h

П р и м е р 3. Функция возвращающая значение факториала

>> kfac = sym(‘k!’)

>> syms k n

>> subs (kfac, k, 6), subs(kfac, r, n) % 6!, n!

ans =

720

ans =

n!

Для создания символьной матрицы сначала создаются символьные переменные являющимися элементами матрицы, а потом сама матрицы

П р и м е р 4.

>> syms a b c

>> A = [ a b c ; b c a ; c a b]

A =

[ a b c ]

[ b c a ]

[ c a b ]

Далее с символьной матрицей можно выполнять различные операции.

П р и м е р 5.

- Суммирование по строке

>> sym(A(1, :))

ans =

a + b + c

- Замена переменной b на переменную d

>> A = subs(A , b, d)

A =

[ a, d, c ]

[ d, c, a ]

[ c, a, d ]

2. Вычисление пределов и производных

Пределы вычисляются с помощью функции

limit (f, x, x0),

где f – функция предел которой находится,

x – аргумент функции f,

x0 – предельные значения x.

П р и м е р ы 1, 2, 3, 4, 5:

Найти пределы функций:

1) y1 = при

>> syms x;

>> limit(sin(x)/x, x, 0)

ans =

1

2) y2 = при

>> limit((1 – exp(-x)) ./x, x, inf) % inf - бесконечность

ans =

0

3) y3 = при

>> limit((1 - x) ./log(x), x, 1)

ans =

-1

4) ; ,

>> syms x

>> limit(1/(1 - x), x, 1, ‘left’)

ans =

inf

5) ;

>> syms x

>> limit(1 / (1 - x), x, 1, ‘right’)

ans =

–inf

Производные находятся с помощью функции diff (f, x, n),

где f – дифференциальная функция,

x – аргумент,

n – порядок производной.

Порядок вычисления производной:

1) Ввод дифференцирумой функции f

2) Ввод функции diff (f, x, n) с конкретными значениями x и n

3) Enter – решение.

П р и м е р 6.

Найти первую и третью производные функции

>> syms x n

>> y = x * cos(x);

>> diff (y, x)

ans =

- sin(x) *x + cos(x)

>> diff (y, x, 3)

ans =

sin(x) * x – 3 * cos(x)

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

П р и м е р 7.

>> syms a x;

>> y = [ x * sin(x); x^5; exp(a + x) ];

>> diff (y, x)

ans =

cos(x) * x + sin(x)

5 * x^4

a * exp(a * x)