задание
Составить программу на языке программирования С++ и блок-схему для решения следующей задачи: уточнить приближенное значение корня нелинейного уравнения f(x) = 0 на заданном отрезке [a,b] методом половинного деления (дихотомии) с точностью ε = 0.001.
Уравнение имеет вид: x3 - 9x2 + 20x – 11=0
Отрезок, на котором осуществляется поиск корня: [0; 1]
блок-схема
листинг кода
#include "stdio.h"
#include "conio.h"
#include "math.h"
// функция для вычисления 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)||(f(a)<0&&f((a+b)/2)>0))
b=(a+b)/2;
else
if ((f((a+b)/2)>0&&f(b)<0)||(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();
}
результат
Похожие публикации
2015-06-29 • Просмотров [ 1774 ]