Минимизация функций
Вычисление локального минимума функции одной переменной на заданном отрезке в MATLAB выполняет функция fminbnd, синтаксис которой аналогичен синтаксису функции fzero.
При её использовании также рекомендуется предварительно построить график исследуемой функции, чтобы можно было точнее определить отрезки поиска минимумов.
Самый простой способ обращения к функции fminbnd имеет вид:
х= fminbnd(fun,х1,х2),
где значения х1 и х2 задают границы отрезка поиска минимума; fun – функция, локальный минимум которой вычисляется (задаётся как имя файл-функции в одинарных кавычках либо как формула с одной независимой переменной, заключённая в одинарные кавычки); а х – вычисленное значение, при котором достигается минимум.
Найдём локальный минимум для рассмотренной в предыдущем разделе функции f(x) = x2sin x на отрезке [2, 8]. Для этого введем в командную строку следующие команды:
» х= fminbnd(‘myf’,2,8)
x=
5.0870.
Таким образом, локальный минимум на отрезке [2, 8] достигается при х = 5,0870.
Чтобы узнать значение исследуемой функции в точке минимума, нужно вызвать функцию fminbnd с двумя выходными аргументами:
»[x,f]= fminbnd(’myf’,2,8)
x=
5.0870
f=
–24.0830.
Для нахождения локального максимума в MATLAB не предусмотрено специальной функции. Однако найти локальный максимум требуемой функции, очевидно, можно путём вычисления локального минимума для функции, имеющей обратный знак.
Интегрирование функций
В системе MATLAB реализованы различные методы численного интегрирования функций.
Вычисление определенных интегралов методом трапеций
Самым простым и наиболее распространённым методом вычисления определённых интегралов является метод трапеций. Вычисление интегралов по формуле трапеций в MATLAB выполняется с помощью функции trapz, к которой можно обратиться следующим образом:
z = trapz(х,у).
Результатом данного обращения будет вычисление площади криволинейной трапеции, расположенной под графиком функции y(х), в котором все точки, заданные векторами х и у, соединены прямыми. Обычно для интегрирования выбирают равномерную сетку, то есть значения элементов вектора х задают отстоящими друг от друга на определённую величину, именуемую шагом интегрирования. Очевидно, чем меньше шаг интегрирования, тем больше точность вычисления интеграла.
Для примера вычислим простой интеграл
Зададим равномерную сетку из 100 элементов (то есть шаг интегрирования, равный /100). Введя в командную строку следующие команды:
>> x=0:pi/100:pi;
>> y=sin(x);
>> z=trapz(x,y)
z =
1.9998,
получим приближённое значение интеграла, равное 1,9998. Увеличив шаг интегрирования до /1000, можно получить точное значение этого интеграла, которое, как известно, равно 2.
Если вектор х не задан, обращение к функции имеет вид z = trapz(у) и по умолчанию предполагается, что шаг интегрирования является постоянным и равен единице.
Достарыңызбен бөлісу: |