Доброго времени суток! Я решил разбавить наши стандартные статьи по программированию в VBA. Поэтому сегодня мы поговорим о численных методах решения нелинейных алгебраических уравнений, в целом и о каждом в отдельности.
- Численные методы
- Метод половинного деления(бисекции, дихотомии)
- Реализация метода половинного деления в VBA
- «Приближенное решение уравнений на языке Visual Basic».
- Численные методы решения нелинейных уравнений.
- 1.1. Постановка задачи.
- 1.2. Этапы приближенного решения нелинейных уравнений.
- 1.3. Уточнение корней методом деления отрезка пополам.
- Метод половинного деления
- 🔍 Видео
Видео:Квадратные уравнения: программирование на VBAСкачать
Численные методы
Предназначение численных методов — упростить человеку решение математических задач. Существуют численные методы для решения интегралов, дифференциалов, линейных и нелинейных алгебраических уравнений и т.д. В основном в ВУЗ-ах изучают только перечисленные.
Под численными методами решения алгебраических уравнений подразумевают алгоритмы нахождения корней уравнения. Алгоритмы, в основном, отличаются скоростью нахождения корней с необходимой точностью, а также условием сходимости. Также, иногда встречается такая характеристика, как простота алгоритма.
Метод половинного деления(бисекции, дихотомии)
В отличие от большинства других методов, метод половинного деления сходится всегда, т.е. обладает безусловной сходимостью, поэтому применим для решения любых уравнений. Кроме этого он чрезвычайно прост. Основным недостатком такого метода является его скорость. С каждым шагом его погрешность уменьшается в два раза, поэтому его можно отнести к методам с линейной сходимостью.
Реализация метода половинного деления в VBA
В интернете можно найти много разных реализаций данного метода как на C++, Matlab и других языках. Языков много, алгоритм один. Для лучшего понимания посмотрим на блок схему.
Распишем общий алгоритм:
Шаг 0. Задать концы отрезка a и b, функцию f, малое число e>0 (допустимую абсолютную погрешность корня или полудлину его промежутка неопределённости), малое q>0 (допуск, связанный с реальной точностью вычисления значений данной функции); вычислить f(a).
Видео:Как найти корни уравнения в Excel с помощью Подбора параметраСкачать
«Приближенное решение уравнений на языке Visual Basic».
Обращаем Ваше внимание, что в соответствии с Федеральным законом N 273-ФЗ «Об образовании в Российской Федерации» в организациях, осуществляющих образовательную деятельность, организовывается обучение и воспитание обучающихся с ОВЗ как совместно с другими обучающимися, так и в отдельных классах или группах.
«Приближенное решение квадратных уравнений на языке Visual Basic».
Цель работы – познакомиться с языками программирования, разработкой и исследованием моделей на компьютере.
На языке алгебры формальные модели записываются с помощью уравнений, точное решение которых основывается на поиске равносильных преобразований алгебраических выражений, позволяющих выразить переменную величину с помощью формулы.
Для большинства уравнений приходится использовать методы приближенного решения с заданной точностью
Основные этапы работы:
• знакомство с языками программирования;
• знакомство с методами решения математических задач в программе Excel;
• содержательная постановка задачи;
Написанную программу планируется использовать на уроках математики в качестве учебного пособия.
На языке алгебры формальные модели записываются с помощью уравнений, точное решение которых основывается на поиске равносильных преобразований алгебраических выражений, позволяющих выразить переменную величину с помощью формулы.
Точные решения существуют только для некоторых уравнений определенного вида (линейные, квадратные, тригонометрические и др.), поэтому для большинства уравнений приходится использовать методы приближенного решения с заданной точностью (графические или численные).
Например, нельзя найти корень уравнения х3- cosx =0 путем равносильных алгебраических преобразований. Однако такие уравнения можно решать приближенно графическими и численными методами
Видео:8 Метод половинного деления Calc Excel Численные методы решения нелинейного уравненияСкачать
Численные методы решения нелинейных уравнений.
Видео:If, ElseIf, Else, End If - Условные конструкции - Новый курс VBA (10)Скачать
1.1. Постановка задачи.
Пусть имеется уравнение вида
где f (x) — заданная алгебраическая или трансцендентная функция. ( Функция называется алгебраической , если для получения её значения нужно выполнить арифметические операции и возведение в степень с рациональным показателем. Примеры трансцендентных функций — показательная, логарифмическая, тригонометрические, обратные тригонометрические.)
Решить уравнение — значит найти все его корни, то есть те значения x , которые обращают уравнение в тождество, или доказать, что корней нет.
Если алгебраическое или трансцендентное уравнение достаточно сложно, то довольно редко удается точно найти его корни. Кроме того, в некоторых случаях уравнение может содержать коэффициенты, известные лишь приблизительно, поэтому сама задача о точном нахождении корней теряет смысл. В таких случаях применяют численные (приближенные) методы решения.
Поставим задачу найти такое приближенное значение корня x пр , которое мало отличается от точного значения корня x *, так что выполняется неравенство │ x* – x пр │ , где (эпсилон) – малая положительная величина – допустимая ошибка, которую мы можем заранее задать по своему усмотрению. Если корень найден с точностью , то принято писать x * = x пр ± .
Будем предполагать, что уравнение (1) имеет лишь изолированные корни, т.е. для каждого корня существует окрестность, не содержащая других корней этого уравнения.
Видео:Формулы в VBA - Три совета (Серия VBA 16)Скачать
1.2. Этапы приближенного решения нелинейных уравнений.
Приближенное решение уравнения состоит из двух этапов:
Отделение корней , то есть нахождение интервалов из области определения функции f (x) , в каждом из которых содержится только один корень уравнения (1).
Уточнение корней до заданной точности.
Отделение корней можно проводить графически и аналитически.
Для того чтобы графически отделить корни уравнения (1), необходимо построить график функции . Абсциссы точек его пересечения с осью Ox являются действительными корнями уравнения (рис. 1).
ис. 1. Графическое отделение корней (1-ый способ).
На практике же бывает удобнее заменить уравнение (1) равносильным ему уравнением
, (2)
где и — более простые функции, чем . Абсциссы точек пересечения графиков функций и дают корни уравнения (2), а значит и исходного уравнения (1) (рис.2).
Рис 2. Графическое отделение корней (2-ой способ).
Пример 1. Отделить графически корень уравнения .
Решение. Для решения задачи построим график функции (рис. 3).
Рис. 3. График функции .
Из рисунка видно, что один из корней уравнения принадлежит отрезку , второй – отрезку . Так как рассматриваемое уравнение имеет третью степень, то должен существовать еще один корень на интервале .
Пример 2. Отделить графически корень уравнения .
Р
ешение. Преобразуем уравнение к виду и построим графики функций и (рис. 4).
Рис. 4. Графическое отделение корней.
Из рисунка видно, что абсцисса точки пересечения этих графиков принадлежит отрезку .
Аналитическое отделение корней основано на следующих теоремах.
Теорема 1. Если непрерывная функция принимает на концах отрезка значения разных знаков, т.е. , то на этом отрезке содержится по крайней мере один корень уравнения (1) (рис. 5).
Рис. 5. Существование корня на отрезке.
Теорема 2. Если непрерывная на отрезке функция принимает на концах отрезка значения разных знаков, а производная сохраняет знак внутри отрезка , то внутри отрезка существует единственный корень уравнения f (x) = 0 (рис. 6).
Рис. 6. Существование единственного корня на отрезке.
Пример 3. Подтвердить аналитически правильность нахождения отрезка изоляции корня уравнения .
Решение. Для отрезка имеем: ; Значит, . Следовательно, корень отделён правильно.
Уточнение корней до заданной точности заключается в сужении интервала изоляции корня и выполняется одним из специальных методов. Наиболее распространенными являются метод деления отрезка пополам , метод касательных (Ньютона), метод секущих (хорд) .
Видео:Переменные и принципы работы с данными в VBA (Серия VBA 3)Скачать
1.3. Уточнение корней методом деления отрезка пополам.
Метод деления отрезка пополам имеет другие названия: метод половинного деления, метод дихотомии, метод проб, метод бисекций.
Пусть корень уравнения f (x) = 0 отделен на отрезке , т.е. .
Алгоритм приближенного вычисления корня методом половинного деления.
ε – требуемая точность;
a , b – границы заданного интервала (границы поиска корня).
Результат: x пр – приближенный корень уравнения f (x) = 0.
Шаг 1. Выбрать середину отрезка в качестве приближенного корня.
Шаг 2. Если , то c – искомый корень уравнения, на этом прекращаем вычисления. В противном случае перейти к шагу 3.
Шаг 3. Точный корень уравнения x * отличается от c не более чем на половину длины отрезка, т.е. не более чем на (полученная точность). Проверяем условие . Если условие не выполняется, т.е. полученная точность нас не устраивает (она больше, чем требуемая), то перейти к шагу 4; в противном случае прекратить вычисления, поскольку мы достигли требуемой точности, и приближенным корнем уравнения f (x) = 0 считать середину c отрезка .
Шаг 4. Определить интервал дальнейшего поиска корня. Из двух образовавшихся при делении отрезков переходим к той из его половин и , на концах которого функция принимает значения разных знаков.
Случай 1 (рис. 7). Корень на отрезке . , граница b сдвигается влево – заменить b на с : b := c .
С
лучай 2 (рис. 7). Корень на отрезке . , граница a сдвигается вправо – заменить a на с : a := c .
Рис. 7. Графическая иллюстрация метода половинного деления.
Перейти к шагу 1.
Алгоритм деления отрезка пополам довольно медленный, но зато абсолютно застрахован от неудач. Основное достоинство метода состоит в том, что его скорость сходимости не зависит от вида функции f (x). Данный метод не имеет дополнительных условий сходимости, кроме .
Так же есть методы хорд и касательных.
Графическое решение таких уравнений можно осуществить путем построения компьютерных моделей:
• построением графика функции в системе объектно-ориентированного программирования Visual Basic или Turbo Delphi
• в электронных таблицах Microsoft Excel или OpenOffice . org Calc путем построения диаграммы типа График
Найдем корень уравнения х3- cosx =0 приближенными методами (графическим и численным методом деления пополам числового отрезка аргумента)
Формальная модель задана уравнением, для нахождения корня уравнения разработаем компьютерную модель на языке Visual Basic .
1 Dim Graph1 As Graphics
Dim Pen1 As New Pen (Color.Black, 2)
Dim drawBrush As New SolidBrush (Color.Black)
Dim drawFont As New Font (“Arial”, 10)
Dim X , Y As Single
‘ Графическое решение уравнения
Private Sub Button1_Click(…)
Graph 1. Clear ( Color . White )
‘ Печать шкал математической системы координат в компьютерной системе координат
For X=-150 To 150 Step 50
Graph1.DrawString (X/100, drawFont,_
drawBrush, X+150, 50)
For Y=0 To 200 Step 50
Graph1.DrawString ((Y-150)/100, drawFont,_
drawBrush, 150, 200-Y)
‘ Преобразование компьютерной системы координат в математическую систему координат
Graph1.ScaleTransform(1, -1) ‘ поворот оси Y
Graph1.TranslaterTransform (150, -50) ‘ Сдвиг по осям X и Y
‘ Рисование осей математической системы координат
Graph1.DrawLine (Pen1, -150, 0, 300, 0) ‘ ось Х
Graph1.DrawLine (Pen1, 0, -150, 0, 50) ‘ ось Y
For X=-150 To 150 Step 50 ‘ засечки на оси Y
Graph1.DrawLine (Pen1, X, -5, X, 5)
For Y=-100 To 100 Step 50 ‘ засечки на оси Y
Graph1.DrawLine (Pen1, -5, Y, 5, Y)
For X=-1.5 To 1.5 Step 0.01
Graph1.DrawEllipse (Pen1, X*100, Y*100, 1, 1)
График функции пересекает ось Х один раз, следовательно, уравнение имеет один корень. По графику грубо приближенно можно определить, что х≈0.8 c м
,,
Видео:14 Метод половинного деления Ручной счет Численные методы решения нелинейного уравненияСкачать
Метод половинного деления
УТОЧНЕНИЕ КОРНЯ УРАВНЕНИЯ МЕТОДОМ ПОЛОВИННОГО ДЕЛЕНИЯ
При решении уравнения, как правило, заранее задается допустимая погрешность е приближенного значения корня E . В процессе уточнения корней требуется найти их приближенные значения, отличающиеся от точных не более чем на е .
Описанный выше способ табулирования может рассматриваться и как способ уточнения корня (хотя и крайне неэффективный). При этом можно либо постепенно уменьшать шаг табулирования, приближая его к значению е , либо сделать это сразу, полагая h = е . В любом случае получим b — а е . Тогда в качестве искомого значения корня можно выбрать середину этого отрезка, т.е. положить E = ( а + b )/2.
Гораздо более эффективным является так называемый метод половинного деления .
Пусть уравнение F(x)=0 имеет на отрезке [а; b] единственный корень, причем функция F ( x ) на этом отрезке непрерывна. Разделим отрезок [а; b] пополам точкой с = (а + b)/ 2. Если F ( c ) 0 (что практически наиболее вероятно), то возможны два случая: F ( x ) Меняет знак либо на отрезке [а; с] (рис. 2.6, а), либо на отрезке [a; b] (рис. 2.6, б). Выбирая в каждом случае тот из отрезков, на котором функция меняет знак, и продолжая процесс половинного деления дальше, можно дойти до сколь угодно малого отрезка, содержащего корень уравнения.
Рис. 2.6. К решению уравнения F ( x ) методом половинного деления:
а — функция F ( x ) меняет знак на отрезке [а; с];
б — функция F ( x ) меняет знак на отрезке [c; b]
Метод половинного деления вполне можно использовать как метод решения уравнения с заданной точностью. Действительно, если на каком-то этапе процесса получен отрезок [а; b], содержащий корень, то, приняв приближенно х = (а + b)/2 , получим ошибку, не превышающую значения
(заметим, что речь в данном случае идет о погрешности метода). Метод половинного деления требует утомительных ручных вычислений, однако он легко реализуется с помощью программы на компьютере (блок-схему алгоритма см. на рис. 2.7). Отметим, что даже если на каком-то этапе деления отрезка пополам получится F ( c ) = 0, это не приведет к сбою алгоритма.
Рис. 2.7. Блок-схема алгоритма уточнения корня уравнения F ( x ) =0 на отрезке [ а; b ] с точностью е методом половинного деления
Использование метода половинного деления в написании программы.
Написание программы и составление интерфейса
Поместить на форму:
текстовые поля TextBox 1 и TextBox 2 для ввода числовых значений концов отрезка А и В;
текстовое поле TextBox 3 для ввода точности вычислений Р;
надпись Label 1 для вывода значений корня;
четыре надписи для вывода обозначений;
кнопку Button 2 для запуска обработчика событий
Ввести программный код, позволяющий вычислить корень уравнения методом половинного деления с использованием цикла с постусловием, который будет выполняться, пока выполняется условие (В-А)/2>P:
‘ численное решение уравнения
Dim A , B , C , P As Single
Private Sub Button2_Click(…)
If (A^3-Math.Cos(A) ) * (C^3-Math.Cos(C) )
Loop White (B-A)/2>P
Из графика функции видно, что корень находится на отрезке [0,5;1].Введем в текстовые поля значения концов числового отрезка, а также точность вычислений (например, 0,0001).
На надпись будет выведено значение корня: x ≈ 0,8654175
Точность вычисления корня зависит не только от параметров используемого численного метода, но и от типа переменной. В нашем случае имеет смысл говорить о математической точности результата, которая не может превышать точность числового метода, т.е. х≈0,8654.
🔍 Видео
Решение системы уравнений в ExcelСкачать
VBA Automation in #excelСкачать
СЛАУ в VBA метод обратной матрицыСкачать
Взаимодействие макросов - Call - ByVal, ByRef (Серия VBA 13)Скачать
Решение системы нелинейных уравнений графическим способом средствами ExcelСкачать
Программирование на VBA Задачи 1-4Скачать
Программирование макросов на VBA в ExcelСкачать
Цикл Do Loop (While/Until) - (Серия VBA 10)Скачать
Функции в VBA - (Серия VBA 19 - Часть 1: Теоретический базис)Скачать
0.1 Get your VBA code window quickly under 15 seconds #excel #vba #ytshorts #learnСкачать