logo
Лабы

Нахождение корней нелинейного уравнения

Для нахождения корня уравнения можно воспользоваться функциейroot(f(x),x), где первым аргументом служит функция f(x), а вторым аргументом служит имя неизвестной величины, т.е. x. Перед обращением к этой функции нужно искомой переменной присвоить начальное значение, желательно близкое к ожидаемому ответу.

Приведенное описание функции пригодно для всех версий системы МС. Эту функцию можно вызвать с помощью кнопки f(x) на панели инструментов, выбрав в левом списке пункт Solving. В МС14 выбранная таким образом функция имеет четыре аргумента. Первые два из них − такие же, как было описано выше, а третьим и четвертым аргументами служат левая и правая границы интервала, на котором лежит искомый корень. Если задать третий и четвертый аргументы, то начальное значение переменной можно и не присваивать.

Рассмотрим использование этой функции на примере уравнения . Сначала выполним отделение корней. Для этого построим графики функций в правой и левой части (рис.19). Из рисунка видно, что уравнение имеет два корня. Один лежит на отрезке [–2; 0], другой же – на [0; 2]. Воспользуемся первым вариантом формата функцииroot. Правый корень уравнения по графику приближенно равен 1. Поэтому выполним присвоение x := 1, вызовем функцию root, укажем два первых аргумента и нажмем клавишу =. На экране получим результат 1.062. Теперь воспользуемся вторым вариантом шаблона. Снова вызовем функциюroot, укажем четыре аргумента и нажмем клавишу =. На экране получим результат

.

Второй корень найдем так:

.

Число выведенных на экран знаков вычисленного корня не совпадает с точностью нахождения результата. В памяти компьютера число хранится с пятнадцатью знаками, а на экран из этой записи выводится то количество знаков, которое установлено в меню Format. Насколько найденное значение корня отличается от точного, зависит от метода вычисления корня и от числа итераций в этом методе. Это регулируется системной переменной TOL, которая по умолчанию равна 0,001. В системе МС14 функция root ориентирована на достижение точности , если, и на достижение точности, задаваемое переменнойTOL, если ее значение меньше . Значение этой переменной меньше, чем, задавать не рекомендуется, т.к. может нарушиться сходимость вычислительного процесса.

Следует учесть, что в некоторых исключительных случаях результат может отклоняться от точного значения корня значительно больше, чем на величину TOL. Изменить значение TOL можно или простым присвоением, или с помощью меню Tools пункт Worksheet Options пункт Built-In Variables.

Для нахождения корней многочлена можно воспользоваться другой функцией, которая выдаст все корни многочлена, включая комплексные. Это функция polyroots(■), где аргументом служит вектор, координатами которого являются коэффициенты многочлена, первая координата – свободный член, вторая – коэффициент при первой степени переменного, последняя – коэффициент при старшей степени. Функция вызывается так же, как и функция root. Например, корни многочлена можно получить так:

.

Некоторые простые уравнения можно решать и с помощью символьных преобразований. Можно найти корни многочлена второй или третьей степени, если коэффициенты являются целыми числами или обыкновенными дробями. В качестве примера возьмем многочлены, корни которых известны. Эти многочлены мы получим как произведение линейных множителей. Возьмем многочлен . Получим его запись по степенямx. Для этого, как было описано в первом занятии, выделим в этой записи переменное x, выберем в меню Symbolics пункт Variable и в раскрывшемся окне пункт Collect:

.

В полученном результате выделим переменное x, выберем в меню Symbolics пункт Variable и в раскрывшемся окне пункт Solve. Получим

.

Как видим, корни найдены правильно. Возьмем многочлен третьей степени . Найдем его корни тремя способами:

,

,

и символьными преобразованиями (результат на рис. 20).

Как видим, последний результат мало пригоден для использования, хотя и является «абсолютно» точным. Этот результат будет еще «хуже», если в многочлен добавить член с . Попробуйте с помощью символьных преобразований найти корни такого многочлена. Попробуйте с помощью символьных преобразований найти корни многочлена четвертой степени.

Рис. 20

Символьные вычисления эффективны, если корни являются целыми или рациональными числами:

.

В этом примере символьные вычисления произведены с помощью панели Symbolic. Приведено также решение с помощью функции polyroots. Последние результаты менее эффектны, хотя с точки зрения вычислений ничем не хуже, так как разумный инженер округлит второй корень до числа – i.

Символьное нахождение корней можно применять и для уравнений, содержащих функции, отличные от многочленов:

.При использовании символьных вычислений следует быть осторожными. Так при нахождении нулей следующей функции МС14 выдает только одно значение: , хотя на промежуткеэта функция имеет 6 нулей:. В более ранней версии системы (МС2000) указывались все нули.

Для полного ответа к ним нужно добавить число, кратное .

Решим более сложную задачу. Функция y(x) задана неявно уравнением . Требуется построить график этой функцииy(x) на отрезке [2; 4].

Для решения этой задачи естественно воспользоваться функцией root. Однако она требует указания отрезка, на котором лежит искомый корень. Для этого найдем значение y графически при нескольких значениях x. (Графики приводятся ниже в виде отдельных рисунков, а не так как они размещены на экране MATHCAD).

Строим график (рис.21). На нем видно, что «разумные» значения y лежат в промежутке [– 5; 5]. Построим график в этом диапазоне. Изменения можно внести в шаблоны на имеющемся рисунке. Результат приведен на рис. 22. Видим, что корень лежит на отрезке [1; 3]. Возьмем следующее значение x. На бумаге – это новые записи, а на экране достаточно внести изменения в блоке, где x присваивается значение. При получим рис.23. Согласно ему корень лежит на отрезке [3; 4]. Приполучим рис. 24. Корень лежит на отрезке [4; 5]. В итоге можно ожидать, что корень при любыхx лежит на отрезке [1; 5]

Введем функцию пользователя .Построим график этой функции, считая переменным z, причем шаблоны по вертикальной оси можно не заполнять, система сама произведет масштабирование. График приведен на рис.25. По данному графику можно отследить значения функции с помощью панели X-Y Trace, как было описано выше.