 
        
        
	
Лабораторная работа № 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 | 
