Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Matlab_лек.7_Реш-ие ур-ий_.docx
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
183 Кб
Скачать
☆

2.8.5.Обращение к файлам функций при решении и оптимизации уравнений [1, с. 243].

2.8.6. Решение систем нелинейных уравнений [1, с. 733].

Выполняется с использованием функции fsolve, входящей в “инструмент” Optimization Toolbox. Используется метод “наименьших квадратов” (least squares method). Общий вид системы уравнений задается нелинейной вектор-функцией: F(x) = 0, в которой и F и х могут быть, как векторами, так и матрицами:

F1 (x1, x2, ... , xn) = 0;

F2 (x1, x2, ... , xn) = 0;

…

Fm (x1, x2, ... , xn) = 0; .

Первым аргументом fsolve является указатель на файл-функцию (или ее имя), вычисляющую F(x). Данная файл-функция принимает на входе вектор аргументов и возвращает вектор значений F(x). Начальное приближение х0 указывается во втором аргументе fsolve.

В достаточно общем случае вызов fsolve выглядит следующим образом:

х = fsolve(fun, x0, options, P1, Р2, ...) ,

где options - управляющая структура, а необязательные аргументы P1, P2 ... есть значения параметров, от которых может зависеть левая часть системы уравнений. Если в списке входных аргументов fsolve всего два входных аргумента, то в командное окно выводится предупреждение, связанное с тем, что в версии 2.0 Optimization Toolbox алгоритм fsolve был модифицирован. Для подавления этого предупреждения следует вызывать fsolve с управляющей структурой, которую можно сформировать, например, со всеми принятыми по умолчанию настройками при помощи optimset [1, глава 8]:

х = fsolve(fun, x0, optimset('fsolve'))

Функция fsolve может быть вызвана с несколькими выходными аргументами. Второй выходной аргумент содержит значения вектор-функции для найденного решения, а третий — сведения о работе алгоритма. Отрицательное значение третьего аргумента говорит о том, что решение не найдено из-за расходимости вычислительного процесса. Ноль означает досрочное прерывание вычислений при достижении максимально допустимого числа итераций или обращений к вектор-функции системы. Нахождение решения с заданной точностью подтверждается положительным значением третьего выходного аргумента fsolve.

Пример программирования (составления М-функции) левых частей двух нелинейных уравнений с двумя неизвестными (без приравнивания их нулю) :

function F = mysys(x)

F(l) = х(1)*(2 - х(2)) - cos(x(1))*exp(x(2));

F(2) = 2 + х(1) - х(2) - cos(x(1)) - ехр(х(2));

Указание начальной точки (0, 0) в функции fsolve приводит к следующему результату:

» [х, f] = fsolve(@mysys, [0 0], optimset('fsolve'))

Optimization terminated successfully:

Relative function value changing by less than OPTIONS.TolFun

x =

0.7391 0.4429

f =

1.0е-011 *

-0.4702 -0.6404

В этом примере число неизвестных совпадает с числом уравнений в системе, но алгоритмы, заложенные в функцию fsolve, допускают несовпадение числа неизвестных и уравнений [1, с. 735].

(Информация “к сведению” (не входит в программу курса):

Алгоритмы, реализованные в функции fsolve, основаны на минимизации некоторых критериев, связанных с исходной системой нелинейных уравнений, в частности, суммы квадратов компонент вектор-функции. Решением считается та точка, в которой значение критерия мало, что не гарантирует существования корней системы в окрестности найденной точки. В этом легко убедиться на простом примере : если применить функцию fsolve для системы, состоящей из одного уравнения х2 + 10-6 =0 и не имеющего вещественных корней. Так, если для сравнения использовать функцию fzero с некоторым начальным приближением к корню, то она будет пытаться отделить интервал, на границах которого непрерывная функция х2 + 10-6 имеет разные знаки (для обеспечения гарантии существования корня). Но здесь такого интервала не существует и работа fzero прерывается.

Одним из алгоритмов функции fsolve является метод наименьших квадратов [1, с. 735], который также используется для решения ряда оптимизационных задач, в частности, подбора параметров. )

Оглавление

2. MATLAB. 1

2.8. Решение уравнений в Matlab. 1

2.8.1. Решение систем линейных уравнений [3, с.35, 125]. 1

2.8.2. Поиск не комплексных корней уравнений 1

(нахождение нулей функций) [1, с. 246; 3, с. 133]. 1

2.8.2.1. Задание в функции fzero второго параметра в виде вектора. 4

2.8.2.2. Создание встраиваемой функции. 4

2.8.2.3. Использование анонимной функции. 5

2.8.2.4. Использование указателя @ при обращении к исследуемой М-функции. 6

2.8.2.5. Обращение к fzero с двумя выходными аргументами. 7

2.8.2.6. Обращение к fzero с тремя выходными аргументами. 7

2.8.3. Вычисление комплексных корней полиномов. 7

2.8.4. Нахождение экстремумов функций. 8

2.8.4.1. Минимизация функции одной переменной. 8

2.8.4.2.Минимизация функции нескольких переменных. 9

2.8.5.Обращение к файлам функций при решении и оптимизации уравнений [1, с. 243]. 11

2.8.6. Решение систем нелинейных уравнений [1, с. 733]. 11

Литература.

  1. Ануфриев И. Е., Смирнов А. Б., Смирнова Е. Н. MATLAB 7. Наиболее полное руководство.- СПб.: БХВ-Петербург, 2005. - 1104 с: ил.

Matlab7NaiboleePolnoeRukovodstvo.djvu, глава2, с. 86; глава 6, с. 286.

  1. Иллюстрированный самоучитель по MatLab 6 (23 урока). Урок 16.

http://www.radiomaster.ru/cad/matlab/glava5/index1.php

  1. Н.Н.Мартынов, А.П.Иванов. MATLAB 5.x. Вычисления, визуализация, программирование.- М.: КУДИЦ-ОБРАЗ, 2002.-336с. (См. с.35, с.125)

  2. Гаспарян О.Н. MATLAB: Учебное пособие. - Баку: ГИУ Армении, 2005. 143 с. (PDF формат)

(См. с. 28)