Составить программу на языке программирования С++ и блок-схему для решения следующей задачи: уточнить приближенное значение корня нелинейного уравнения f(x) = 0 на заданном отрезке [a,b] методом половинного деления (дихотомии) с точностью ε = 0.001.
Уравнение имеет вид: x 3 — 9x 2 + 20x – 11=0
Отрезок, на котором осуществляется поиск корня: [0; 1]
- Блок-схема алгоритма поиска корня уравнения методом половинного деления (дихотомии)
- Текст программы решения задачи на С++
- Исходники программ
- Сайт, посвящен программированию, исходникам разных программ и известным алгоритмам
- Метод половинного деления C++
- Решение уравнений методом половинного деления си
- 💡 Видео
Видео:6 Метод половинного деления C++ Численные методы решения нелинейного уравненияСкачать
Блок-схема алгоритма поиска корня уравнения методом половинного деления (дихотомии)
Разработаем алгоритм программы поика решения уравнения на заданном отрезке в виде блок-схемы:
Видео:Метод половинного деления решение нелинейного уравненияСкачать
Текст программы решения задачи на С++
В среде программирования 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() зак¬рывается фигурной скобкой. На этом программа заканчивается.
Видео:Урок 10. C++ Метод половинного деленияСкачать
Исходники программ
Видео:Решение нелинейного уравнения методом половинного деления (программа)Скачать
Сайт, посвящен программированию,
исходникам разных программ и
известным алгоритмам
Метод половинного деления C++
Суть метода:
Этот метод является особенно надёжным при нахождении корня уравнения f(x)=0, когда о поведении функции f(x) мало, что известно. Пусть f(x) – функция действительной переменной x и пусть известен интервал (a; b), на котором функция меняет знак. Следовательно, между a и b существует точка, в которой функция обращается в ноль. Если разделить интервал пополам и определить, положительна или отрицательна функция в точке деления, то тем самым найдем подынтервал, в котором функция меняет знак.
При заданной абсолютной погрешности Е алгоритм метода деления пополам состоит из следующих шагов:
1) вычислить f(a) и f(b)
2) положить c=(a+b)/2, вычислить f(c)
3) если f(c) = f(a), то заменить a на с, в противном случае заменить b на с
4) если b-a>E, перейти к шагу 2; в противном случае прекратить вычисления, поскольку достигнута требуемая точность.
Любой из концов отрезка или их полусумма может быть использован в качестве корня уравнения: f(x)=0.
Поставленная задача:
1) Y=3*cos(2*x-4); точность: 0,001; интервал: [1; 3]
2) Y=x-cos(x); точность: 0,001; интервал: [0; 1]
3) Y=x-ln(x); точность: 0,001; интервал: [0; 1]
#include
#include
#include
float mpd1(float x) // functions mpd — «metod polovinnogo deleniya»
<
return (3*cos(2*x+4));
>
float mpd2(float x)
<
return (x-cos(x));
>
float mpd3(float x)
<
return (x-log(x));
>
void main()
<
float a,b,c,e;
int i=1, number;
clrscr();
cout >number;
cout >a;
cout >b;
cout >e;
c=(a+b)/2;
cout e)&&(mpd1(c)!=0))
<
if (mpd1(a)*mpd1(c) e)&&(mpd2(c)!=0))
<
if (mpd2(a)*mpd2(c) e)&&(mpd3(c)!=0))
<
if (mpd3(a)*mpd3(c) Результаты:
Если вам нравится то, что мы пишем, пожалуйста, нажмите на интересующую вас рекламу сбоку, сверху, или сразу после статьи. Будет стимул писать лучше и чаще. Хорошего вам дня.
Видео:Решение уравнений (метод дихотомии) на C#Скачать
Решение уравнений методом половинного деления си
Уравнение типа F(x)=0 или x=f(x) называется нелинейным. Решить уравнение это значит найти такое x, при котором уравнение превращается в тождество. В общем случае уравнение может иметь 0; 1; 2;. ∞ корней. Рассмотренные ниже численные методы решения нелинейных уравнений позволяют находить один корень на заданном интервале [a,b]. При этом на интервале должен существовать только один корень. Рассмотрим несколько методов решения нелинейных уравнений.
- Метод перебора. При решении нелинейного уравнения методом перебора задаются начальное значение аргумента x=a и шаг h, который при этом определяет и точность нахождения корней нелинейного уравнения. Пока выполняется условие F(x)*F(x+h)>0 аргумент x увеличиваем на шаг h (x=x+h). Если произведение F(x)*F(x+h) становится отрицательным, то на интервале [x,x+h] существует решение уравнения. Структограмма метода приведена на рисунке.
- Метод хорд-касательных. Если в методе касательных производную функции F'(xi) заменить отношением конечных приращений, то получаем расчетную формулу для метода хорд-касательных . Порядок выполнения вычислений в данном методе аналогичен рассмотренному ранее.
- Метод итераций. При решении нелинейного уравнения методом итераций воспользуемся записью уравнения в виде x=f(x). Задаются начальное значение аргумента x0 и точность ε. Первое приближение решения x1 находим из выражения x1=f(x0), второе — x2=f(x1) и т.д. В общем случае i+1 приближение найдем по формуле xi+1 =f(xi). Указанную процедуру повторяем пока |f(xi)|>ε. Условие сходимости метода итераций |f'(x)| ε
Рис. Структограмма для метода итераций
Контрольное задание. Лабораторная работа 4.
Решение нелинейных уравнений.
Задание. Решить нелинейное уравнениеуказанными в табл. методами, предварительно определив интервал [a,b], на котором существует решение уравнения. Сделать проверку решения.
Варианты уравнений и методов их решения приведены в таблице.
💡 Видео
Метод половинного деленияСкачать
Метод половинного деления. ДихотомияСкачать
Метод половинного деления - ВизуализацияСкачать
Метод дихотомии c++Скачать
12й класс; Информатика; "Численные методы. Метод половинного деления"Скачать
Урок 10. C++ Метод половинного деленияСкачать
Урок 10. C++ Метод половинного деленияСкачать
14 Метод половинного деления Ручной счет Численные методы решения нелинейного уравненияСкачать
5 Метод половинного деления Блок-схема Численные методы решения нелинейного уравненияСкачать
Алгоритмы. Нахождение корней уравнений методом деления отрезка пополам.Скачать
Метод половинного деления Ручной счет Численные методы решения нелинейного уравненияСкачать
Метод дихотомииСкачать
Отделение корней уравнений аналитическим методом. Уточнение корней методом половинного деленияСкачать
8 Метод половинного деления Calc Excel Численные методы решения нелинейного уравненияСкачать
7 Метод половинного деления Mathcad Численные методы решения нелинейного уравненияСкачать