Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетодичкаИПлб.doc
Скачиваний:
39
Добавлен:
08.05.2019
Размер:
6.96 Mб
Скачать

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

Решение систем нелинейных уравнений в Matlab осуществляется функцией fsolve, обращение к которой имеет вид:

х=fsolve(func,x0);

где х – вектор решения; х0 – вектор начального приближения к х; func – ссылка на имя m-функции, описывающей систему уравнений.

Пример: пусть необходимо решить следующую систему нелинейных уравнений:

Данная система имеет бесконечное количество корней. Найдем положительные корни, не превосходящие 3.

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

x1=-3:0.1:10;

x2=sin(x1).*x1;

hold on

plot(x1,x2)

x2=-3:0.1:3;

x1=x2.^2+1;

plot(x1,x2,'--')

grid

hold off

legend('x2=x1sin(x1)','x1=x2^2+1')

xlabel('x1')

ylabel('x2')

Из графиков (рис. 8.2) следует, что при рассматриваемых ограничениях на значение корней система имеет только одну пару корней, приближенные значения которых х=2,5 и х=1,2.

Составим m-функцию, описывающую систему уравнений

function fun=nonlinearsystem(x)

fun=[x(1).*sin(x(1))-x(2);

x(2).^2-x(1)+1];

и файл-сценарий с обращением к fsolve для уточнения решения

x0=[2.5; 1.2;];

[xx, fx]=fsolve(@nonlinearsystem,x0,optimset('TolFun',1e-9))

В результате получим следующее решение (пару корней и значения левых частей обоих уравнений при этих корнях):

xx =

2.6349

1.2786

fx =

1.0e-015 *

0.2220

0.4441

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

5. Контрольные вопросы

  1. Из каких этапов состоит решение нелинейных уравнений?

  2. Как можно выполнить отделение корней нелинейного уравнения?

  3. Каковы особенности использования функции roots?

  4. Какие ограничения существуют на использование функции fzero?

  5. Как функции fzero можно задать нелинейное уравнение, корни которого ищутся?

  6. Какие выходные аргументы может иметь функция fzero?

  7. C помощью какой функции можно найти корни системы нелинейных уравнений?

  8. Какие дополнительные входные параметры можно задавать для функций, выполняющих поиск корней?

  9. Как можно узнать текущие значения параметров управления процессом поиска корней?

  10. Как можно изменить текущие значения параметров управления?

6. Индивидуальные задания

1. Для нелинейного уравнения, заданного вариантом (табл. 8.2), выполнить отделение корня графическим методом. Используя стандартную функцию fzero выполнить поочередное уточнение всех корней уравнения. Для одного из корней "поиграть" настройками параметров optimset управления вычислительным процессом и контроля за ним. Оценить, как меняется результат.

Таблица 8.2

Вариант

Уравнение

Интервал поиска корней

1

[3,5; 6]

2

[-1; 2]

3

[1; 7]

4

[-2; 2]

5

[-1,5; 1]

6

[-1; 2]

7

[0; 2]

8

[-2; 2]

9

[0; 1,5]

10

[-1; 2]

11

[3; 5]

12

[-3; 3]

2. Для системы нелинейных уравнений, заданной вариантом (табл. 8.3), выполнить отделение корней графическим методом. Используя стандартную функцию fsolve выполнить уточнение корней уравнения.

Таблица 8.3

Вариант

Уравнение

Условия на значение корней

1

2

3

1

,

2

,

3

,

Окончание табл. 8.3

4

,

5

,

6

,

7

,

8

,

9

,

10

,

11

,

12

,