Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [С++] Вычисление площади фигуры


Автор: SunRaider 24.4.2008, 21:10
Даны две непрерывные функции f(x) и g(x). Требуется на интервале [a;b] вычислить площадь фигуры между графиками функций с заданной точностью E.

Заранее спасибо! 

Автор: susanin 25.4.2008, 13:53
так тут больше математики чем программирования...если скажете как находить площадь фигур, ограниченных функциями, то помогу, а так...в другой раздел...

Автор: mr.Anderson 25.4.2008, 14:26
Площадь ищется через интеграл, взятый на отрезке [a;b] . Подинтегральное выражение - функция, которая выше (по графику), минус функция, которая ниже.

Честно говоря, плохо себе представляю реализацию.

Автор: dolby 25.4.2008, 18:13
Есть задача с вычислением площади фигуры, может адаптируешь под свое, просто дописать ввод функций f(x) и g(x)... Это метод трапеции... Правда функция уже введена.

Код

#include<stdio.h>
#include<math.h>
#include<conio.h>
double f(double);
double tr(double(*)(double),double,double,double,int);
int main()
{
   double a,b,e;
   int n;
   double (*ff)(double);
   puts("vvedite granicy,tochnost',chislo chastej dlya droblenija");
   scanf("%lf%lf%lf%d",&a,&b,&e,&n);
   printf("znach integrala=%6.4lf",tr(f,a,b,e,n));
getch();
return 0;
}

double tr(double(*f1)(double),double a,double b,double e,int n)
{
   double y2=0,y1,x,h=(b-a)/n;
   do
   {
       y1=y2;
       y2=0.5*((*f1)(a)+(*f1)(b));
       for(x=a+h;x<b;x+=h)
      y2+=(*f1)(x);
       y2*=h;
       h/=2;
   }while(fabs(y1-y2)>e);
return y2;
}
double f(double x)
{return 1/sqrt(1-pow(x,4));}   //сюда записать f(x)-g(x)




Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)