- •Некоторые сведения о пакете Matlab.
- •Данные в ml
- •Матрицы
- •Операции в ml
- •Логические операции:
- •Приоритет операций в ml:
- •Тригонометрические функции.
- •Особые матрицы
- •Операции с векторами и матрицами.
- •Выполнение операций над матрицами.
- •Специальные функции для матриц.
- •Действия с элементами матрицы
- •Анализ данных (для постолбцовой обработке матриц)
- •Действия с полиномами (многочленами)
- •Графика в ml
- •Диаграммы и гистограммы.
- •Круговые диаграммы.
- •Программирование в ml
- •Операторы языка
- •Операторы ввода/вывода
- •Операторы цикла и условные операторы.
- •Операторы цикла.
- •Оператор цикла с параметром:
- •Оператор цикла с предусловием:
- •Условный оператор.
- •Оператор переключения (выбора).
- •Функция eval
- •Функция menu.
- •Файлы функции
- •Вычисление интеграла.
- •Нахождение нулей функции.
- •Решение систем дифференциальных уравнений.
-
Вычисление интеграла.
Самым простым методом вычисления определенных интегралов является метод трапеций, который реализован функцией trapz.
Вычислим интеграл
>> x=0:pi/100:pi;
>> y=sin(x);
>> z=trapz(x,y);
z =
1.9998
Получили приближенное значение интеграла. Увеличив шаг интегрирования до pi/1000, получим точное значение – 2. Если вектор x не задан, то по умолчанию предполагается, что шаг интегрирования равен 1.
Более точные методы реализованы в функциях quad, quad8, quadl.
[i,n]=quad(‘<fun>’, a, b, [tol, trace])
fun - имя файла-функции или символьное выражение, определяющее подинтегральную функцию;
i = значение интеграла;
n – количество значений функции (или количество точек)
a, b – пределы интегрирования;
tol – погрешность вычислений;
trace – признак; если значение 1, то график строится, если 0, то не строится.
>> [i,n]=quad8('func',0,pi,1e-8,1)
i =
7.1938
n =
33
Функция quad8 основана на квадратурной формуле Симпсона. При использовании этой формулы задаётся требуемая точность вычислений, а шаг подбирается автоматически (в отличие от функции trapz). По умолчанию точность равна 10-6.
Имя функции может быть задано символьным выражением.
>> [i,n]=quad8('sin(x)',0,pi,1e-8,0)
i =
2.0000
n =
33
Функция quadl использует более точные формулы Гаусса-Лобато.
>> [i,n]=quadl('sin(x)',0,pi,1e-8,0)
i =
2.0000
n =
48
-
Нахождение нулей функции.
Для решения уравнений вида f(x)=0 (нахождение нулей функции) предназначена функция fzero, которая находит приближенное значение корня уравнения по заданному начальному приближению.
Функция fzero находит значения аргумента, при котором функция обращается в 0.
fzero(‘<fun>’, x0, [tol, trace]), где
fun - имя файл-функции или символьное выражение (формула), заключенные в апострофы;
х0 – начальное значение х, от которого начнётся процесс;
tol – погрешность вычислений;
trace – признак; если значение 1, то график строится, если 0, то не строится.
Если корней несколько, то задавая различные начальные значения, можно найти различные корни.
>> fzero('sin(x)/(x*2)',-7)
ans =
-6.2832
-
Нахождение min на заданном интервале.
Вычисление локального минимума функции одной переменной на заданном отрезке выполняет функция fminbnd, синтаксис которой аналогичен синтаксису функции fzero. При использовании функции поиска минимума рекомендуется предварительно построить график исследуемой функции, чтобы точнее определить отрезки поиска минимума.
[x, y] = fminbnd(‘имя ф-ции’, a, b), где
x –аргумент функции(вычисленное значение, при котором достигается минимум);
y – значение функции в точке минимума;
a, b – интервал на котором ищется минимум;
Результат – вектор, состоящий из двух значений.
Пример.
Для функции sin(x)/(x*2) найти локальный минимум на заданном интервале, вывести значение функции и построить график.
>> [x,y]=fminbnd('sin(x)/(x*2)',-10,1)
x =
-4.4934
y =
-0.1086
Если хотим иметь только значение аргумента, то обращение к функции будет:
>> fminbnd('sin(x)/(x*2)',-10,1)
ans =
-4.4934
или
>> x=fminbnd('cos(x)',3,4)
x =
3.1416
Для нахождения локального максимума не предусмотрено специальной функции. Можно найти максимум, используя в функции fminbnd функцию, имеющую обратный знак.