
Решение нелинейных алгебраических уравнений в системе matlab
В начале отделим корни нелинейного алгебраического уравнения. Пусть нелинейное алгебраическое уравнение имеет вид
В MATLAB рекомендуется строить график функции f(x) для приближенного определения корней и интервалов, в пределах которых они находятся. Создается m-файл для исследуемой функции
%Функция, корни которой ищутся
function f=funl(x)
f=x.^3-3.5*x.^2+5.5*x+4
Далее в командном окне набирается последовательность команд
>> x=-1:0.1:1;
>> plot(x,funl(x)); grid on;
В результате выполнения этого набора команд появляется график исследуемой функции (рис. 6).
Рис. 6
Из графика видно,
что перемена знака функции
происходит на отрезке
.
Этот отрезок является интервалом
отделения корня.
Одним из возможных
путей приближенного нахождения корня
является построение графика функции с
небольшим значением шага
-
шага изменения аргумента
по оси абсцисс.
>> x=-1:0.01:1;
>> plot(x,funl(x)); grid on;
Рис. 7
Из графика функции
(рис. 7)видно, что приближенное значение
корня
.
Для решения систем
нелинейных уравнений следует также
использовать функцию solve
из пакета Symbolic
Math Toolbox. Эта
функция способна выдавать результат в
символьной форме, а если такого нет, то
она позволяет получить решение в
численном виде. Для нелинейного
алгебраического уравнения
решение с помощью функции solve
получается
следующим образом:
>> solve('x^3-3.5*x^2+5.5*x+4')
ans =
-0.5253
1.88779*i + 2.01265
2.0126 5 - 1.88779*i
Как видно из приведенного фрагмента данное уравнение третьего порядка имеет три корня: один действительный и два комплексно-сопряженных корня, функция solve легко их находить.
Расчетная часть
Для наглядности построим график:
Нахождение корней методом деления отрезка пополам:
Примерно корни находится на интервале [-10;10]
Найдем значения в данных точках:
Середина отрезка т.0, найдем значение в этой точке:
Корень уравнения -
Нахождение корней по методу Ньютона:
В качестве начального приближения выберем середину отрезка т.0
Можно закончить расчет
x=0
Нахождение корней по методу простой итерации:
Оставим 5.5x в левой части
Разделим обе части на 5.5
Приведем к виду
:
Рассмотрим изменения функции на отрезке [-10:10]
-10 |
40 |
-9,5 |
35 |
-9 |
31 |
-8,5 |
27 |
-8 |
23 |
-7,5 |
20 |
-7 |
17 |
-6,5 |
14 |
-6 |
11 |
-5,5 |
8,5 |
-5 |
6,4 |
-4,5 |
4,5 |
-4 |
2,9 |
-3,5 |
1,6 |
-3 |
0,5 |
-2,5 |
0,2 |
-2 |
0,7 |
-1,5 |
1 |
-1 |
0,9 |
-0,5 |
0,6 |
0 |
0 |
0,5 |
0,9 |
1 |
2 |
1,5 |
3,4 |
2 |
5,1 |
2,5 |
7 |
3 |
9,3 |
3,5 |
12 |
4 |
15 |
4,5 |
18 |
5 |
21 |
5,5 |
25 |
6 |
28 |
6,5 |
33 |
7 |
37 |
7,5 |
42 |
8 |
47 |
8,5 |
52 |
9 |
57 |
9,5 |
63 |
10 |
69 |
Из таблицы видно, что условие
выполняется на промежутке [-1;10]
Будем уточнять корень на отрезке [-1;10]
|
|
|
-1 |
0,9090909 |
-2,5 |
-0,5 |
0,5909091 |
-1,875 |
0 |
0 |
0 |
0,5 |
-0,863636 |
3,875 |
1 |
-2 |
10,5 |
1,5 |
-3,409091 |
20,625 |
2 |
-5,090909 |
35 |
2,5 |
-7,045455 |
54,375 |
3 |
-9,272727 |
79,5 |
3,5 |
-11,77273 |
111,125 |
4 |
-14,54545 |
150 |
4,5 |
-17,59091 |
196,875 |
5 |
-20,90909 |
252,5 |
5,5 |
-24,5 |
317,625 |
6 |
-28,36364 |
393 |
6,5 |
-32,5 |
479,375 |
7 |
-36,90909 |
577,5 |
7,5 |
-41,59091 |
688,125 |
8 |
-46,54545 |
812 |
8,5 |
-51,77273 |
949,875 |
9 |
-57,27273 |
1102,5 |
9,5 |
-63,04545 |
1270,625 |
10 |
-69,09091 |
1455 |
На шаге 3 выполняется условие выхода
из итерационного процесса
Отсюда следует, что х=0
Исследование графика в системе MATLAB
Создаем M-file и далее в командной строке вводим набор команд:
В результате получаем график, на котором отчетливо видно пересечение графика функции в т. [0;0]
Таким образом ответ: X=0
Ответы, полученные в разных методах:
Метод деления отрезка пополам – х=0
Метод Ньютона – х=0
Метод простой итерации – х=0
Расчет в системе MATLAB – х=0