Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие (MathCad).doc
Скачиваний:
97
Добавлен:
27.11.2019
Размер:
3.98 Mб
Скачать

2.4.5. Поиск всех корней степенного многочлена()

Рассмотрим обычный степенной многочлен (полином) целой степени n:

p(x) = a0 + a1x + a2x2 + … + anxn.

Поиск корней этого многочлена – достаточно сложная и специфическая задача. Однако СКМ Mathcad имеет очень удобную функцию polyroots(A), легко решающую эту задачу. Она возвращает вектор всех корней многочлена (полинома) степени n, коэффициенты которого находятся в векторе V, имеющем длину n + 1. Системная переменная ORIGIN должна иметь значение 0. Обычно оно и задано таким по умолчанию. Заметим, что корни полинома могут быть как вещественными, так и комплексными числами.

П ример 2.21. Найти все корни уравнения x5 + 8x4 + 31x3 + 80x2 + 94x + 20=0:

Обратите внимание на то, что среди корней есть два комплексно сопряженных корня. Вообще комплексные корни в многочлене встречаются всегда попарно и бывают комплексно сопряженными.

2.4.6. Решение систем нелинейных уравнений()

При решении систем нелинейных уравнений используется специальный вычислительный блок, открываемый директивой Given и имеющий следующую структуру:

Начальные условия

Given

Уравнения

Ограничительные условия

Выражения с функциями Find, Minerr, Maximize и

Minimize

Начальные условия определяют начальные значения искомых переменных и задаются в виде переменная  := значение, то есть обычным присваиванием переменным заданных значений. Если переменных несколько, то используется векторное представление для начальных условий.

Уравнения задаются в виде левая часть выражения = левая часть выражения с применением жирного знака равенства = (вводимого клавишами Ctrl+=). Ограничительные условия обычно задаются в виде неравенств или равенств, которые должны удовлетворяться при решении системы уравнений.

В блоке Given используется одна из следующих двух функций:

  • Find(v1,v2,…,vn) — возвращает значение одной или нескольких переменных для точного решения;

  • Minerr(v1,v2,…,vn) — возвращает значение одной или нескольких переменных для приближенного решения методом наименьших квадратов.

Между этими функциями существуют принципиальные различия. Первая функция используется, когда решение реально существует (хотя и не является аналитическим). Вторая функция пытается найти максимальное приближение даже к несуществующему решению путем минимизации среднеквадратичной погрешности решения. Позже мы рассмотрим и другие функции, включаемые в блок решения — Maximize и Minimize.

Часто системы нелинейных уравнений приходится решать при наличии определенных ограничений на значения тех или иных переменных или выражений с ними. Такие ограничения имеют вид равенств или неравенств. Для их задания используются логические операторы, представленные ниже.

Оператор

Клавиши

Значение оператора

e1 > e2

e1 > e2

e1 больше e2

e1 < e2

e1 < e2

e1 меньше e2

e1 ³ e2

e1 Ctrl ) e2

e1 больше или равно e2

e1 £ e2

e1 Ctrl ( e2

e1 меньше или равно e2

e1 ¹ e2

e1 Ctrl # e2

e1 не равно e2

e1 = e2

e1 Ctrl = e2

e1 равно e2

Пример 2.22. Найти корень уравнения x2 = 3 с помощью функции Find. Решение представлено ниже:

x := 10

Given

x2 = 3

x0 := Find(x)

x0 = 1.732

Обратите внимание на то, что равенство, корни которого ищутся, записывается с жирным знаком равенства = (знак = зарезервирован как оператор вывода). Функция Minerr используется аналогично.

Пример 2.23. Решить систему нелинейных уравнений:

и выполнить проверку решения. Решение дано ниже:

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