- •Поиск корня нелинейного уравнения с помощью функции
- •Root (выражение, Имя_переменной)
- •Вычисление корней многочлена с помощью функции polyroots
- •Директива Given для подготовки блока решения системы уравнений
- •Решение систем нелинейных уравнений с помощью функций
- •Ввод ограничений при решении систем нелинейных уравнений
- •Примеры решения нелинейных уравнений
- •Решение системы из двух дифференциальных уравнений адаптивным методом Рунге-Кутта
- •Решение дифференциальных уравнений
- •Решение системы из двух дифференциальных уравнений методом Рунге-Кутта с фиксированным шагом
Директива Given для подготовки блока решения системы уравнений
При решении систем нелинейных уравнений используется специальный вычислительный блок, открываемый служебным словом-директивой Given и имеющий следующую структуру:
Given
<уравнения>
[ограничительные условия]
<выражения с функциями Find и Minerr>
Рекомендуется дополнить блок проверкой решения системы.
Решение систем нелинейных уравнений с помощью функций
Find и Minerr
В блоке используется одна из следующих функций:
Find(v1,v2,...,vn) – возвращает значение одной или ряда переменных
для точного решения;
Minerr(v1,v2,...,vn) – возвращает значение одной или ряда переменных
для приближенного решения.
Между этими функциями существуют принципиальные различия. Первая функция используется, когда решение реально существует (хотя и не является аналитическим). Вторая функция пытается найти максимальное приближение даже к несуществующему решению путем минимизации среднеквадратичной погрешности решения.
Ввод ограничений при решении систем нелинейных уравнений
Логические операторы вводятся следующим образом:
Выражение |
Ввод |
Назначение оператора |
e1 > e2 |
e1 > e2 |
e1 больше e2 |
e1 < e2 |
e1 < e2 |
e1 меньше e2 |
e1
|
e1 Ctrl) e2 |
e1 больше или равно e2 |
e1
|
e1 Ctrl( e2 |
e1 меньше или равно e2 |
e1
|
e1 Ctrl # e2 |
e1 не равно e2 |
e1 = e2 |
e1 Ctrl = e2 |
e1 равно e2 |
Примеры решения нелинейных уравнений
Функции Find и Minerr могут использоваться для решения одного или ряда уравнений
Пример решения некорректной задачи
Использовать знак
присваивания в блоке
нельзя.
Поэтому система
отвечает на попытку решения
сообщением об ошибке
- значение х0 выделено красным цветом
Однако задание уравнения в виде логического
равенства позволяет
найти решение
Решение с применением
функции
также
позволяет найти решение
Пример 2: поиск точек пересечения параболы и прямой.
В этом случае решается система из двух уравнений при помощи функции Find (одно из них нелинейное) с ограничительными условиями, задающими область поиска корня (( x<0 для отрицательного корня и x>0 для положительного корня).
Точки пересечения прямой и параболы
Найдем первое решение
График показывает, что прямая
и
парабола х2
перескаются в двух точках при х около
-1.7 и +4.8
Ищем первое решение при:
Решается
система уравнений
при ограничении x<0
Найденное первое решение
Проверка
решения вычислением y
Найдем второе решение (подобно первому, но задав ограничение x>0)
Найденное второе решение
Пример 3: решение системы нелинейных уравнений с помощью функции Minerr. При использовании этой функции нужно проявлять известную осторожность и обязательно предусматривать проверку решений. Нередки случаи, когда решения могут оказаться ошибочными потому, что из нескольких корней система предлагает нереальный (или не представляющий интереса) корень. Поэтому необходимо указывать как можно точнее начальные приближения к решению.
Начальное
значение переменных
Начало вычислительного блока
Решаемая
система уравнений
Найденное решение
Проверка
решения
