Float x, y, c, fx, fy, fc;

fx = (*f)(x);

fy = (*f)(y);

if (fx * fy > 0.0)

{

puts(“Неверный интервал!”);

return -1; // аварийное завершение программы

}

Do

{

c = (y – x)/2.0; // центр интервала

fc = (*f)(c); // значение функции в нем

if (fc * fx > 0.0)

{

x = c;

fx = fc;

}

Else

{

y = c;

fy = fc;

}

}

while ((fc!=0.0) && (fabs(y-x) > eps));

Return c;

}

 

Полный вид программы:

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <math.h>

typedef float (*point_func)(float); // новый тип данных - // указатель на функцию

// вещественного типа

Float test_func(float x);

Float root(point_func f, float a, float b, float eps);

Int main()

{

Float left, right, tochn, koren;

printf(“\n левая граница интервала:”);

scanf(“%f”, &left);

printf(“\n правая граница интервала:”);

scanf(“%f”, &right);

if (left >= right)

{

puts(“Error!”);

return -1; // аварийное завершение программы

}

printf(“\n точность вычислений:”);

scanf(“%f”, &tochn);

printf(“\n”);

koren = root(test_func, left, right, tochn);

printf(“\n корень функции в заданном интервале = %3.5f”, koren);

Return 0;

}

Float test_func(float x)

{

return x*x–1.0;

}

Float root(point_func f, float a, float b, float eps)

{

Float x, y, c, fx, fy, fc;

fx = (*f)(x);

fy = (*f)(y);

if (fx * fy > 0.0)

{

puts(“Неверный интервал!”;

return -1; // аварийное завершение программы

}

Do

{

c = (y–x)/2.0; // центр интервала

fc = (*f)(c); // значение функции в нем

if (fc * fx > 0.0)

{

x = c;

fx = fc;

}

Else

{

y = c;

fy = fc;

}

}

while ((fc!=0.0) && (fabs(y-x) > eps));








Дата добавления: 2015-10-19; просмотров: 1097;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.