Опубликован: 24.04.2013 | Уровень: для всех | Доступ: свободно | ВУЗ: Уральский государственный экономический университет
Лекция 4:

Решение уравнений

< Лекция 3 || Лекция 4: 1234 || Лекция 5 >
Аннотация: Лекция посвящена численному и аналитическому решению уравнений и систем уравнений в среде MathCAD. Продемонстрированы приемы численного решения уравнений и систем с использованием встроенных функций. Рассмотрены различные способы аналитического решения систем линейных уравнений. Приведены методы решения задач оптимизации.

Цель лекции. Показать технику численного решения нелинейных уравнений с использованием сервисов MathCAD. Показать различные методы аналитического решения систем линейных уравнений.

4.1. Численное решение нелинейных уравнений

Относительно небольшое количество задач решения уравнений можно решить аналитически. Аналитическое решение предполагает точное определение корней либо нахождение алгоритма, по которому корни всегда могут быть найдены. На практике часто приходится искать решение при помощи численных методов [1, 11]. Уравнения решаются численными методами с заданной погрешностью. В MathCAD погрешность задается системной константой TOL. Как правило, отыскание корней алгебраического уравнения (или системы уравнений) численными методами связано с двумя задачами:

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

Для численного решения уравнений в MathCAD существуют встроенные функции[1, 10], в которых реализованы алгоритмы известных численных методов: итерационный метод секущих; различные градиентные методы и другие. Почти все встроенные функции предполагают, что корни уже приблизительно локализованы.

Использование функции root()

Рассмотрим решение простейших уравнений вида F(x)=0. Решить уравнение – значит найти все его корни, т.е. такие числа, при подстановке которых в исходное уравнение получим верное равенство. Если функция нескольких аргументов F(x, у, ..)=0. , все остальные значения должны быть заданы для искомого x. Для локализации корней (исследования их количества и примерного расположения) полезно построить график функции и определить все точки пересечения графика функции с осью OX.

Функция root () вычисляет значение переменной, при котором F(x, у, ..)=0. Если уравнение имеет несколько корней, функцию надо вызывать соответствующее число раз. Вычисления реализуются итерационным методом. Данный метод заключается в постепенном приближении к искомому корню с некоторой точностью от начального значения переменной. Точность вычислений задаётся системной переменной TOL, определённой в меню Tools/ Worksheet Options.. По умолчанию равной 0.001.

root(F(x, у, ...), x, [a, b]) возвращает с заданной точностью значение переменной, x, лежащей между a и b при котором функция равна нулю. Значения F() для a и b должны быть разных знаков. Третий аргумент не обязателен. Выбор решения определяется выбором начального значения переменной

Пример 4.1

Решить уравнение 5y^2\ln{(y+4)}-3\ln{(3y+2)}=0

  • Зададим функцию f(y)=5y^2\ln{(y+4)}-3\ln{(3y+2)}
  • Найдем начальные значения корней. Для этого построим график функции. Подберем масштаб для наилучшего визуального наблюдения точек пересечения графика с осью OX.
  • Точки пересечения графика с осью OX лежат в интервалах (-1; 0) и (0; 1)
  • Определили начальные приближения корней. Используем функцию root()
  • Можно провести проверку,

f(y):=5y^2\ln{(y+4)}-3\ln{(3y+2)}

1 корень:

y:=-1

y1:=root(f(y),y)

y1:=-0.274

Проверка: f(y1):=9.548 \cdot 10^{-15}

2 корень:

y:=1

y1:=root(f(y),y)

y1:=0.746

Проверка: f(y):=3.219

Листинг решения примера 4.1

Рис. 4.1. Листинг решения примера 4.1

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

Пример 4.2

Решить уравнение F1(z,y)=z^3-9z^2+20z+yz+2y^3-15y=0 для y=2.

Осуществляется решение уравнения при помощи функции root, для нескольких последовательных начальных значений корней. Результат выдается в виде табулированных значений – таблицы.

  • Задаем уравнение F1().
  • Строим график.
  • Всегда существует вероятность "просмотреть" корень, расположенный между узлами сканирования. Начальное значение корня z0 вводим как табулированную переменную в визуальной области корней, определенной по графику.
  • Строим функцию U(z0) как решение через root() - значение корня уравнения F1(z0,y)=0. То есть определяется разный корень в зависимости от начального значения z0.

y:=2

F1(z,y):=z^3-9z^2+20z+yz+2y^3-15y

Начальное значение корня z:

z0:=-2,0..8

u(z0):=root(F1(z0,y),z0)

u(z0):=\begin{array}{|c|ccccc|}\hline 1 \\ \hline 1 \\ \hline 2.5858 \\ \hline 1 \\ \hline 5.4142  \\ \hline 5.4142\\ \hline \end{array}

Проверка:

F1(1,y):=0

F1(2.5858,y)=-6.0831 \cdot 10^{-5}

F1(5.4142,y)=-1.6933 \cdot 10^{-4}

 Листинг решения примера 4.2

Рис. 4.2. Листинг решения примера 4.2

Функция поиска корней полинома polyroots()

Для поиска корней обычного полинома р(х) степени n MathCAD содержит очень удобную функцию:

polyroots(V) возвращает вектор корней многочлена (полинома) степени n, коэффициенты которого находятся в векторе V, имеющем длину равную n+1.

Пример 4.3

Решить уравнение x^5-2x^4-3x^3-x^2-4x=-21.

Осуществляется решение уравнения при помощи функции polyroots() (Рис.4.3).

  • Задаем вектор, элементы которого – коэффициенты полинома, начиная со свободного члена.
  • Используем функцию polyroots().
  • Решение представляется в виде матрицы, включающей все корни, в том числе и комплексные.

f(x):=(x^5-2x^4-3x^3-x^2-4x+21)

f(x)\large{=}0

V:=\begin{array}{|c|ccccc|}\hline 21 \\ \hline -4 \\ \hline -1 \\ \hline -3 \\ \hline -2  \\ \hline 1\\ \hline \end{array}

x:=polyroots(V)

x:=\begin{array}{|c|ccccc|}\hline -1.835 \\ \hline -0.334+1.557i \\ \hline -0.334-1.557i \\ \hline 1.503 \\ \hline 3 \\ \hline \end{array}

Проверка:

f(x):=\begin{array}{|c|ccccc|}\hline -3.289 \cdot 10^{-10} \\ \hline -3.289 \cdot 10^{-10} \\ \hline -3.289 \cdot 10^{-10}-1.421i \cdot 10^{-14} \\ \hline -3.289 \cdot 10^{-10} \\ \hline -3.289 \cdot 10^{-10} \\ \hline \end{array}

< Лекция 3 || Лекция 4: 1234 || Лекция 5 >
Татьяна Швердюк
Татьяна Швердюк
Украина