Работа в MATLAB

advertisement
Кафедра алгебры и математической логики КФУ
Работа в MATLAB
Материалы к практике по компьютерным наукам – 1 семестр (механики)
М.Ф. Насрутдинов
20.10.2010
Оглавление
Запуск программы............................................................................................................................. 3
Работа в режиме калькулятора. .................................................................................................... 3
Работа в программном режиме. ................................................................................................... 3
Простейшие арифметические операции и элементарные функции............................................ 3
Построение графиков и диаграмм.................................................................................................... 4
Функция plot(). ............................................................................................................................... 4
Функция polar(phi, r) ...................................................................................................................... 4
Параметры линии. ......................................................................................................................... 5
Трехмерная графика. ..................................................................................................................... 5
Движение точки:............................................................................................................................ 6
Графики функций, заданных неявно fplot, ezplot, ezsurf. ........................................................... 6
Символьные вычисления .................................................................................................................. 7
Вычисление пределов. .................................................................................................................. 7
Вычисление неопределенного интеграла .................................................................................... 7
Вычисление суммы........................................................................................................................ 7
Символьное дифференцирование................................................................................................ 8
Разложение в ряд Тейлора............................................................................................................ 8
Решение уравнений....................................................................................................................... 8
Работа с матрицами .......................................................................................................................... 9
Численные методы ........................................................................................................................... 9
Численное интегрирование .......................................................................................................... 9
Нахождение корней уравнений .................................................................................................... 9
Корни полинома ............................................................................................................................ 9
Элементы программирования ........................................................................................................ 11
Цикл for ........................................................................................................................................ 11
Создание структур ....................................................................................................................... 13
Создание и работы с файлами .................................................................................................... 13
2
Запуск программы
Работа в режиме калькулятора.
Пользователь вводит выражение, которое надо вычислить (исполнить) в
командное окно, нажимает клавишу <ENTER> и сразу получает результат.
Чтобы повторно выполнить (или отредактировать) ранее введенные команды
можно воспользоваться клавишами <↑> и <↓> или окном истории команд (Command
History).
Работа в программном режиме.
Пользователь создает текстовый файл с расширением .m, содержащий набор
инструкций на языке системы MATLAB. После этого пользователь вводит имя файла в
командном окне и просматривает результат работы программы.
Простейшие арифметические операции и элементарные функции.
возведение в степень
^
сложение и вычитание
+и-
умножение и деление
*и /
натуральный логарифм
log()
десятичный
log10()
тригонометрические функции (аргументы в радианах)
sin(), cos(), tan(), cot(), asin(), acos()
e в степени x
exp(x)
мнимая единица
I или j
число π
pi
3
Построение графиков и диаграмм
Система MATLAB обладает мощными графическими возможностями,
позволяющими строить графики на плоскости и графики поверхностей.
Функция plot().
Основной функцией для построения графиков вида y=f(x), a≤x≤b является функция
plot(). Параметрами функции являются векторы одинаковой размерности. График
строится по таблице функции, аргументами которой являются элементы первого вектора,
а значениями – элементы второго. Если x=[x1, x2, …, xn], y=[y1, y2, …, yn ], то plot(x,y) строит
график функции y=f(x), у которой yi=f(xi), на отрезке [x1,xn].
Первый вектор можно опустить. Тогда по умолчанию считается, что xi=i.
Для построения графика функции от одной переменной необходимо задать вектор
значений аргумента, вычислить вектор соответствующих значений функций, задать оба
вектора в качестве значений функции plot().
Пример 1. Построить график функции y=sin(x) на отрезке [0,2π].
Решение. Задаем вектор значений. Для этого воспользуемся оператором
двоеточия (:), служащим для формирования диапазонов числовых значений. Здесь 0.1 –
шаг разбиения отрезка.
>> x=0:0.1:2*pi
Вычисляем вектор значений функции (функция sin применяется поэлементно ко
всем элементам вектора x):
>>y=sin(x)
Рисуем график
>>plot(x,y)
Функция polar(phi, r)
Служит для построения графиков вида r=r(ψ), a≤ψ≤b в полярной системе
координат.
4
Пример 2. Построить график функции r= t2 на отрезке [0,20] (в полярной системе).
Решение.
>>t=0:0.1:20; r=t.^2; polar(t,r)
Обратите внимание на операцию поэлементного возведения в степень (.^).
Аналогично применяются операции поэлементного сложения (.+), деления (./), вычитания
(.-). Это связано с тем, что существуют обычные операции сложения, вычитания (и т.п.)
векторов.
Параметры линии.
Можно задать параметры линии, которой рисуется график. Параметры задаются в
виде текстовой строки вида ‘go-’.
>>t=0:0.1:20; r=t.^2; polar(t,r, ‘go-’)
Первая буква означает цвет (зеленый), вторая тип маркера (на линии будут
кружки), третья тип линии (- означает сплошная).
Возможные значения:
Цвет: красный (r), желтый (y), зеленый (g), синий (b), черный (k), белый (w). Тип
маркера: точка(.), кружок(o), квадрат(s), треугольник(^), звездочка(*). Тип линий:
сплошная(-), штриховая(--), пунктирная(:), штрих-пунктирная(-.).
Трехмерная графика.
Для построения линий используются plot3(x,y,z), meshc(), surf(),
contour();contour3();contourf().
Для построения поверхностей сначала надо воспользоваться функцией meshgrdid()
для построения матрицы значений, а затем plot3d() или mesh().
Пример 3. Построить z=2x ex-y на отрезке -2<x,y<2.
>>x=-2:0.1:2; [X,Y]=meshgrid(x); Z=2*X.*exp(x-y); mesh(X,Y,Z)
5
Пример 4. Сфера.
t=0:0.1:7; s=0:0.1:2; [A,B]=meshgrid(t,s);
X=sin(A).*(sin(B)); Y=cos(A).*(sin(B)); Z=cos(B);
surf(X,Y,Z)
Движение точки:
comet(), comet3().
Графики функций, заданных неявно fplot, ezplot, ezsurf.
ezsurf('sin(a).*sin(b)','cos(a).*sin(b)','cos(b)')
fplot(‘cos’,[0,4])
6
Символьные вычисления
При решении используются функции MATLAB для работы с символьными вычислениями.
Вычисление пределов.
Для вычисления следует использовать функции limit и syms из Symbolic Toolbox. Функция syms
создает переменную.
Пример 1. Вычислить предел
Способ 1. (через командную строку)
>>syms x
%вычисляем предел при x->∞
>>limit((1+1/x)^x,x,0)
Способ 2. (через создание m-файла)
function y = limits( )
syms x; y = limit(Func(x),x,Inf);
function z= Func( x )
z = (1+1/x)^x;
Примечание: Можно
limit(f(x),x,x0,'right')
вычислять
предел
слева
и
справа
limit(f(x),x,x0,'left')
и
Вычисление неопределенного интеграла
Для получения символьного результата можно использовать функции Optimization
Toolbox, а именно syms и int. Например, вычислим
Решение.
syms k; int(sin(x),x)
Вычисление суммы
Для получения символьного результата можно использовать функции Optimization
Toolbox, а именно sym и symsum. Например, вычислим
Решение
syms k; symsum(1/k^2,1,Inf)
7
Символьное дифференцирование
При наличии специализированного пакета Symbolic Math Toolbox возможно реализовать
точное дифференцирование в символьном виде, используя следующие функции пакета:




