Для решения систем нелинейных уравнений в SMath Studio имеется стандартная функция roots (рис. 3). Применение данной функции для решения нелинейных алгебраических уравнений было рассмотрено в лабораторной работе №3.
Рассмотрим особенности применения функции roots для решения систем нелинейных уравнений. Напомним, что в SMath Studio имеются два варианта ее реализации: с заданием начальных значений корней roots(3) и без их задания roots(2). Функция roots определяет только один корень уравнения. Если в уравнении несколько корней, то определяется тот, к которому ближе всего заданное начальное значение переменной.
Варианты решения системы нелинейных уравнений с помощью функции roots(2) показаны на рис. 4.
Задание. Выполнить решение примеров данного раздела, а также решить системы уравнений в соответствии с заданным вариантом.
Решение уравнений численными методами;
Для решения линейных и нелинейных алгебраических уравнений в SMath Studio используется функция solve, которая представлена в двух вариантах — solve(2) и solve(4) (рис. 8).
Пример решения уравнения (4) для обоих вариантов функции solve показан на рис. 9.
В математическом пакете SMath Studio найти решение уравнения можно при помощи стандартной функции roots (рис. 10).
В данной функции реализован метод Ньютона для нахождения корней уравнения, поэтому необходимо задавать начальное значение x, с которого и начинается поиск корня. Чтобы решить уравнение с помощью данной функции надо выполнить следующую последовательность действий:
— задать произвольное, начальное значение аргумента, неизвестной переменной решаемого уравнения;
— задать функцию root по схеме root(f(x),x);
1. Функция roots определяет только один корень уравнения. Если в уравнении несколько корней, то определяется тот, к которому ближе всего заданное начальное значение переменной.
2. Функции roots можно не давать ни какого идентификатора, но поставить знак «равно» сразу после нее – компьютер сообщит значение найденного корня.
3. Очень часто при введении функционального идентификатора f(x) в функцию roots результат не получается. В этом случае вместо идентификатора f(x) следует в функции roots напечатать вид самого уравнения, точнее его левой части. Например. roots(x2-6x+5;x)
Варианты решения уравнения (5) с помощью функции roots(2) показаны на рис. 11.
Три первых варианта демонстрируют разные способы записи первого аргумента функции roots. Вариант 4 демонстрирует возможность присвоения функции roots своего идентификатора, тогда под этим идентификатором и сохранится найденное значение корня. Например, X1:=roots(f(x);x), далее можно вывести значение этого идентификатора X1=4.
Поиск корней уравнения (5) с помощью функции roots(3) (рис. 10) путем изменения их приближенных значений показаны на рис. 12.
Приближенные значения корней могут быть известны из физического смысла задачи, из решения аналогичной задачи при других исходных данных, из решения задачи графическим методом.
Из рис. 12 следует, что из трех корней уравнения (5) функция roots(2) определяет только один корень. Для выражения y(x) с известным корнем а нахождение дополнительных корней y(x) эквивалентно поиску корней уравнения h(x) = y(x)/(x — a). Подобный прием полезен для нахождения корней, расположенных близко друг к другу. Проще искать корень выражения h(x), чем пробовать искать другой корень уравнения y(x) = 0, выбирая различные начальные приближения.
Поиск всех корней уравнения (5) с помощью вышеуказанного способа показан на рис. 13.
Если функция y(x) имеет малый наклон около искомого корня, то функция roots может сходиться к значению x, отстоящему от корня достаточно далеко. В таких случаях для нахождения более точного значения корня следует заменить уравнение y(x) = 0 на z(x) = 0:
В некоторых случаях может отсутствовать сходимость функции roots. Эта ошибка может быть вызвана следующими причинами:
· уравнение не имеет корней.
· корни уравнения расположены далеко от начального приближения.
· выражение имеет локальные экстремумы между начальным приближением и корнями.
· выражение имеет разрывы между начальными приближениями и корнями.
· выражение имеет комплексный корень, но начальное приближение было вещественным.
Чтобы установить причину ошибки, исследуйте график y(x). Он поможет выяснить наличие корней уравнения y(x) = 0 и, если они есть, то определить приблизительно их значения. Чем точнее выбрано начальное приближение корня, тем быстрее будет roots сходиться.
Задания 5,6. Выполнить решение всех примеров данного раздела, а также решить уравнения в соответствии с заданным вариантом.
Решение уравнений матричным методом в smath studio
Решение нелинейных уравнений
Для решения одного нелинейного уравнения с одной неизвестной система MathCAD имеет встроенную функцию, которая в зависимости от типа задачи может иметь или два или четыре аргумента и, соответственно, работает несколько по-разному: root(f(x),x); root(f(x),x,a,b), где f(x) — скалярная функция, определяющая исходное нелинейное уравнение (4.1); х – скалярная переменная, относительно которой решается уравнение; а, b – границы интервала, внутри которопй происходит поиск корня.
Первый тип функции root требует предварительного задания начального приближения х0 переменной х. Поиск корня будет производиться вблизи этого значения методом секущих. Если уравнение неразрешимо, то при попытке найти его корень будет выдано сообщение об ошибке. Кроме того, к ошибке или выдаче неправильного корня может привести и попытка применить метод секущих в области локального максимума или минимума функции f(x). В этом случае секущая будет иметь направление, близкое к горизонтальному, выводя точку следующего приближения далеко от предполагаемого корня. Аналогичные проблемы могут возникнуть, если начальное приближение выбрано слишком далеко от настоящего решения, или f(x) имеет особенность типа бесконечности.
Для решения одного нелинейного уравнения с одной неизвестной система SMath Studio имеет встроенную функцию, которая в зависимости от типа задачи может иметь или два или три аргумента: roots(f(x); x) или roots(f(x); x; a), где f(x) – скалярная функция, определяющая исходное нелинейное уравнение (4.1); х – скалярная переменная, относительно которой решается уравнение; а – начальное приближение переменной х.
Решение (распечатка SMath Studio)
Решение систем линейных алгебраических уравнений
Пример 3.2. Решить систему уравнений
Для решения систем уравнений в среде MathCAD можно применять вычислительный блок Given/Find. Он состоит из трех частей:
1. ключевое слово Given;
2. система уравнений, записанная с помощью логических операторов;
3. вызов встроенной функции Find(xl, х2. хп).
Перед применением блока Given/Find необходимо задать начальные значения переменным xl, x2,хп.
Однако более наглядным является решение СЛАУ в матричной форме. В этом случае используется встроенная функция lsolve(A,b), где А — матрица коэффициентов системы, b — вектор правых частей.
Решение (распечатка MathCAD)
Для решения систем уравнений в среде SMath Studio применяется матричный метод решения: коэффициенты левых частей уравнений записываются в квадратную матрицу A размером 4´4, свободные коэффициенты записываются в столбец B размером 4´1. Решением будет столбец X, который находится умножением обратной матрицы на столбец B:
. Решение существует, если определитель матрицы A не равен нулю. Получив решение, нужно сделать проверку, т.е. убедиться, что
Пример выполнения задания 2
Решение иженерных задач средствами
Лабораторная работа № 2
Нахождение корней нелинейных уравнений. Решение систем нелинейных уравнений
Цель: изучить основные возможности приложения Smath Studio для решения нелинейных уравнений и систем.
Вопросы для самоконтроля
1. Что является корнем уравнения?
2. Правило записи функции для использования команды solve.
3. В чем разница между численным и аналитическим нахождением корней уравнения?
4. Чем отличаются команды solve(2) и solve(4).
5. Для чего используется функция polyroots?
6. Правило записи вектора коэффициентов для polyroots.
7. Что является решение системы уравнений?
8. Правило записи уравнений для использования команды roots.
9. В чем разница между численным и аналитическим решениями системы уравнений?
10. Чем отличаются команды roots (2) и roots (3).
Индивидуальные задания 1
Найти корень уравнения численно и, если это возможно, аналитически. Результаты сравнить. Выполнить проверку.
Индивидуальные задания 2
Найти численно корни полинома. Выполнить проверку.
Индивидуальные задания 3
Найти численное решение системы. Выполнить проверку.
Пример выполнения задания 1
1. Запишите функцию (предварительно приведя уравнение к виду f(x)=0):
2. Постройте график функции. График пересекает ось абсцисс в одной точке, значит, уравнение имеет один корень.
3. Запишите стандартную команду:
Справа от знака равенства увидим результат: 0,7391.
2 Выполните проверку, найдя значение функции в полученной точке:
Если бы решение было точным, то при проверке получили бы 0. Значение
означает, что результат получен с точностью до 4-го знака.
Конечный вид документа SMathStudio:
1. Запишите функцию в виде:
2 Выделите курсором переменную х.
3. В меню выбрать Вычисление ® Найти корни.
4. Выполните проверку.
1. Конечный вид документа SMathStudio:
1. Запишите функцию:
2. Для получения аналитического решения запишите стандартную команду:
3. Выполните проверку, найдя значение функции в полученной точке.
Если уравнение имеет несколько корней (как, например, уравнение
Можно использовать второй вариант этой процедуры для выбора решения на заданном промежутке. Для этого при наборе solve во всплывающей подсказке выбираем solve(4) и в шаблон вписываем:
Solve( ; ; левая граница интервала; правая граница интервала). Получим:
Если функция f(x) в уравнении f(x)=0 представляет собой полином степени n, то процедура solve может выдать только один корень. Чтобы получить все корни полинома (их количество совпадает со степенью полинома), стоит использовать встроенную функцию polyroots(v). Например, найдем численно корни полинома x 3 +2x-1=0.
1) задаем функцию (левую часть уравнения f(x)=0).
2) задаем вектор коэффициентов (кнопка на ПИ «Матрица»), в появившемся диалоговом окне указываем количество строк (равно степени полинома +1) и столбцов (количество уравнений).
3) записываем функцию polyroots(v)=.
4) делаем проверку, подставив найденные значения в функцию.
Конечный вид документа Smath Studio:
Пример выполнения задания 2
1. Записываем функцию roots( ; ).
2. Для получения численного решения ставим знак «=». Получим результат с заданным количеством знаков после запятой.
3. Выполняем проверку, подставив полученные значения в исходную систему уравнений. В данном примере 1-ое уравнение решено точно, 2-ое – с точностью до 3-го знака.
4. Вид документа SMathStudio:
Можно каждое уравнение системы привести к виду f(x)=0. Тогда запись решения будет выглядеть следующим образом:
Если нужно получить одно из нескольких возможных решений, можно задать начальное приближение (координаты ближайшей известной к ответу точки) для переменных следующим образом:
МЕТОД РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ.
Метод квадратных корней.
Метод квадратных корней используется для решения линейной системы:
У которой матрица А симметрическая, т.е.
Он является более экономным и удобным по сравнению с методами решения систем общего вида, рассмотренными ранее.
Решение системы осуществляется в два этапа.
Прямой ход. Представим матрицу А в виде произведения двух взаимно транспонированных треугольных матриц:
Перемножая матрицы Т’ и Т и приравнивая матрице A, получим следующие формулы для определения
После того, как матрица Т найдена, систему заменяем двумя эквивалентными ей системами с треугольными матрицами:
Обратный ход. Записываем в развернутом виде системы:
Отсюда последовательно находим:
При вычислениях применяется обычный контроль с помощью сумм, причем при составлении суммы учитываются все коэффициенты соответствующей строки.
Заметим, что при действительных
могут получиться чисто мнимые
. Метод применим и в этом случае .
Метод квадратных корней дает большой выигрыш во времени по сравнению с рассмотренными ранее методами, так как, во-первых, существенно уменьшает число умножений и делений (почти в два раза для больших n), во-вторых, позволяет накапливать сумму произведений без записи промежуточных результатов.
Задание. Решить систему линейных уравнений методом квадратных корней.
Провести эту работу в SMathStudio.
Рассмотрим систему линейных уравнений, записанную в матричном виде:
Представим матрицу А в виде произведения А=ВС, где
Отсюда искомый вектор х может быть вычислен из цепи уравнений
Так как матрицы B и С треугольные, то системы легко решаются, а именно:
Из формул видно, что числа
выгодно вычислять вместе с коэффициентами
Эта схема вычислений называется схемой Халецкого. В схеме применяется обычный контроль с помощью сумм.
Схема Халецкого удобна для работы на клавишных вычислительных машинах, так как в этом случае операции «накопления» можно проводить без записи промежуточных результатов.
Задание. Решить систему линейных уравнений методом Халецкого.
Метод простой итерации
Пусть система линейных уравнений
Каким-либо образом приведена к виду
где С – некоторая матрица, а f – вектор-столбец.
Исходя из произвольного вектора
сторим итерационный процесс
или в развернутой форме
Производя итерации, получим последовательность векторов
Доказано, что если элементы матрицы С удовлетворяют одному из условий
то процесс итерации сходится к точному решению системы х при любом начальном векторе
Таким образом, точное решение системы получается лишь в результате бесконечного процесса и всякий вектор
из полученной последовательности является приближенным решением. Оценка погрешности этого приближенного решения
Эти оценки можно усилить соответственно так:
Процесс итераций заканчивают, когда указанные оценки свидетельствуют о достижении заданной точности.
может быть выбран, вообще говоря, произвольно. Иногда берут
Однако наиболее целесообразно в качестве компонент вектора
взять приближенные значения неизвестных, полученные грубой прикидкой.
Первый способ. Если диагональные элементы матрицы А отлины от нуля, т. е.
то систему можно записать в виде:
В этом случае элементы матрицы С определяются следующим образом:
и тогда условия приобретают вид:
Неравенства будут выполнены, если диагональные элементы матрицы А удовлетворяют условию:
т.е. если модули диагональных коэффициентов для каждого уравнения системы больше суммы модулей всех остальных коэффициентов (не считая свободных членов).
Второй способ покажем на примере.
Вообще говоря, для любой системы с невырожденной матрицей существуют сходящиеся итерационные методы решения, но далеко не всегда они удобны для практических вычислений.
Если метод итераций сходится, он дает следующие преимущества по сравнению с методами, рассмотренными выше.
1) Если итерации сходятся достаточно быстро, т. е. если для решения системы требуется менее n итераций, то получаем выигрыш во времени, так как число арифметических действий, необходимых для одной итерации, пропорционально n 2 , а общее число арифметических действий в методе Гаусса, например, пропорционально n 3 .
2) Погрешности округления в методе итераций сказываются значительно меньше, чем в методе Гаусса. Кроме того, метод итераций является самоисправляющимся, т. е. отдельная ошибка, допущенная в вычислениях, не отражается на окончательном результате, так как ошибочное приближение можно рассматривать как новый начальный вектор.
Последнее обстоятельство часто используется для уточнения значений неизвестных, полученных методом Гаусса.
3) Метод итераций становится особенно выгодным при решении систем, у которых значительное число коэффициентов равно нулю. Такие системы появляются, например, при решении уравнений в частных производных.
4) Процесс итераций приводит к выполнению однообразных операций и сравнительно легко программируется на ЭВМ.
Задание. Решить систему линейных уравнений методом простых итераций.
Указанные в методе простой итерации условия сходимости остаются верными и для метода Зейделя. Обычно метод Зейделя дает лучшую сходимость, чем метод простой терации, хотя это бывает не всегда. Кроме того, метод Зейделя может оказаться более удобным при программировании, так как при вычислении
нет необходимости хранить значения
Задание. Решить систему линейных уравнений методом Зейделя.
Решение систем нелинейных уравнений в smath studio
Для решения одного нелинейного уравнения с одной неизвестной система MathCAD имеет встроенную функцию, которая в зависимости от типа задачи может иметь или два или четыре аргумента и, соответственно, работает несколько по-разному: root(f(x),x); root(f(x),x,a,b), где f(x) — скалярная функция, определяющая исходное нелинейное уравнение (4.1); х – скалярная переменная, относительно которой решается уравнение; а, b – границы интервала, внутри которопй происходит поиск корня.
Однако более наглядным является решение СЛАУ в матричной форме. В этом случае используется встроенная функция lsolve(A,b), где А — матрица коэффициентов системы, b — вектор правых частей.
Методы обработки числовых данных
Данные, с которыми приходится иметь дело инженеру, часто представляются в виде таблиц. Таким образом, функция у = f(x) задается не аналитическим выражением, а в виде пар чисел
, т.е. задача построения математической модели функции по ее известным значениям.
В зависимости от специфики задачи функция f(х) может отвечать различным требованиям (рис. 4):
должна проходить через точки
В этом случае говорят об интерполяции данных функции
во внутренних точках между
и об экстраполяции ее за пределами интервала, содержащего все
, не обязательно проходя через точки
, учитывая, что данные
В задачах регрессии данные приближаются некоторой функцией
таким образом, чтобы минимизировать совокупность ошибок
. Тогда задача нахождения эмпирической функции
1. установить вид зависимости
2. определить неизвестные параметры функции
называют невязками или отклонениями теоретических значений
от соответствующих экспериментальных значений
В методе наименьших квадратов в качестве неизвестных параметров функции
Возьмем, например, в качестве функции
Задача сводится к отысканию значений параметров а и дающих минимум функции
Такая функция является функцией двух переменных а и b, т.к. значения
– постоянные числа.
Для того чтобы найти минимум такой функции нужно приравнять к нулю ее частные производные, т.е.
Преобразуем систему (20):
Эта система называется системой нормальных уравнений.
После ее решения определяются параметры а и b. Можно доказать, что в точках а и b функция S имеет минимум.
Аналогичным образом можно получить уравнения для определения коэффициентов при других типах функций.
Пример 2.5. Методом наименьших квадратов найти эмпирическую формулу
для функции, заданной таблицей (табл. 8).
Сведем все вычисления, необходимые для составления нормальной системы уравнений (21), в таблицу (табл. 9).
Тогда система нормальных уравнений (21) имеет вид
Для сравнения полученной зависимости и исходных данных
можно составить таблицу
Таким образом, разность полученных на основе прямой значений и заданных в табл. 8 составляет менее 10 %.
Реализация численных методов в среде MathCad или SMath Studio
Для решения одного нелинейного уравнения с одной неизвестной система SMath Studio имеет встроенную функцию, которая в зависимости от типа задачи может иметь или два или три аргумента: roots(f(x); x); roots(f(x); x; a), где f(x) – скалярная функция, определяющая исходное нелинейное уравнение (4.1); х – скалярная переменная, относительно которой решается уравнение; а – начальное приближение переменной х.
Перемножая матрицы Т’ и Т и приравнивая матрице A, получим следующие формулы для определения