- •Основные понятия 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
- •Преобразование символьных выражений
- •Построение графиков символьных функций
- •Решение уравнений и систем
- •Решение дифференциальных уравнений и систем
- •Вычисление пределов
- •Определение производной
- •Вычисление интеграла
В результате получается текстовая строка y, состоящая из текста,
указанного в апострофах, и значения числовой переменной x, в соответствии с указанным форматом.
Эту функцию удобно использовать в команде disp в виде:
disp (sprintf (‘ формат', список переменных)).
Формат или строка преобразования имеет вид:
%[флаг][ширина поля вывода][точность] тип (спецификатор) формата
В квадратных скобках – необязательные параметры.
Флаг – используется, например, если перед числом надо поставить знак
(+ или -).
Если указанная ширина поля вывода недостаточна, то поле вывода рас ширяется до необходимого.
Точность – количество знаков после десятичной точки.
При необходимости в строке преобразования могут еще стоять специальные символы, например, перевод строки \n
Наиболее используемые спецификаторы формата: d – для целых со знаком
f – для вещественных со знаком
g – для вывода вещественных чисел в экспоненциальной форме - e или в естественной форме - f , в зависимости от значения
s – строка
Для нашего примера вывод на экран значения переменной x с
поясняющим текстом в разных форматах:
Формат вывода вещественного числа с количеством позиций под число по умолчанию. Для нашего числа:
>> disp(sprintf('x=%g',x)) x=15.6579
>> disp(sprintf('x=%f',x)) x=15.657890
16
Формат вывода вещественного числа с количеством позиций под число – всего 4 и 1 позиция после десятичной точки:
>> disp(sprintf('x=%4.1f',x)) x=15.7
При выводе происходит автоматическое округление по законам
математики.
Формат вывода вещественного числа с количеством позиций под число – всего 6 и 3 позиции после десятичной точки:
>> disp(sprintf('x=%6.3f',x)) x=15.658
Рассмотрим использование форматного вывода еще на одном простом примере.
Пусть даны вещественные: x=pi/4; y=sin(x); и целое z=42;
Требуется получить на экране вывод значений этих переменных с поясняющим текстом в следующем виде:
x=<значение>; y=<значение>; z=<значение>;
Зададим:
>>x=pi/4
x = 0.7854
>>y=sin(x)
y = 0.7071
Преобразуем z в целое (по умолчанию z будет типа double) z=int8(42)
z = |
|
|
|
42 |
|
|
|
>> whos z |
|
|
|
Name |
Size |
Bytes Class |
Attributes |
z |
1x1 |
1 |
int8 |
17
Мы хотим вывести на экран значение x, под которое будет выделено 4
позиции и нам достаточно 2 позиций после десятичной точки (0,ХХ). А значение
y хотим разместить в 5 позициях с тремя цифрами после десятичной точки
(0.707). Под значение z определим количество позиций по умолчанию.
>> sprintf('x=%4.2f; y=%5.3f; z=%d;',x,y,z) ans =
x=0.79; y=0.707; z=42;
Еще способ. Можно объединить соответствующие переменные в вектор, пользуясь операцией создания вектора-строки: x = [x1 x2 ... x]. Тогда вывод значений нескольких переменных в одну строку будет иметь вид: disp ([x1 x2 ...
x]).
Например, x1=1.24; x2=-3. 45; x3=5.76; x4=-8. 07; disp([x1 x2 x3 x4])
Получим:
1. 2400 -3. 4500 5. 7600 -8. 0700.
Аналогично можно объединять несколько текстовых переменных, например:
»x1=' psi '; x2=' fi '; x3=' teta '; x4=' w1 ';
»disp([x1 x2 x3 x4])
psi fi teta w1
Если Т - текстовая переменная, или некоторый текст, а Х - числовая переменная, то вывод их в одной строке можно обеспечить обращениям disp ([T num2str(X)]). Рассмотрим пример:
x = -9. 3088e015
T = 'Значение параметра равняется '; » disp([T num2str(x)])
Значение параметра равняется -9. 309e-015
Как следует из этого примера, "механическое" объединение текстовой и числовой переменных не приводит к желаемому результату.
А теперь пример программы целиком.
Напишем скрипт-файл вычисления арифметического выражения, приве-
денного выше.
3cos 2 x3 sin(x )
Res= |
|
3 |
|
|
.106 |
|
|
|
|||
|
ln/ y/ e |
|
x 1 |
|
|
|
|
|
2x |
x=input('Введите значение x=');
18
y=input('Введите значение y='); res=(3*cos(x^3)^2-sin(x-pi/3))/(log(abs(y))+exp (sqrt (x+1))/(2*x))*1E6; disp(sprintf('x=%4.2f; y=%5.3f; res=%10.3f;',x,y,res))
Сохраним его с именем, например, f1и выполним. Запустить файл на вы-
полнение можно из пункта меню Debug, Run или, набрав в окне Commad Window
имя файла f1.
На экране получим:
Введите значение x=0.5
Введите значение y=1
x=0.50; y=1.000; res=1020676.111;
19