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