- •Основные понятия Matlab
- •ВЫЧИСЛЕНИЯ
- •Особенности ввода команд и данных
- •Элементы данных в ML
- •Переменные в ML
- •Выражения
- •ОПЕРАЦИИ
- •Простейшие арифметические операции (АО)
- •Операции отношения
- •Логические операции
- •Приоритет элементарных операций в ML
- •Основные математические функции MatLab
- •Ввод и вывод информации. Операторы ввода/вывода
- •<имя переменной>= input(<текст>)
- •Для этого используют несколько способов.
- •disp(strcat('x=', num2str(x)))
- •y=sprintf('x=%3.1f ', x)
- •%[флаг][ширина поля вывода][точность] тип (спецификатор) формата
- •x=<значение>; y=<значение>; z=<значение>;
- •>> sprintf('x=%4.2f; y=%5.3f; z=%d;',x,y,z)
- •Условный оператор
- •МНОЖЕСТВЕННЫЙ ВЫБОР
- •Определенные циклы
- •Неопределенные циклы
- •ЗАДАНИЕ И ОБРАБОТКА ВЕКТОРОВ И МАТРИЦ
- •Способы задания векторов
- •<имя пер.>=[<значение1> <значение2> ….<значениеN>]
- •<имя пер.>=<нач. значение>:<шаг>:<конечное значение>
- •linspace (<нач. значение>,<кон. значение>,<кол. значений>)
- •Задание матриц
- •Операции
- •Операции над векторами – то же самое
- •Поэлементные операции
- •ОСОБЫЕ МАТРИЦЫ
- •Матрица случайных чисел:
- •Автоматическое заполнение матриц. Формирование матрицы блоками
- •>> X=[eye(4), 3*ones(4); 5*ones(4),9*eye(4)]
- •Дополнительно из задач
- •Применение функций обработки данных к векторам и матрицам
- •>> help datafun
- •Функции для векторов
- •Для матриц
- •Сумма элементов в столбцах матрицы:
- •Сумма элементов в строках матрицы:
- •Сумма элементов вектора:
- •Получение из матрицы вектора
- •Произведение элементов матрицы по столбцам:
- •Произведение элементов матрицы по строкам:
- •Максимальное значение в каждом столбце:
- •Максимальное значение в каждой строке:
- •Максимум во всей матрице
- •Наименьшее значение:
- •Среднее значение
- •Среднее арифметическое в столбцах. Результат – вектор-строка из средних арифметических в каждом столбце:
- •В строках
- •Сортировка.
- •по убыванию:
- •по убыванию
- •’’Зеркальное’’ отображение матрицы относительно вертикальной оси:
- •’’Зеркальное’’ отображение матрицы относительно горизонтальной оси:
- •Примеры использования
- •среднего и суммы:
- •Для матрицы:
- •Найти наибольшее значение среди элементов <8
- •Для матрицы
- •Сумму элементов побочной диагонали
- •Сумму элементов главной диагонали
- •Нормы матрицы
- •>> max_stolb=max(sum(abs(В)))
- •Найти среднее арифметическое в каждом столбце
- •Пр. Удалить максимальный элемент в векторе
- •Пр. Вставить значение 100 в вектор после элемента с номером k=3
- •Пр. В матрице поменять местами столбцы с минимальным и максимальным элементами.
- •[m_min,jmin]=min(min(b));
- •[m_max,jmax]=max(max(b));
- •buf=b(:, jmin);
- •Пр. Поменять порядок следования элементов в векторе
- •Еще полезные функции all, any и find и их использование
- •Для вектора
- •Получить индексы элементов, равных 2
- •Графика ML
- •Построение простейших графиков функций одной переменной Графики параметрических и кусочно-заданных функций
- •Plot(x, y, ‘<тип маркера, обозначение цвета и тип линий>’)
- •Отображение нескольких кривых на одном графике (в одних осях)
- •hold off
- •Вывод нескольких графиков в одном графическом окне
- •subplot(m, n, p),
- •Изменение масштаба графика
- •Диаграммы
- •Трехмерные графики
- •Т=-2:0.01:2; % задали вектор значений аргумента
- •Построение поверхности в 3-мерном пространстве
- •% Поверхность z=f(x,y)
- •Решение типовых математических задач
- •Файлы функций
- •function [рез.1, рез.2…рез.N] = <имя функции> (пар.1, пар.2,…пар.N)
- •[y1, y2,…,yn]=<имя функции>(<список вх. факт. параметров>)
- •<имя функции>(<список входных фактических параметров>)
- •function <имя функции> (пар.1, пар.2,…пар.n)
- •Отличия файла-функции от скрипт-файла
- •Примеры
- •function y=mysin(x)
- •Пример функции с 3 выходными параметрами
- •Использование функций для задач вычислительной математики
- •Построение графика функций
- •Действия с полиномами (многочленами)
- •Решение системы линейных уравнений.
- •Численное интегрирование
- •[i, n]=quadl (fun, a, b, tol, trace),
- •Решение уравнений
- •Нахождение минимума функции на заданном отрезке
- •Функция eval
- •Файл меню
- •while k~=6
- •Символьные вычисления в ML
- •Преобразование символьных выражений
- •Построение графиков символьных функций
- •Решение уравнений и систем
- •Решение дифференциальных уравнений и систем
- •Вычисление пределов
- •Определение производной
- •Вычисление интеграла
ans =
1 i/2 - 1/2
- i/2 - 1/2
Так же просто решаются системы уравнений. Решаемые уравнения указывают параметрами функции solve(), также можно явно указать переменные,
относительно которых решается система. Например, решим систему уравнений x^2+y^2=25
y-x=1
>>syms x y
>>[x y]=solve ('x^2+y^2=25', 'y-x=1', x, y) %x,y - символьные
x = 3 -4 y = 4 -3
У системы 2 решения: х=3, у=4 и х=-4, у=-3.
Можно в общем виде решить систему линейных уравнений
a1*x1+b1*x2=c1 a2*x1+b2*x2=c2
>> [x1, x2]=solve('a1*x1+b1*x2=c1','a2*x1+b2*x2=c2')
x1 =
(-b2*c1+c2*b1)/(-a1*b2+b1*a2)
x2 =
-(a1*c2-c1*a2)/(-a1*b2+b1*a2)
Решение дифференциальных уравнений и систем
Получить символьное решение дифференциального уравнения в ML проще,
чем получить решение численными методами. При использовании численных
методов решением задачи является таблица значений функции, при символьном
44
решении результатом является функция. Решение может быть найдено с помощью функции dsolve (expr, cond, var), в которой выражение expr описывает обыкновенное дифференциальное уравнение, cond – начальное условие, var –
независимая переменная (её имя не должно начинаться с D). Если она не задана, то по умолчанию независимой переменной считается t.
Существуют правила записи дифференциального уравнения. Для обозначения операции дифференцирования используется символ D. Производная n-го порядка указывается как Dn, т.е. D = dy / dt, a D2 = d2 y / dt2.
Решим уравнение dy / dx=(y+1 )/ x
Если нач.усл. не указаны, то результат будет содержать константы
(постоянные) интегрирования, которые обозначаются C1, C2…
>> dsolve ('Dy=(y+1)/ x', 'x')
ans =
C2* x – 1 % С2 – постоянная интегрирования
Решим уравнение t*(1+t^2)*dx/dt = x+x*t^2-t^2 с начальным условием
x(1) =- pi/4
>> dsolve('t*(1+t^2)*Dx=x+x*t^2-t^2', 'x(1) =-pi/4')
ans =
-t* atan (t)
Решим уравнение 5y(x)+xy'(x)=x^2y(x), y(0)=2
%диф ур 5y(x)+xy'(x)=x^2y(x), y(0)=2
disp('решение диф ур')
dsolve('5*y+x*Dy=x^2*y','y(0)=2')
Получим:
решение диф ур ans =
2*exp((t*(x^2 - 5))/x)
В случае уравнения второго порядка 4y''+16y'+15y=4e-3x/2 при начальных условиях у(0)=3,y’(0)=-5.5 (количество начальных условий должно соответствовать порядку уравнения).
45
>> dsolve ('4*D2y+16*Dy+15*y=4*exp(-3*x/2)','y(0)=3','Dy(0)=-5.5','x')
ans =
2/exp((3*x)/2) + 2/exp((5*x)/2) + x/exp((3*x)/2) - exp(x)/exp((5*x)/2)
Можно получить в другом виде (числовом):
Vpa(ans,4) ans =
2.0/exp(1.5*x) + 2.0/exp(2.5*x) - (1.0*exp(x))/exp(2.5*x) + x/exp(1.5*x)
Для решения системы дифференциальных уравнений в параметрах функции dsolve () указывают несколько уравнений и несколько начальных условий. Найдем решение системы x'=x+2y, y'=3x-4y с начальными условиями х(0)=1 и у(0)=2.
>> [x y]=dsolve('Dx=x+2*y','Dy=3*x-4*y','x(0)=1','y(0)=2')
x =
(10*exp (2*t)) / 7 – 3 / (7*exp (5*t)) y =
(5*exp (2*t)) / 7 + 9 / (7*exp (5*t))
Вычисление пределов
Число b называется пределом последовательности у1, у2, …уn, …, если по мере возрастания номера n член уn неограниченно приближается к b. Предел
обозначается lim yn b . n
Для нахождения предела символьного выражения fun в точке х, стремящейся к а предусмотрена функция limit (fun, x, a).
Fun – символьная функция, х - переменная, a - точка, в которой ищется предел.
Например, предел функции (х-1)/(х+5)
Надо задать символьную переменную
>> syms x
Построим график
>> f=(x-1)/(x+5)
f =
46
(x-1)/(x+5)
>>ezplot(f,-10,10)
>>grid
В качестве точки предела используем inf (бесконечность)
>> limit (f, x, inf) |
% Предел при |
x |
ans = |
|
|
1 |
|
|
>> limit (f, x ,-inf) |
% Предел при |
x |
ans = |
|
|
1 |
|
|
>> limit (f, x, -5) |
% Предел при x 5 |
ans =
NaN
>> limit (f, x, 5) |
% Предел при |
x 5 |
ans =
2/5
47