diff(S) дифференцирует символьное выражение S по свободной переменной;
diff(S, ‘v’) дифференцирует символьное выражение S по v;
diff(S, n) и diff(S, ‘v’, n) дифференцирует n раз символьное выражение S;
diff без аргументов дифференцирует предшествующее выражение.
Пример
Вычислить производную
syms x; diff(sin(x),2)
Решение
Разложение в ряд Тейлора
Разложение функции в ряд Тейлора можно выполнить при помощи функции taylor
"Symbolic Toolbox".
Пример
Разложить в ряд Тейлора функцию
Решение
с 10 членами.
syms x; taylor(sin(x))
Решение уравнений
1.
s= solve('cos(2*x)+sin(x)=1') записывается символьное выражение
2.
Система
>> syms x y
>> z=solve(2*x+y-1,2*y+y-1,x,y)
>> z.x
8
Работа с матрицами
Пример
Что делает
a=[1,2,3;0,1,2;0,0,1]
c=[1,2,3]
b=[1;2;3]
det(a)
rank(a)
inv(a)
a\b
D=[1,2,3;0,0,1]; e=[1;2]; D\e
[v,d]=eig(a)
trace(a)
%ввод матрицы 3x3
%строка
%столбец
%определитель
%ранг
%обратная матрица
%решение СЛУ
%случай не квадратной матрицы
%собственные числа и векторы
%след матрицы
Численные методы
Численное интегрирование
Функция trapz(x,y) вычисляет интеграл по методу трапеций.
Задача: Вычислить (приближенно) интеграла вида
, где
, a=0, b=1
Решение: Разбиваем отрезок на части. Вычисляем значение функции в точках разбиения и
вычисляем приближенное значение по методу трапеций.
x=0:0.1:1; y=sin(x); trapz(x,y)
Функция quad(f,a,b) вычисляет интеграл по формулам Симпсона
quad('sin(x)',0,1)
Функция dblquad(f,a1,b1,a2,b2) вычисляет двойной интеграл
Нахождение корней уравнений
fzero(f,x0) приближенное решение уравнения вида
в окрестности точки x0
Пример: найти корень
Построим график функции на отрезке [0,10]
fplot('sin(x)-cos(x)',[0,10]); grid on
Найдем корень в окрестности 1.
fzero('sin(x)-cos(x)',1)
Корни полинома
Коэффициенты полинома задаются в виде вектора (x2+2x+3)
9
p=[1,2,3]; roots(p)
10
Элементы программирования
Цикл for
for variable = expression
statements
end
Пример
function tab(x)
s=0;
for n=1:40
s=s+cos(n*x)/n;
end
tab=s
Пример – создание таблицы двух функций на отрезке
x=*π/5, 9π/5+, h= π/10,
1.
Создаем функцию для вычисления
function [f,y]=test(x)
s=0;
for n=1:40
s=s+cos(n*x)/n;
end
11
f=s
y=-log(2*abs(sin(x/2)));
%y=gg(x)
%function y=gg(x)
%y=-log(2*abs(sin(x/2)));
2.
Применяем
x=pi/5:pi/10:9*pi/5; [m,s]=test(x);
%выводим красиво (одно под другим)
[x;m;s]
Пример 2
Построить таблицу функций
на отрезке
1.
Создаем функцию для вычисления
function [s]=func(x)
s=1;
for n=1:10
s=s+log(3).^n./factorial(n).*(x.^n)
end
2.
Применяем
12
x=0.1:0.1:1; y=func(x); z=3.^x; [x;y;z]
Создание структур
mystr(1,1).name = 'alice';
mystr(1,1).ID = 0;
mystr(2,1).name = 'gertrude';
mystr(2,1).ID = 1
Создание и работы с файлами
%элементы работы с файлами
%открытие текстового файла для чтения
f=fopen('E:\file1.txt','rt');
%если файл не открыт, то f=-1
if (f==(-1))
disp('file do not open');
else
disp('hello!');
%для чтения данных из файла используется fscanf()
%A=fscanf(f,'%d')
% чтение целочисленной матрицы 2x2 из файла
A=fscanf(f,'%d',[2,2]);
disp(A);
fclose(f);
end;
13
% запись в файл файла
f=fopen('E:\file2.txt','wt');
y=sin(0:0.1:1);
fprintf(f,'%5.3f \n',y);
fclose(f);
14
Download