Составить программу на языке программирования С++ и блок-схему для решения следующей задачи: уточнить приближенное значение корня нелинейного уравнения f(x) = 0 на заданном отрезке [a,b] методом половинного деления (дихотомии) с точностью ε = 0.001.
Уравнение имеет вид: x 3 — 9x 2 + 20x – 11=0
Отрезок, на котором осуществляется поиск корня: [0; 1]
- Блок-схема алгоритма поиска корня уравнения методом половинного деления (дихотомии)
- Текст программы решения задачи на С++
- Метод деления отрезка пополам
- Описание алгоритма
- Реализация алгоритма
- Численные методы. Метод половинного деления в VBA
- Численные методы
- Метод половинного деления(бисекции, дихотомии)
- Реализация метода половинного деления в VBA
- 🎬 Видео
Видео:Решение нелинейного уравнения методом половинного деления (программа)Скачать
Блок-схема алгоритма поиска корня уравнения методом половинного деления (дихотомии)
Разработаем алгоритм программы поика решения уравнения на заданном отрезке в виде блок-схемы:
Видео:Метод половинного деления решение нелинейного уравненияСкачать
Текст программы решения задачи на С++
В среде программирования 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 Метод половинного деления Ручной счет Численные методы решения нелинейного уравненияСкачать
Описание алгоритма
Метод применим для численного решения уравнения 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й класс; Информатика; "Численные методы. Метод половинного деления"Скачать
Численные методы. Метод половинного деления в VBA
Доброго времени суток! Я решил разбавить наши стандартные статьи по программированию в VBA. Поэтому сегодня мы поговорим о численных методах решения нелинейных алгебраических уравнений, в целом и о каждом в отдельности.
Видео:Урок 10. C++ Метод половинного деленияСкачать
Численные методы
Предназначение численных методов — упростить человеку решение математических задач. Существуют численные методы для решения интегралов, дифференциалов, линейных и нелинейных алгебраических уравнений и т.д. В основном в ВУЗ-ах изучают только перечисленные.
Под численными методами решения алгебраических уравнений подразумевают алгоритмы нахождения корней уравнения. Алгоритмы, в основном, отличаются скоростью нахождения корней с необходимой точностью, а также условием сходимости. Также, иногда встречается такая характеристика, как простота алгоритма.
Метод половинного деления(бисекции, дихотомии)
В отличие от большинства других методов, метод половинного деления сходится всегда, т.е. обладает безусловной сходимостью, поэтому применим для решения любых уравнений. Кроме этого он чрезвычайно прост. Основным недостатком такого метода является его скорость. С каждым шагом его погрешность уменьшается в два раза, поэтому его можно отнести к методам с линейной сходимостью.
Реализация метода половинного деления в VBA
В интернете можно найти много разных реализаций данного метода как на C++, Matlab и других языках. Языков много, алгоритм один. Для лучшего понимания посмотрим на блок схему.
Распишем общий алгоритм:
Шаг 0. Задать концы отрезка a и b, функцию f, малое число e>0 (допустимую абсолютную погрешность корня или полудлину его промежутка неопределённости), малое q>0 (допуск, связанный с реальной точностью вычисления значений данной функции); вычислить f(a).
🎬 Видео
Метод половинного деленияСкачать
6 Метод половинного деления C++ Численные методы решения нелинейного уравненияСкачать
7 Метод половинного деления Mathcad Численные методы решения нелинейного уравненияСкачать
Метод половинного деления Ручной счет Численные методы решения нелинейного уравненияСкачать
8 Метод половинного деления Calc Excel Численные методы решения нелинейного уравненияСкачать
Метод половинного деления - ВизуализацияСкачать
Численные методы решения нелинейного уравнени Теория Шаговый Метод половинного деления Метод НьютонаСкачать
Численные методы (1 урок)(Решение нелинейных уравнений. Метод дихотомии. Python)Скачать
Решение уравнений (метод дихотомии) на C#Скачать
Решение нелинейного уравнения методом деления отрезка пополамСкачать
Метод дихотомииСкачать
Решение нелинейного уравнения методом половинного деления (дихотомии)Скачать
Метод дихотомии c++Скачать