Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Численное решение нелинейных уравнений
В общем виде уравнение можно представить, как f(x) = 0. В зависимости от вида функции f(x) различают алгебраические и трансцендентные уравнения. Алгебраическими уравнениями называются уравнения, в которых значение функции f(x) представляет собой полином n -й степени ( n≥ 2 ). Всякое неалгебраическое уравнение называется трансцендентным. Функция f(x) в таких уравнениях содержит хотя бы одну из следующих функций: показательную, логарифмическую, тригонометрическую или обратную тригонометрическую. Решением уравнения f(x)=0 называется совокупность корней , при которых уравнение обращается в тождество . Однако, точные значения корней могут быть найдены аналитически только для некоторых типов уравнений. Еще меньше возможностей при получении точного решения трансцендентных уравнений. Следует отметить, что задача нахождения точных значений корней не всегда корректна. Так, если коэффициенты уравнения являются приближенными числами, точность вычисленных значений корней заведомо не может превышать точности исходных данных. Эти обстоятельства заставляют рассматривать возможность отыскания корней уравнения с ограниченной точностью (приближенных корней). Задача нахождения корня уравнения с заданной точностью e ( > 0 ) считается решенной, если найдено приближенное значение , которое отличается от точного значения корня не более чем на значение e:
Для отделения корней нелинейных уравнений применяются графический и аналитический методы. Для уточнения корней с заданной степенью точности существует множество численных методов. Самыми распространенными из них являются: метод Ньютона, метод хорд, метод итераций и метод половинного деления [3].
Процесс нахождения приближенного корня нелинейного уравнения состоит из двух этапов: 1) отделение корня уравнения (локализация корня на отрезке); 2) уточнение корня с заданной точностью.
Пример 1.1-1. Отделить и уточнить корень уравнения . Согласно теореме о существовании и единственности корня на отрезке, найдем отрезок, на концах которого функция имеет разные знаки, а первая производная непрерывна и знакопостоянна (рис. 1.1-1).
Рис. 1.1-1. Отделение корня нелинейного уравнения
Условия существования и единственности корня на отрезке [0; 1] выполняются. Команды построения графика функции f(x) на отрезке [0; 1] и график функции приведены на рис. 1.1-2.
Рис. 1.1-2. Построение графика функции f(x)
Для решения нелинейных уравнений в среде Matlab используются встроенные функции: solve(), fzero(), root(). Функция fzero() используется для нахождения вещественных корней уравнений вида f(х)=0. Алгоритм, реализованный этой функцией, представляет собой комбинацию метода дихотомии (деления пополам), метода секущих и метода обратной квадратичной интерполяции. В простейшем варианте обращения кроме указателя на функцию, корень которой необходимо найти, задается окрестность х0, с которой начинается поиск: х = fzero(f, x0).
Аргумент f может быть задан одним из следующих способов:
· формулой с неизвестным х, заключенной в апострофы; · именем m-файла (в апострофах и без расширения m ); · указателем на функцию (например, @f_name ).
Следует отметить, что выражение, заключенное в апострофы (левая часть уравнения) в качестве независимой переменной может иметь переменную только с именем х. Использование независимой переменной с другим именем вызовет сообщение об ошибке.
Аргумент х0 может быть задан одним из двух способов:
· вектором [a; b], на концах которого функция f(x) меняет знак, что гарантирует нахождение, по крайней мере, одного корня на этом интервале; · скалярным значением, в окрестности которого предполагается нахождение корня (в этом случае функция fzero() сама пытается найти отрезок с центром в заданной точке х0, на концах которого функция f(x) меняет знак).
Из графика (рис. 1.1-2) следует, что корень находится на интервале [0; 1]. Используем полученную информацию и обратимся к функции Matlab fzero(). При этом если мы хотим получить не только значение корня, но и узнать значение функции в найденной точке, то к функции Matlab fzero() можно обратиться с двумя выходными параметрами. На рис. 2.1.1-3 рассмотрено обращение к функции fzero() как с одним, так и с двумя выходными параметрами.
Рис. 1.1-3. Уточнение корня уравнения с использованием функции fzero()
Вместо явного задания выражения для функции f(x) можно создать соответствующую функцию, запомнив ее в виде m -файла (рис. 1.1-4).
Рис. 1.1-4. Описание левой части в виде m- файла
Для символьного (аналитического) решения уравнений в MatLab используется функция solve(), которая может иметь следующие форматы: solve('f(x)', x), solve('f(x)'), где 'f(x)' – левая часть решаемого уравнения, заключенная в апострофах; x – искомая символьная неизвестная (описанная как syms x). Рассмотрим технологию определения корня с помощью функции solve() на следующем примере (рис. 1.1-5). Пример 1.1-2. Решить уравнение 2x–4∙ x+3=0 аналитически.
Рис. 1.1-5. Уточнение корня уравнения с использованием функции solve()
Функция solve() в ряде случаев позволяет определить все корни уравнения f(x)=0. Она не требует информации о начальном значении корня или области его изоляции. Поэтому в случае решения ряда нелинейных уравнений, она не находит всех корней уравнения.
Функция Matlab roots() используется для вычисления корней полинома вида . Перед ее использованием создается список коэффициентов (даже нулевых), а затем вводится сама функция roots(), у которой в качестве аргумента указывается имя списка коэффициентов (рис. 1.1-6).
Рис. 1.1-6. Уточнение корня уравнения с использованием функции roots()
Вычисление корней полинома с использованием команды roots(а) показало, что у полинома есть четыре действительных корня: х1=-1, x2=1, x3=2, x4=8 и два мнимых корня x5=i и x6=-i.
Лабораторная работа по теме «Технология решения нелинейных уравнений
1. Вопросы, подлежащие изучению
1) Задание функций и их производных с использованием средств пакета Matlab. 2) Получение таблиц значений функций в заданных границах изменения аргумента. 3) Построение графиков функций средствами Matlab. 4) Этапы решения нелинейных уравнений: отделение и уточнение корня. 5) Решение нелинейных уравнений с использованием встроенных функций пакета Matlab: fzero() и solve().
2. Общее задание
1) Изучите материал Темы 1 ( п..1.1 ). 2) Выберите индивидуальный вариант задания из табл. 1.2-1. 3) Отделите корень нелинейного уравнения f(x)=0 с использованием средств пакета Matlab, для чего: · Постройте графики функции f(x) и ее первой производной; · на выбранном отрезке пересечения графика с осью ОХ получить таблицы значений функции f(x) и ее первой производной; · проверить условие существования единственного корня на выбранном отрезке; 4) Решите нелинейное уравнение с использованием функций fzero() и solve (); 5) Предъявите результаты выполнение задания на ПК преподавателю. 3. Варианты индивидуальных заданий
Таблица 1.2-1
Содержание отчета
1) В форме комментариев: · Название лабораторной работы · ФИО студента, номер группы · № варианта · Индивидуальное задание 2) Протокол вычислений (сессии) в окне Command Window, снабженный необходимыми комментариями. 1.3. Контрольные вопросы по теме 1) Что называется, нелинейным уравнением? 2) Этапы решения нелинейного уравнения. 3) Графическое отделение корней нелинейного уравнения средствами Matlab. 4) Аналитическое отделение корней нелинейного уравнения средствами Matlab. 5) Способы задания функции нелинейного уравнения. 6) Назначение и формат функции fzero(). 7) Назначение и формат функции solve(). 8) Назначение и формат функции roots(). Тема 2.2. Технология аппроксимации 2.2.1. Аппроксимация и интерполяция функций 2.2.2. Лабораторная работа по теме «Технология аппроксимации интерполяции функций в среде пакета MatLab» 2.2.3. Контрольные вопросы по теме
|
Последнее изменение этой страницы: 2017-03-17; Просмотров: 735; Нарушение авторского права страницы