
Тема 7. Простейшие вычисления
Цель работы: В заданиях рассматриваются основные приемы работы с программой MATLAB: как выполнить простейшие вычисления, вводить переменные, матрицы и комментарии.
Простейшие вычисления
Сначала вычислим простое математическое выражение.
Наберите на клавиатуре выражение 9*45.
Н
ажмите
клавишу Enter . В окне программы появится
результат вычислений (рис.4).
Рис.4.
Вычисление простого выражения
Обратите внимание, что ввод данных предваряется значком >>. В переменной ans хранится результат последней операции. Если указанная переменная со значением результатов вычислений, то имя переменной ans на экране не отображается.
Теперь присвоим переменной значение:
Введите имя переменной x.
Нажмите клавишу =, чтобы начать присваивания переменной.
Введите число 1, которое нужно присвоить.
Нажмите клавишу Enter. Переменной x будет присвоено число 1, а в окне программы появится значение переменной.
Введите строку x=2;. Точка с запятой означает, что результаты вычисления формулы на экран выводиться не будут.
Нажмите клавишу Enter. Переменной x будет присвоено новое значение, но на экране ничего отображаться не будет.
Выведем значение переменной на экран:
Введите имя переменной x.
Нажмите клавишу Enter. В окне программы появится значение переменной 2.
Чтобы присвоить переменной вектор, выполните следующие шаги:
Введите строку A= [1 2 3]; , чтобы присвоить значения переменной А вектор из трех элементов 1, 2 и 3.
Обратите внимание, что элементы вектора разделяются пробелами, а весь список элементов заключается в квадратные скобки.
Нажмите клавишу Enter. Переменной А будет присвоен введенный вектор.
При создании матрицы необходимо иметь в виду, что ее строчки разделяются точкой с запятой. Попробуем ввести матрицу:
Наберите на клавиатуре строку B=[1 2; 3 4], чтобы присвоить матрицу из двух строчек и двух столбцов.
Н
Рис.5.
Ввод
матрицы
Для задания вектора, элементы которого меняются с определенным шагом надо:
Введите строку 1:3, чтобы составить вектор, в котором начальный элемент равен 1, конечный – 3, а промежуточные отличаются на единицу.
Нажмите клавишу Enter. В окне программы появится вектор из трех элементов: 1, 2 и 3.
Введите в строку 8:-1:6, чтобы создать вектор, в котором начальный элемент равен 8, конечный – 6, а промежуточные элементы отличаются на -1.
Нажмите клавишу Enter. В окне программы появится вектор из трех элементов: 8, 7 и 6.
Текстовые комментарии позволяют пояснять математические вычисления:
Наберите на клавиатуре строку %Комментарий. Символ % означает ввод комментария.
Нажмите клавишу Enter, чтобы закончить ввод комментария.
Операции с матрицами
Программа MATLAB основана на работе с матрицами, причем даже числа рассматриваются как матрицы единичного раз мера
При использовании матрицы в качестве аргумента функции будет вычисляться значения для каждого элемента матрицы. Найдем квадратный корень созданной матрицы В:
Введите строку C = sqrt(B). Встроенная функция sqrt вычисляет квадратный корень своего аргумента.
Н
ажмите
клавишу Enter. В окне программы появится
матрица, которая получена из В поэлементным
вычислением квадратного корня (рис.6).
Чтобы указать элемент матрицы, нужно в круглых скобках через “, ’’ ввести индексы элемента. Строки и столбцы в индексах нумеруются с единицы:
Наберите на клавиатуре строку B(2,2), для указания элемента матрицы B, расположенного во второй строке и втором столбце.
Нажмите клавишу Enter. В окне программы появится значение указанного элемента 4.
Присвоим элементу матрицы новое значение:
Введите строку C(1,1)=2;, Чтобы присвоить элементу матрицы С, расположенному в первой строке и первом столбце, число 2.
Нажмите клавишу Enter. Указанный элемент матрицы примет новое значение.
При использовании арифметических операций с матрицами как с едиными объектами данные операции записываются в их привычном представлении. Попробуем умножить две матрицы:
Введите строку D=B*C для умножения матриц B и С.
Нажмите клавишу Enter. В окне программы появится результат умножения матриц (рис. 7.).
Рис.7.
Умножение матриц
В математических расчетах иногда нужно выполнить операции поэлементно, например перемножить соответствующие элемент матриц. Для проведения поэлементных вычислений перед арифметическими операциями нужно ставить точку. Для поэлементного перемножения двух матриц надо:
Введите строку E=B.*C для поэлементного умножения матриц В и С.
Н
ажмите
клавишу Enter. В окне программы появится
результат вычислений (рис. 8).
Рис.8.
Поэлементное умножение матриц
Обратите внимание, что результаты умножения и поэлементного умножения матриц отличаются.
При построении трехмерных поверхностей часто необходимо преобразовать вектор в матрицу:
Нажмите клавишу Enter. Переменной V будет присвоен вектор.
Наберите на клавиатуре строку [X,Y]=meshgrid(V). Встроенная функция meshgrid формирует матрицу Х, в которой все строки совпадают с вектором V, и матрицу Y со столбцами, совпадающими с V.
Обе матрицы Х и Y будут квадратными. Нажмите Enter. В окне программы появятся формированные матрицы (рис.9).
Рис.9.
Преобразование вектора в матрицы
Построение графиков и диаграмм
Построим график функции:
Введите строку х=0.1:0.01:10; чтобы определить диапазон изменения аргумента на графике функции.
Нажмите клавишу Enter.
Наберите на клавиатуре строку y=sin(x);, чтобы присвоить переменной y вектор значений функции sin по всем элементам x.
Нажмите клавишу Enter для завершения присваивания.
Введите строку plot(x,y);. Встроенная функция plot (График) строит график функции y(x) в декартовой системе координат. Фактически данная функция строит график функции по парам элементов векторов (x,y).
Нажмите клавишу Enter. На экране появится окно с графиком указанной функции (рис. 10).
Обратите внимание, что на горизонтальной и вертикальной осях отображаются диапазоны изменения аргумента и функции.
Щелкните
мышью на кнопке
в правом верхнем углу окна с графиком,
чтобы закрыть окно.
Рис.
10. График функции
Теперь построим диаграмму:
Введите стоку x=[1 4 2 3]; , чтобы ввести вектор, по которому будем стоить диаграмму.
Нажмите клавишу Enter.
Наберите на клавиатуре строку bar(x);, встроенная функция bar (Область) строит диаграмму, столбики которой определяются элементами вектора х.
Нажмите клавишу Enter. На экране появится окно с диаграммой вектора (рис.11).
Щ
елкните
мышью на кнопке
в правом верхнем углу окна с диаграммой,
чтобы закрыть окно.
Рис.
11. Диаграмма вектора
Решение системы линейных уравнений
Решим систему уравнений x +2y=3, 4x+5y=6:
Введите строку А=[1 2; 4 5]; ,определяющую матрицу коэффициентов системы линейных уравнений
Нажмите клавишу Enter.
Наберите на клавиатуре строку B=[3;6] , задающую вектор свободных членов системы уравнений.
Нажмите клавишу Enter.
Введите строку C=inv(A)*B. В соответствии с методом Гаусса решение системы линейных уравнений определяется умножением обратной матрицы коэффициентов на вектор свободных членов.
Н
ажмите
клавишу Enter. В окне программы появится
решение введенной системы уравнений
(рис. 13).
Рис.
13. Решение системы линейных уравнений
Следует отметить, что системы линейных уравнений можно решать разными методами. Например, функция nnls позволяет решать системы уравнений методом наименьших квадратов с ограничениями.
Поиск минимума функции
При оптимизации функции необходимо указать интервал, в котором находится минимум функции. Этот интервал необходимо определить по графику функции. Сначала построим график функции cos(x)/x, подлежащей минимизации:
Введите строку х=1:0.2:20;,чтобы определить диапазон изменения аргумента функции при построении графика.
Нажмите клавишу Enter.
Наберите на клавиатуре строку y =cos(x)./x; для задания функции описывающей график.
Нажмите клавишу Enter.
Введите строку plot(x,y); для построения графика функции.
Н
ажмите
клавишу Enter. На экране появится окно с
необходимым графиком (рис.14).
Рис.
14. График функции для поиска минимума
По графику можно заметить, что минимум функции расположен в интервале между 2 и 5.
Щелкните мышью на кнопке в правом верхнем углу окна с графиком, чтобы закрыть окно.
Теперь найдем минимум функции:
Наберите на клавиатуре строку z=fmin(‘cos(x)./x’,2 ,5). Встроенная функция fmin вычисляет минимум выражения cos(x)./x в интервале от 2 до 5.
Н
ажмите
клавишу Enter.В окне программы появится
обнаруженный минимум функции (рис.15).
Рис.
15. Минимизация функции
Поиск корня нелинейного уравнения
Необходимо найти корень уравнения 0.5*х+ cos(x)-1=0. При решении уравнения в программе MATLAB нужно задать приближенное значение корня, которое легко определить по графику. Давайте построим график нелинейной функции, представляющей уравнение.
Введите строку х=0.1:0.1:5; чтобы определить диапазон изменения аргумента функции при построении графика.
Нажмите клавишу Enter.
Наберите на клавиатуре строку y =0.5*х+cos(x)-1; для задания функции описывающей график.
Нажмите клавишу Enter.
Введите строку plot(x,y); для построения графика функции.
Н
ажмите
клавишу Enter. На экране появится окно с
необходимым графиком (рис.16).
Рис.
16. График функции для поиска корня
По графику можно заметить, что один из корней уравнения y(x)=0 расположен поблизости от x=4.
Щелкните мышью на кнопке в правом верхнем углу окна с графиком, чтобы закрыть окно.
Найдем корень уравнения:
Наберите на клавиатуре строку z=fzero(‘0.5*х+cos(x)-1’,4). Встроенная функция fzero определяет значение х, при которой функция 0.5*х+cos(x)-1 обращается в 0, при начальном значении поиска х=4.
Нажмите клавишу Enter. В окне программы появится значение корня указанного уравнения (рис.17).
Рис.
17. Корень нелинейного уравнения
Численное интегрирование
строку х=0:0.01:1; , чтобы определить диапазон интегрирования функции.
Нажмите клавишу Enter.
Наберите на клавиатуре строку y =cos(x).*x; для задания функции интегрирования.
Нажмите клавишу Enter.
Введите строку z=trapz(x,y); . Встроенная функция trapz интегрирует функцию y(x) методом трапеции.
Н
ажмите
клавишу Enter. В окне программы появится
результат интегрирования введенной
функции (рис.18).
Рис.
18. Численное интегрирование функции
Для интегрирования с использованием квадратных формул следует воспользоваться встроенной функцией quad. С помощью функции dblquad можно вычислять двойной интеграл.
Создание новых функций
В программе MatLab новые функции нужны не только для упрощения математических расчётов. Например, при решении дифференциальных уравнений не обойтись без создания и использования новых функций.
Новые функции должны быть записаны в специальные файлы с расширением m , которые называются М-файлами. Функции в данных файлах автоматически подключаются к программе MatLab. Чтобы создать новую функцию, выполните следующие шаги:
Н
ажмите
кнопку на панели инструментов. На экране
появится окно редактора М-файлов.
Введите строку function z=differ(x,y). Ключевое слово function (Функция) объявляет новую функцию differ с параметрами x и y.
Нажмите клавишу Enter.
Наберите на клавиатуре строку z=cos(x*x)-y; , которая задаёт новую функцию.
Наберите на клавиатуре диалог Сохранить как … . В поле ввода Имя файла отображается имя созданной функции differ.
Нажмите кнопку Сохранить.
Щ
ёлкните
мышью на кнопке .
Решение дифференциальных уравнений
Решим дифференциальное уравнение y’(x)+y(x)=cos(x*x).
Создайте новую функцию из двух строк:
Function z=differ(x, y)
z=cos(x, y)-y;
Созданная функция определяет необходимое для решения дифференциальное уравнение, т.е. y’(x)= differ(x, y)
Введите строку [х,y]=ode23(‘differ’,0:0.01:5, 0); . Встроенная функция ode23 методом Рунге-Кутта решает дифференциальное уравнение, представленное функцией differ, на интервале интегрирования 0:0.01:5 с начальным условием y(0)=0. В левой части строки находятся векторы аргумента х и решения уравнения y.
Нажмите клавишу Enter, чтобы найти решение дифференциального уравнения.
Теперь представим полученное решение в графическом виде.
Введите строку plot(x,y); для построения графика решения.
Нажмите клавишу Enter. На экране появится окно с необходимым графиком (рис.19).
Рис.
19. График решения дифференциального
уравнения