Решение нелинейного уравнения в vba

Численные методы. Метод половинного деления в VBA

Доброго времени суток! Я решил разбавить наши стандартные статьи по программированию в VBA. Поэтому сегодня мы поговорим о численных методах решения нелинейных алгебраических уравнений, в целом и о каждом в отдельности.

Видео:Квадратные уравнения: программирование на VBAСкачать

Квадратные уравнения: программирование на VBA

Численные методы

Предназначение численных методов — упростить человеку решение математических задач. Существуют численные методы для решения интегралов, дифференциалов, линейных и нелинейных алгебраических уравнений и т.д. В основном в ВУЗ-ах изучают только перечисленные.

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

Метод половинного деления(бисекции, дихотомии)

В отличие от большинства других методов, метод половинного деления сходится всегда, т.е. обладает безусловной сходимостью, поэтому применим для решения любых уравнений. Кроме этого он чрезвычайно прост. Основным недостатком такого метода является его скорость. С каждым шагом его погрешность уменьшается в два раза, поэтому его можно отнести к методам с линейной сходимостью.

Реализация метода половинного деления в VBA

В интернете можно найти много разных реализаций данного метода как на C++, Matlab и других языках. Языков много, алгоритм один. Для лучшего понимания посмотрим на блок схему.Решение нелинейного уравнения в vba
Распишем общий алгоритм:
Шаг 0. Задать концы отрезка a и b, функцию f, малое число e>0 (допустимую абсолютную погрешность корня или полудлину его промежутка неопределённости), малое q>0 (допуск, связанный с реальной точностью вычисления значений данной функции); вычислить f(a).

Видео:Как найти корни уравнения в Excel с помощью Подбора параметраСкачать

Как найти корни уравнения в Excel с помощью Подбора параметра

«Приближенное решение уравнений на языке Visual Basic».

Обращаем Ваше внимание, что в соответствии с Федеральным законом N 273-ФЗ «Об образовании в Российской Федерации» в организациях, осуществляющих образовательную деятельность, организовывается обучение и воспитание обучающихся с ОВЗ как совместно с другими обучающимися, так и в отдельных классах или группах.

«Приближенное решение квадратных уравнений на языке Visual Basic».

Цель работы – познакомиться с языками программирования, разработкой и исследованием моделей на компьютере.

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

Для большинства уравнений приходится использовать методы приближенного решения с заданной точностью

Основные этапы работы:

• знакомство с языками программирования;

• знакомство с методами решения математических задач в программе Excel;

• содержательная постановка задачи;

Написанную программу планируется использовать на уроках математики в качестве учебного пособия.

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

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

Например, нельзя найти корень уравнения х3- cosx =0 путем равносильных алгебраических преобразований. Однако такие уравнения можно решать приближенно графическими и численными методами

Видео:8 Метод половинного деления Calc Excel Численные методы решения нелинейного уравненияСкачать

8 Метод половинного деления Calc Excel Численные методы решения нелинейного уравнения

Численные методы решения нелинейных уравнений.

Видео:If, ElseIf, Else, End If - Условные конструкции - Новый курс VBA (10)Скачать

If, ElseIf, Else, End If - Условные конструкции - Новый курс VBA (10)

1.1. Постановка задачи.

Пусть имеется уравнение вида

где f (x) — заданная алгебраическая или трансцендентная функция. ( Функция называется алгебраической , если для получения её значения нужно выполнить арифметические операции и возведение в степень с рациональным показателем. Примеры трансцендентных функций — показательная, логарифмическая, тригонометрические, обратные тригонометрические.)

Решить уравнение — значит найти все его корни, то есть те значения x , которые обращают уравнение в тождество, или доказать, что корней нет.

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

Поставим задачу найти такое приближенное значение корня x пр , которое мало отличается от точного значения корня x *, так что выполняется неравенство │ x*x пр , где  (эпсилон) – малая положительная величина – допустимая ошибка, которую мы можем заранее задать по своему усмотрению. Если корень найден с точностью , то принято писать x * = x пр ± .

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

Видео:Формулы в VBA - Три совета (Серия VBA 16)Скачать

Формулы в VBA - Три совета (Серия VBA 16)

1.2. Этапы приближенного решения нелинейных уравнений.

Приближенное решение уравнения состоит из двух этапов:

Отделение корней , то есть нахождение интервалов из области определения функции f (x) , в каждом из которых содержится только один корень уравнения (1).

Уточнение корней до заданной точности.

Отделение корней можно проводить графически и аналитически.

Для того чтобы графически отделить корни уравнения (1), необходимо построить график функции Решение нелинейного уравнения в vba. Абсциссы точек его пересечения с осью Ox являются действительными корнями уравнения (рис. 1).

Решение нелинейного уравнения в vba
ис. 1. Графическое отделение корней (1-ый способ).

На практике же бывает удобнее заменить уравнение (1) равносильным ему уравнением

Решение нелинейного уравнения в vba, (2)

где Решение нелинейного уравнения в vbaи Решение нелинейного уравнения в vba— более простые функции, чем Решение нелинейного уравнения в vba. Абсциссы точек пересечения графиков функций Решение нелинейного уравнения в vbaи Решение нелинейного уравнения в vbaдают корни уравнения (2), а значит и исходного уравнения (1) (рис.2).

Решение нелинейного уравнения в vba

Рис 2. Графическое отделение корней (2-ой способ).

Пример 1. Отделить графически корень уравнения Решение нелинейного уравнения в vba.

Решение. Для решения задачи построим график функции Решение нелинейного уравнения в vba(рис. 3).

Решение нелинейного уравнения в vba

Рис. 3. График функции Решение нелинейного уравнения в vba.

Из рисунка видно, что один из корней уравнения принадлежит отрезку Решение нелинейного уравнения в vba, второй – отрезку Решение нелинейного уравнения в vba. Так как рассматриваемое уравнение имеет третью степень, то должен существовать еще один корень на интервале Решение нелинейного уравнения в vba.

Пример 2. Отделить графически корень уравнения Решение нелинейного уравнения в vba.

РРешение нелинейного уравнения в vba
ешение. Преобразуем уравнение к виду Решение нелинейного уравнения в vbaи построим графики функций Решение нелинейного уравнения в vbaи Решение нелинейного уравнения в vba(рис. 4).

Рис. 4. Графическое отделение корней.

Из рисунка видно, что абсцисса точки пересечения этих графиков принадлежит отрезку Решение нелинейного уравнения в vba.

Аналитическое отделение корней основано на следующих теоремах.

Теорема 1. Если непрерывная функция Решение нелинейного уравнения в vbaпринимает на концах отрезка Решение нелинейного уравнения в vbaзначения разных знаков, т.е. Решение нелинейного уравнения в vba, то на этом отрезке содержится по крайней мере один корень уравнения (1) (рис. 5).

Решение нелинейного уравнения в vba

Рис. 5. Существование корня на отрезке.

Теорема 2. Если непрерывная на отрезке Решение нелинейного уравнения в vbaфункция Решение нелинейного уравнения в vbaпринимает на концах отрезка значения разных знаков, а производная Решение нелинейного уравнения в vbaсохраняет знак внутри отрезка Решение нелинейного уравнения в vba, то внутри отрезка существует единственный корень уравнения f (x) = 0 (рис. 6).

Решение нелинейного уравнения в vba

Рис. 6. Существование единственного корня на отрезке.

Пример 3. Подтвердить аналитически правильность нахождения отрезка изоляции корня уравнения Решение нелинейного уравнения в vba.

Решение. Для отрезка Решение нелинейного уравнения в vbaимеем: Решение нелинейного уравнения в vba; Решение нелинейного уравнения в vbaЗначит, Решение нелинейного уравнения в vba. Следовательно, корень отделён правильно.

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

Видео:Переменные и принципы работы с данными в VBA (Серия VBA 3)Скачать

Переменные и принципы работы с данными в VBA (Серия VBA 3)

1.3. Уточнение корней методом деления отрезка пополам.

Метод деления отрезка пополам имеет другие названия: метод половинного деления, метод дихотомии, метод проб, метод бисекций.

Пусть корень уравнения f (x) = 0 отделен на отрезке Решение нелинейного уравнения в vba, т.е. Решение нелинейного уравнения в vba.

Алгоритм приближенного вычисления корня методом половинного деления.

ε – требуемая точность;

a , b – границы заданного интервала (границы поиска корня).

Результат: x пр – приближенный корень уравнения f (x) = 0.

Шаг 1. Выбрать середину Решение нелинейного уравнения в vbaотрезка Решение нелинейного уравнения в vbaв качестве приближенного корня.

Шаг 2. Если Решение нелинейного уравнения в vba, то c искомый корень уравнения, на этом прекращаем вычисления. В противном случае перейти к шагу 3.

Шаг 3. Точный корень уравнения x * отличается от c не более чем на половину длины отрезка, т.е. не более чем на Решение нелинейного уравнения в vba(полученная точность). Проверяем условие Решение нелинейного уравнения в vba. Если условие не выполняется, т.е. полученная точность нас не устраивает (она больше, чем требуемая), то перейти к шагу 4; в противном случае прекратить вычисления, поскольку мы достигли требуемой точности, и приближенным корнем уравнения f (x) = 0 считать середину c отрезка Решение нелинейного уравнения в vba.

Шаг 4. Определить интервал дальнейшего поиска корня. Из двух образовавшихся при делении отрезков переходим к той из его половин Решение нелинейного уравнения в vbaи Решение нелинейного уравнения в vba, на концах которого функция принимает значения разных знаков.

Случай 1 (рис. 7). Корень на отрезке Решение нелинейного уравнения в vba. Решение нелинейного уравнения в vba, граница b сдвигается влево – заменить b на с : b := c .

СРешение нелинейного уравнения в vba
лучай 2 (рис. 7). Корень на отрезке Решение нелинейного уравнения в vba. Решение нелинейного уравнения в vba, граница a сдвигается вправо – заменить a на с : a := c .

Рис. 7. Графическая иллюстрация метода половинного деления.

Перейти к шагу 1.

Алгоритм деления отрезка пополам довольно медленный, но зато абсолютно застрахован от неудач. Основное достоинство метода состоит в том, что его скорость сходимости не зависит от вида функции f (x). Данный метод не имеет дополнительных условий сходимости, кроме Решение нелинейного уравнения в vba.

Так же есть методы хорд и касательных.

Графическое решение таких уравнений можно осуществить путем построения компьютерных моделей:

• построением графика функции в системе объектно-ориентированного программирования 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 м

,, Решение нелинейного уравнения в vba

Видео:14 Метод половинного деления Ручной счет Численные методы решения нелинейного уравненияСкачать

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, б). Выбирая в каждом случае тот из отрезков, на котором функция меняет знак, и продолжая процесс половинного деления дальше, можно дойти до сколь угодно малого отрезка, содержащего корень уравнения.

Решение нелинейного уравнения в vba

Рис. 2.6. К решению уравнения F ( x ) методом половинного деления:

а — функция F ( x ) меняет знак на отрезке [а; с];

б — функция F ( x ) меняет знак на отрезке [c; b]

Метод половинного деления вполне можно использовать как метод решения уравнения с заданной точностью. Действительно, если на каком-то этапе процесса получен отрезок [а; b], содержащий корень, то, приняв приближенно х = (а + b)/2 , получим ошибку, не превышающую значения

Решение нелинейного уравнения в vba

(заметим, что речь в данном случае идет о погрешности метода). Метод половинного деления требует утомительных ручных вычислений, однако он легко реализуется с помощью программы на компьютере (блок-схему алгоритма см. на рис. 2.7). Отметим, что даже если на каком-то этапе деления отрезка пополам получится F ( c ) = 0, это не приведет к сбою алгоритма.

Решение нелинейного уравнения в vba

Рис. 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

Решение нелинейного уравнения в vba

Точность вычисления корня зависит не только от параметров используемого численного метода, но и от типа переменной. В нашем случае имеет смысл говорить о математической точности результата, которая не может превышать точность числового метода, т.е. х≈0,8654.

🔍 Видео

Решение системы уравнений в ExcelСкачать

Решение системы уравнений в Excel

VBA Automation in #excelСкачать

VBA Automation in #excel

СЛАУ в VBA метод обратной матрицыСкачать

СЛАУ в VBA метод обратной матрицы

Взаимодействие макросов - Call - ByVal, ByRef (Серия VBA 13)Скачать

Взаимодействие макросов - Call - ByVal, ByRef (Серия VBA 13)

Решение системы нелинейных уравнений графическим способом средствами ExcelСкачать

Решение системы нелинейных уравнений графическим способом средствами Excel

Программирование на VBA Задачи 1-4Скачать

Программирование на VBA  Задачи 1-4

Программирование макросов на VBA в ExcelСкачать

Программирование макросов на VBA в Excel

Цикл Do Loop (While/Until) - (Серия VBA 10)Скачать

Цикл Do Loop (While/Until) - (Серия VBA 10)

Функции в VBA - (Серия VBA 19 - Часть 1: Теоретический базис)Скачать

Функции в VBA - (Серия VBA 19 - Часть 1: Теоретический базис)

0.1 Get your VBA code window quickly under 15 seconds #excel #vba #ytshorts #learnСкачать

0.1 Get your VBA code window quickly under 15 seconds #excel #vba #ytshorts #learn
Поделиться или сохранить к себе: