Программа решения уравнения методом половинного деления

Программа решения уравнения методом половинного деления

Составить программу на языке программирования С++ и блок-схему для решения следующей задачи: уточнить приближенное значение корня нелинейного уравнения f(x) = 0 на заданном отрезке [a,b] методом половинного деления (дихотомии) с точностью ε = 0.001.

Уравнение имеет вид: x 3 — 9x 2 + 20x – 11=0

Отрезок, на котором осуществляется поиск корня: [0; 1]

Видео:Решение нелинейного уравнения методом половинного деления (программа)Скачать

Решение нелинейного уравнения методом половинного деления (программа)

Блок-схема алгоритма поиска корня уравнения методом половинного деления (дихотомии)

Разработаем алгоритм программы поика решения уравнения на заданном отрезке в виде блок-схемы:

Программа решения уравнения методом половинного деления

Видео:Метод половинного деления решение нелинейного уравненияСкачать

Метод половинного деления решение нелинейного уравнения

Текст программы решения задачи на С++

В среде программирования Borland C++ 7.0 вводим текст программы на Си ++:

#include
#include
// функция для вычисления f(х)
float f(float z)
<
return pow(z,3)+6*pow(z,2)+6*z-7;//возвращаемое значение
>

// главная функция
void main()
<
float a=-3.0, b=2.0, e=0.001, x;// объявление переменных
while (fabs(a-b)>=e) // цикл
<
// проверка на разные знаки по концам отрезка
if((f(a)>0&&f((a+b)/2) 0))
b=(a+b)/2;
else
if ((f((a+b)/2)>0&&f(b) 0))
a=(a+b)/2;
else
<
printf(«! Net kornej !»);
return;
getch();
>
>

x=(a+b)/2;// вычисление х после завершения цикла
printf(«x=%f F(x)=%f |a-b|=%f»,x,f(x),fabs(a-b)); // вывод результатов
getch();
>

Нажимаем клавиши CTRL+F9 для компиляции и запуска на выполнение программы. Получаем корень уравнения x≈0,834 :

Программа решения уравнения методом половинного деления

Программа начинается с директив препроцессора, начинающихся с символа #, которые дают указание препроцессору подключить к программе заголовочные файлы с описанием тех или иных библиотечных функций. В данном случае подключается заголовочный файл stdio.h с описанием функций ввода-вывода, заголовочный файл math.h с описанием математических функций и заголовочный файл conio.h с описанием функции ожидания нажатия клавиши getch().

Программа состоит из двух функций: пользовательской функции f(x) и обязательной функции main(). Функция main() не возвращает никаких значений и поэтому она объявляется с ключевым словом void. В отличие от функции main(), функция f(x) возвращает вещественное значение и объявляется с ключевым словом float. Тела функций являются блоками и поэтому ограничены фигурными скобками.

В теле функции main() объявляются вещественные переменные a, b, e, х.
Далее используется оператор цикла while, в котором применяются условные операторы:
if (выражение) оператор 1; else оператор 2; которые позволяют проверить разные ли знаки у концов отрезка.
Использование вышеуказанной библиотечной функции printf() дает возможность вывести на стандартное устройство вывода (монитор) сообщение об отсутствии корней или сообщение с значением корня, значением функции в этой точке и модуль разности концов отрезка.
Тело функции main() зак¬рывается фигурной скобкой. На этом программа заканчивается.

Видео:Метод половинного деления. ДихотомияСкачать

Метод половинного деления. Дихотомия

Метод деления отрезка пополам

Метод бисекции или метод деления отрезка пополам – простой численный метод для решения нелинейного уравнения вида f(x) = 0.

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

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

Описание алгоритма

Метод применим для численного решения уравнения f(x) = 0 для действительной переменной x, где f(x) – непрерывная функция, определенная на интервале [a, b], а f(a) и f(b) имеют противоположные знаки. В этом случае говорят, что a и b заключают в скобки корень, поскольку по теореме о промежуточном значении непрерывная функция f(x) должна иметь хотя бы один корень в интервале (a, b).

На каждом шаге метод делит интервал на две части, вычисляя среднюю точку t = (a + b) / 2 интервала и значение функции f(t) в этой точке. Если только t не является корнем (что очень маловероятно, но возможно), теперь есть только две возможности: либо f(a) и f(t) имеют противоположные знаки и скобки для корня, либо f(t) и f(b) иметь противоположные знаки и заключать в скобки корень. Метод выбирает подинтервал, который гарантированно будет скобкой, в качестве нового интервала, который будет использоваться на следующем шаге. Таким образом, интервал, содержащий ноль f(x), уменьшается по ширине на 50% на каждом шаге. Процесс продолжается до тех пор, пока интервал не станет достаточно малым.

Если f(a) и f(t) имеют противоположные знаки, тогда метод устанавливает t как новое значение для b, а если f(b) и f(t) имеют противоположные знаки, то метод устанавливает t как новое значение а. Если f(t) = 0, то t может быть принято как решение, и процесс останавливается. В обоих случаях новые f(a) и f(b) имеют противоположные знаки, поэтому метод применим к этому меньшему интервалу.

Видео:Отделение корней уравнений аналитическим методом. Уточнение корней методом половинного деленияСкачать

Отделение корней уравнений аналитическим методом. Уточнение корней методом половинного деления

Реализация алгоритма

Метод можно применять к любой функции f(x)=0, для этого достаточно изменить локальный метод double f(double x) в коде программы.

Видео:12й класс; Информатика; "Численные методы. Метод половинного деления"Скачать

12й класс; Информатика; "Численные методы. Метод половинного деления"

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

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

Видео:Урок 10. C++ Метод половинного деленияСкачать

Урок 10.  C++ Метод половинного деления

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

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

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

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

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

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

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

🎬 Видео

Метод половинного деленияСкачать

Метод половинного деления

6 Метод половинного деления C++ Численные методы решения нелинейного уравненияСкачать

6 Метод половинного деления C++ Численные методы решения нелинейного уравнения

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

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

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

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

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

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

Метод половинного деления - ВизуализацияСкачать

Метод половинного деления - Визуализация

Численные методы решения нелинейного уравнени Теория Шаговый Метод половинного деления Метод НьютонаСкачать

Численные методы решения нелинейного уравнени Теория Шаговый Метод половинного деления Метод Ньютона

Численные методы (1 урок)(Решение нелинейных уравнений. Метод дихотомии. Python)Скачать

Численные методы (1 урок)(Решение нелинейных уравнений. Метод дихотомии. Python)

Решение уравнений (метод дихотомии) на C#Скачать

Решение уравнений (метод дихотомии) на C#

Решение нелинейного уравнения методом деления отрезка пополамСкачать

Решение нелинейного уравнения методом деления отрезка пополам

Метод дихотомииСкачать

Метод дихотомии

Решение нелинейного уравнения методом половинного деления (дихотомии)Скачать

Решение нелинейного уравнения методом половинного деления (дихотомии)

Метод дихотомии c++Скачать

Метод дихотомии c++
Поделиться или сохранить к себе: