Найти в Дзене
Piter Melnikov

Решение систем нелинейных уравнений в Matlab

Технология решения систем нелинейных уравнений в среде MS Excel рассматривалась в статье. В ней рассмотрена методы приближенного решения графическим методом и уточненного решения с помощью инструмента Поиск решения. Рассмотрим эти методы решения в Matlab. Приближенное решение систем нелинейных уравнений графическим методом в Matlab Пример. Найти графически приближенное решение системы в диапазоне значений х [0,2:3].
Решение. - обозначим х 2 =у;
- теперь представим приведенные уравнения в виде системы функций Для решения задачи воспользуемся возможностью Matlab для построения в одном окне графиков нескольких функций. Для этой цели используем функцию plot со следующей синтаксической конструкцией: plot(x1,f1,x2,f2,x3,f3,...), где xl, x2, xЗ,.„ — векторы аргументов функций (в нашем случае все они — х), a f1, f2, f3,... —векторы значений функций, графики которых строятся в одном окне (в нашем случае они f1 и f2).
Заметим, что в отличие от Excel мы можем взять очень маленький шаг
Оглавление

Технология решения систем нелинейных уравнений в среде MS Excel рассматривалась в статье. В ней рассмотрена методы приближенного решения графическим методом и уточненного решения с помощью инструмента Поиск решения. Рассмотрим эти методы решения в Matlab.

Приближенное решение систем нелинейных уравнений графическим методом в Matlab

Пример. Найти графически приближенное решение системы

-2

в диапазоне значений х [0,2:3].
Решение.

- обозначим х 2 =у;
- теперь представим приведенные уравнения в виде системы функций

-3

Для решения задачи воспользуемся возможностью Matlab для построения в одном окне графиков нескольких функций. Для этой цели используем функцию plot со следующей синтаксической конструкцией:

plot(x1,f1,x2,f2,x3,f3,...),

где xl, x2, xЗ,.„ — векторы аргументов функций (в нашем случае все они — х), a f1, f2, f3,... —векторы значений функций, графики которых строятся в одном окне (в нашем случае они f1 и f2).
Заметим, что в отличие от Excel мы можем взять очень маленький шаг для вычисления узловых точек, так как для построения графика нам не надо создавать таблицу соответствия значения функции и аргумента.
Для построения графиков указанных функций нужно записать командном окне код инструкции:

>> x=0.2:0.01:3; f1=1-2.*x;f2=log(x);plot(x,f1,x,f2);grid on.

В результате выполнения инструкции будут построены графики (рис.1).

-4

Значение аргумента x при котором линии полученных графиков функций пересекаются примерно равно значению 0,7, а значение функций примерно равно -0,4. Таким образом примерное решение системы получено.

Уточнение корней системы нелинейных уравнений в системе Matlab

В Matlab есть оператор fsolve, который позволяет решить систему нелинейных уравнений. Эта функция принимает вектор приближений и возвращает вектор значений функции.

Рассмотрим, как решить систему нелинейных уравнений

-5

с помощью fsolve .

Решение.
Создадим М-файл с именем funsist.m и создадим функцию введя код (рис. 2):

function f=funsist(x)
f(1)=log(x(1))-x(2);
f(2)=1-2*x(1)-x(2);
end
Рис. 2.
Рис. 2.

В качестве значений вектора приближений, ориентируясь на ранее полученное графическое решение, возьмем вектор [0.7, -0.4],
В командном окне Matlab введем инструкцию
>> [xr, fr, ex] = fsolve(@funsist,[0.7, -0.4],optimset('TolX',1.0e-2))

В этой инструкции выходными возвращаемыми значениями являются:
xr - вектор решений;
fr - это значения функций, указывающие на сколько значения функций близки к нулю, при найденном решении (т.е. точность решения);
ex- параметр сходимости, если он равен 1, то решение сошлось.

В результате выполнения инструкции получим результат решения (рис.3):
xr = 0,6874 -0,3748;
fr = 1.0e-008 - точность до минус восьмого порядка;
ex=1 - сходимость есть

Рис. 3.
Рис. 3.

Можно использовать и другие подходы для решения подобных систем уравнений, таких как метод Ньютона, метод простых итераций. Эти методы будут рассмотрены в других статьях.