
- •Лабораторная работа № 1 основы программирования в пакете прикладных программ matlab
- •1. Использование matlab в качестве научного калькулятора
- •1.1. Операции с числами
- •1.1.1. Ввод действительных чисел
- •1.1.2. Простейшие арифметические действия
- •1.1.3. Ввод комплексных чисел
- •1.1.4. Элементарные математические функции
- •1.1.5. Специальные математические функции
- •1.1.6. Элементарные действия с комплексными числами
- •1.1.7. Функции комплексного аргумента
- •1.2 Простейшие операции с векторами и матрицами
- •1.2.1. Ввод векторов и матриц
- •1.2.2. Формирование векторов и матриц
- •1.2.3 Действия над векторами
- •1.2.4 Поэлементное преобразование матриц
- •1.2.5 Матричные действия над матрицами
- •1.3 Функции прикладной численной математики
- •1.3.1. Операции с полиномами
- •2. Программирование в среде MatLab
- •2.1 Операторы цикла и условные операторы
- •If условие
- •If условие
- •2.2 Ввод исходных данных и вывод результатов
- •3. Графика
- •4. Создание м-файлов
- •4.1. Особенности создания м-файлов
- •4.2. Основные особенности оформления м-файлов
- •4.3 Создание функциональных файлов
- •4.3.1 Общие требования к построению
1.3 Функции прикладной численной математики
1.3.1. Операции с полиномами
В системе MatLAB предусмотрены некоторые дополнительные возможности математического оперирования с полиномами. Полином (многочлен) как функция определяется выражением:
P(x)= a n · x n +... +a2 ·x2+ a1 ·x+ a0
В системе MatLAB полином задается и сохраняется в виде вектора, элементами которого являются коэффициенты полинома от an до a0 в указанном порядке:
P = [an ... a2 a1 a0 ] .
Введение полинома в MatLAB осуществляется так же, как и ввод вектора длиной n+1, где n - порядок полинома.
Умножение полиномов. Произведением двух полиномов степеней n и m соответственно, как известно, называют полином степени n+m, коэффициенты которого определяют простым перемножением этих двух полиномов. Фактически операция умножения двух полиномов сводится к построению расширенного вектора коэффициентов по заданным векторам коэффициентов полиномов-сомножителей. Эту операцию в математике называют сверткой векторов (а сам вектор, получаемый в результате такой процедуры - вектором-сверткой двух векторов). В MatLAB ее осуществляет функция conv(P1, P2).
Аналогично, функция deconv(P1, P2) осуществляет деление полинома P1 на полином P2, т. е. обратную свертку векторов P1 и P2. Она определяет коэффициенты полинома, который является частным от деления P1 на P2.
Пример:
» p1 = [1,2,3]; p2 = [1,2,3,4,5,6];
» p = conv(p1,p2)
p = 1 4 10 16 22 28 27 18
» deconv(p,p1)
ans = 1 2 3 4 5 6
В общем случае деление двух полиномов приводит к получению двух полиномов - полинома-результата (частного) и полинома-остатка. Чтобы получить оба этого полинома, следует оформить обращение к функции таким образом:
[Q,R] = deconv(B,A) .
Тогда результат будет выдан в виде вектора Q с остатком в виде вектора R таким образом, что будет выполненное соотношение
B = conv(A,Q) + R.
Система MatLAB имеет функцию roots(P), которая вычисляет вектор,элементы которого являются корнями заданного полинома Р.
Пусть нужно найти корни полинома:
P(x) = x5 + 8x4 + 31x3 + 80x2 + 94x + 20.
Ниже показано, как просто это сделать:
» p = [1,8,31,80,94,20]; » disp(roots(p))
-1.0000 + 3.0000i
-1.0000 - 3.0000i
-3.7321
-2. 0000
-0. 2679
Обратная операция - построение вектора р коэффициентов полинома по заданному вектору его корней - осуществляется функцией poly: p = poly(r).
Здесь r - заданный вектор значений корней, p - вычисленный вектор коэффициентов полинома. Приведем пример:
» p = [1,8,31,80,94,20]
p = 1 8 31 80 94 20
» r = roots(p)
r =
-1.0000 + 3.0000i
-1.0000 - 3.0000i
-3.7321
-2. 0000
-0. 2679
» p1 = poly(r)
p1 =8. 0000 31. 0000 80. 0000 94. 0000 20. 0000
Заметим, что получаемый вектор не показывает старшего коэффициента, который по умолчанию полагается равным единице.
2. Программирование в среде MatLab
2.1 Операторы цикла и условные операторы
Организация циклов в Matlab осуществляется с помощью операторов for и while. Оператор цикла for обеспечивает повтор группы команд,заключенных между операторами for и end,заданное число раз. Например, последовательность команд:
y=zeros(1,m); % предварительное обнуление вектора y
for
i=1:m;
j=1:i;
fact=prod(j);
y(i)=x.^i/fact;
end;
y=y
позволяет сформировать m-мерный вектор y ,каждый i-ый элемент которого определяется выражением y(i)=x^i/i!, i=1,2,...,m.
Циклы могут быть вложенными, при этом каждый оператор for должен быть согласован с оператором end.
Цикл while дает возможность повторять группу операторов до тех пор, пока выполняется логическое условие. Последнее задается логическими операторами вида:
< меньше чем ;
<= меньше или равно;
> больше чем;
=> больше или равно ;
== равно ;
~= не равно .
Окончанием действия оператора while служит end.
Например, последовательность команд y=zeros(1,m);
i=1;
while i < m
j=1:i;
y(i)=x.^i/prod(j);
i=i+1;
end ;
y=y
позволяет вычислить описанный выше m-мерный вектор y.
Конструкция условного выражения в общем случае имеет вид: