
Лабораторная работа № 7
Решение нелинейных уравнений и систем
Цель работы
Изучить методы решения нелинейных уравнений и систем в среде MATLAB.
Задание для самостоятельной подготовки
1) Изучить общие сведения о решении нелинейных уравнений и систем в среде MATLAB [1], стр. 246-253, 775-778,1033-1035.
2) Изучить содержание и порядок выполнения лабораторной работы.
Основы теории
Решение нелинейных уравнений и систем в среде MATLAB возможно аналитическими и численными методами. Аналитическое решение в силу своей общности всегда более предпочтительно, чем численное. Однако решений уравнений аналитическими методами крайне ограничено в виду следующих причин:
аналитические методы могут быть применены лишь для решения уравнений и систем невысокого порядка;
результаты решения в большинстве случаев получаются достаточно громоздкими, несмотря на использование упрощения выражений и подстановок.
В связи с этим наибольшее распространение получили численные (приближенные) методы решения. Большинство этих методов предполагает, что известны достаточно малые окрестности, в каждой из которых имеется только один корень уравнения. Принимая за начальное приближение корня одну из точек этой окрестности или задавая интервал, в котором он находится, можно вычислить искомый корень с заданной точностью.
Символьное решение нелинейных уравнений и систем осуществляется с использованием входящей в состав пакета функции solve:
r = solve(f) — нахождение символьного решения уравнения, заданного строкой f. Входным аргументом может быть символьная функция. По умолчанию в качестве независимой переменной выбирается результат findsym(f). Входными аргументами solve в случае решения системы нелинейных уравнений являются левые части уравнений и переменные, по которым требуется разрешить систему.
Алгебраические уравнения до четвертого порядка включительно решаются точно, функция solve выводит ответ в степенях рациональных чисел с использованием подстановок.
Алгебраические уравнения высших порядков и трансцендентные уравнения, как правило, не могут быть разрешены точно. В этом случае выводятся приближенные (численные) значения корней.
Функция solve имеет следующий недостаток. Она не требует информации о начальном значении корня или области его изоляции. Поэтому в случае трансцендентного уравнения и в ряде других случаев она не находит всех корней уравнения.
Для решения нелинейных уравнений и систем численными методами служит функция fsolve. В достаточно общем случае вызов fsolve выглядит следующим образом: х = fsolve(fun, х0, options, P1, Р2, ...)
Первым аргументом fsolve является указатель на файл-функцию (или ее имя), вычисляющую F(x). Данная файл-функция принимает на входе вектор аргументов и возвращает вектор значений F(x). Начальное приближение указывается во втором аргументе fsolve - х0. Третий аргумент - options — управляющая структура, а необязательные аргументы P1, Р2,... есть значения параметров, от которых может зависеть левая часть системы уравнений.
Функция fzero позволяет численно (приближенно) вычислить корень уравнения на некотором интервале или ближайший к заданному начальному приближению.
В простейшем варианте fzero вызывается с двумя входными и одним выходным аргументом х = fzero ('func_name’, х0), где func_name — имя файл-функции, вычисляющей левую часть уравнения, х0 — начальное приближение к корню, х — найденное приближенное значение корня.
Важной особенностью fzero является то, что она вычисляет только те корни, в которых функция меняет знак, а не касается оси абсцисс. Найти корень уравнения х2 = 0 при помощи fzero не удастся.
Нахождение всех корней полиномов осуществляется при помощи функции roots со следующим синтаксисом: r = roots(р).
В качестве аргумента функции указывается вектор с коэффициентами полинома. Число элементов вектора, т. е. число коэффициентов полинома, всегда на единицу больше его степени, нулевые коэффициенты должны содержаться в векторе. Функция roots возвращает вектор корней полинома, в том числе и комплексных. Число всех корней полинома совпадает с его степенью.
Задание
1. В соответствии с заданным вариантом решить нелинейное уравнение аналитически и выполнить проверку.
1. x5 - 3x4 + (a - b3)x3 + 3(b3 - a)x2 - ab3x + 3ab3 = 0
2. x5 – ax3 + 2x2 – 2a = 0
3. x7 + ax5 – x2 – a = 0
4. x3 – a = 0
5. x5 + (b - a)x4 – abx3 + ax2 + ax(b – a) – a2b = 0
6. x5 + bx4 – a4x – a4b = 0
7. x4 + 2x3(1 + a) + x2(4a – 1) – 2x(1 + a) – 4a =0
8. 2x – 2(a + b) = 0
9. ln sinx – 2a = 0
10. e-2x – 2a = 0
11. sinax + cosax = 0
12. sinax + tgax = 0
13. e-ax + eax = 0
14. e-ax + eax – 1 = 0
15. e-ax + eax – lna = 0
16. ae-x + bex = 0
17. asinx + bcosx = 0
18. alnx – 1/x = 0
19. ax – bcosx = 0
20. ax3 – bx – 47 = 0
2. В соответствии с заданным вариантом решить систему нелинейных уравнений аналитически. Варианты заданий взять из таблицы 2 четвертого задания.
3. В соответствии с заданным вариантом решить алгебраическое и трансцендентное уравнения численными методами и выполнить проверку.
Таблица 1 – Алгебраические и трансцендентные уравнения для решения их численными методами
№ вар. |
Уравнения |
||
Алгебраические |
Трансцендентные |
Число корней |
|
1 |
x4 – 4x3 – 10x2 + 3x – 4 = 0 |
2sin(ln|x|) = 0 |
6 |
2 |
x5 – 5x2 + 4.5 = 0 |
arctg(tgx) = 0 |
∞ |
3 |
x5 – x + 0.2 = 0 |
4e-1/|x| - 2 |
3 |
4 |
x3 – 0.2x2 + 0.5x + 1.5 = 0 |
sin(sinx) |
∞ |
5 |
x10 – 1 = 0 |
2x – 4x = 0 |
2 |
6 |
x8 + 2x – 1.5 = 0 |
x! + 2x – 2 = 0 |
4 |
7 |
x4 – 2x2 + 8x + 1 = 0 |
lnx + (x + 1)3 = 0 |
1 |
8 |
x3 + 4x2 – 5x – 2 = 0 |
arctg(x-2) + x = 0 |
1 |
9 |
6x8 – 2x2 + 3 = 0 |
x2 + 4sinx – 2 = 0 |
2 |
10 |
3.5x5 – 2.8x3 + 7.5x -2.5 = 0 |
x – ln(7 – 4x) |
1 |
11 |
x5 + x4 + x3 + x2 + x + 1 = 0 |
e-2x + 3/x - 1 = 0 |
2 |
12 |
1.5x5 + 17x – 21 = 0 |
e-6x + 3x2 – 18 = 0 |
2 |
13 |
17x9 – 15x7 + 13x411x3 + 9x – 7 = 0 |
3x – 9x + 1 = 0 |
2 |
14 |
2x4 – 3.5x2 + 3 = 0 |
ln(4 – 2x) + x2 – 2 = 0 |
3 |
15 |
x4 + 2x3 – 1 = 0 |
2x + ln2x – 5.6 = 0 |
1 |
16 |
xx – 21x2 + 55 = 0 |
2x + e-x – 5x + 1 = 0 |
2 |
17 |
x7 + 2x6 + 3x5 + 4x4 + 5x3 + 6x2 + 7x + 8 = 0 |
3x + ex + 1.5 = 0 |
2 |
18 |
8x7 – 7x6 + 6x5 – 5x4 + 4x3 – 3x2 + 2x – 1 = 0 |
ex/2 – (x – 1)2 = 0 |
1 |
19 |
x50 – 1 = 0 |
x + lgx – 0.5 = 0 |
1 |
20 |
x7 + 6x6 + x5 – 4x4 + x3 – 2x2 + x – 1 = 0 |
2x! – e-x + 5 = 0 |
4 |
4. В соответствии с заданным вариантом решить системы уравнений численными методами. Результаты решения сравнить с результатами, полученными при использовании функции solve(). и выполнить проверку. В вариантах с нечетными номерами начальные приближения должны быть определены студентами.
Таблица 2 – Системы нелинейных уравнений
№ вар. |
Система уравнений |
Начальные приближения |
№ вар. |
Система уравнений |
1 |
sin(x1 + x2) – 1.24x1 = 0.1 x12 + x22 = 1 |
x1 = 0.74 x2 = 0.67 |
2 |
sin(x2 + 1) – x1 = 1.2 2x2 + cosx1 = 2 |
3 |
tg(x1x2 + 0.2) = x12 0.6x12 + 2x22 = 1 |
x1 = 0.88 x2 = 0.52 |
4 |
cos(x2 – 1) + x1 = 0.5 x2 – cosx1 = 3 |
5 |
sinx1 + 2sinx2 = 1 2sin3x1 + 3sin3x2 = 0.3 |
x1 = 1.08 x2 = 0.06 |
6 |
x12x2 – x2 – 9 = 0 x1x2 – x12 + 10 = 0 |
7 |
tg(x1 – x2) -4x1 = 0 x12 + 2x22 = 1 |
x1 = - 0.5 x2 = 0.6 |
8 |
x12 + x22 – x1x2 = 0 sin(x1 + x2) – 2.4x + 3.2 = 0 |
9 |
x14 + x22 – 3 = 0 x13 + x23 – 4 = 0 |
x1 = 0.95 x2 = 1.4 |
10 |
2x1x22 – 4x2 – 7.5 = 0 x12 – 3x1x2 + 4.5 = 0 |
11 |
sinx1 – x2 = 1.3 cosx2 – x1 = - 0.82 |
x1 = 1.8 x2 = - 0.35 |
12 |
sinx + 2cosx – 0.8 = 0 x1x22 + 3x1 – 4.5 = 0 |
13 |
x13 + x23 – 6x1 + 3 = 0 x13 – x23 – 6x2 = 2 |
x1 = 0.52 x2 = - 0.37 |
14 |
x12x22 – x22 – 18.75 = 0 x1 + x22 – 8.25 = 0 |
15 |
x2 + e x1 – x2 = 0 x1 + e x1 + x2 = 0 |
x1 = - 0.7 x2 = - 0.35 |
16 |
tg(x1 – x2) – 4x1 = 0 x12 + 3x23 – 4 = 0 |
17 |
x12x2 – 8x1 + 5.5 = 0 x1x2 + 3x2 – 10 = 0 |
|
18 |
x12sinx2 + x22sinx1 + 1 = 0 2x1 + e x1 + x2 – 4 = 0 |
19 |
ex1 + 2x2lnx1 – 3 = 0 x12x2 – 3x1 + 5.4 = 0 |
|
20 |
sinx1 + 3.5sinx2 – 1 = 0 2sin3x + 3sin2x2 - -0.4 = 0 |