Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2013, 14:06   #1
GGLeq
Пользователь
 
Регистрация: 04.12.2012
Сообщений: 14
По умолчанию график интегрирования методом Симпсона три восьмых 3/8

Доброго времени суток. Очень нужна помощь в построении графика. Интеграл считает. Вот мой код:
Код:
#include <conio.h>
#include <iostream>
#include <graphics.h>
#include <math.h>
float fun1(float, float, float, float);
float fun2(float, float, float, float);
float fun3(float, float, float, float);
float pfun1(float, float, float, float, float);
float pfun2(float, float, float, float, float);
float pfun3(float, float, float, float, float);
int main()
{
 setlocale(LC_ALL,"Russian");
 float a,b,c; 
 float x1,x2; 
 int n,flag;
 printf("Введите номер уравнения для его вычисления.\n");
 printf("Уравнение 1: y = a*x^3+b*x+c\nУравнение 2: y = a*sin(x+b)+c\nУравнение 3: y = a*ln|x+b|+c\n");
 scanf("%d",&flag);
 
 printf("Введите область интегрирования [x1,x2]\n");
 scanf("%f%f",&x1,&x2);
 printf("Введите число разбиений (n)\n");
 scanf("%d",&n);
 
      printf("Введите коэффициенты уравнений a,b,c\n");
      scanf("%f%f%f",&a,&b,&c);
      
      
      
 float (*pFunc)(float,float,float,float);
 float (*pPerv)(float,float,float,float,float);
 switch(flag)
 {
  case 1: pFunc = fun1;
  pPerv = pfun1; break;
  case 2: pFunc = fun2;
  pPerv = pfun2; break;
  case 3: pFunc = fun3;
  pPerv = pfun3; break;
 default: return 0;      
 }
 
 float x, h, m, s;
 h = ((x2 - x1)/ (3*n)); //длина отрезков разбиения
 s = pFunc(x1,a,b,c)+pFunc(x2,a,b,c); 
 m=3*n-1;
    for ( int i = 1; i<= m; i++)             
        {
         x = x1 + h*i;         
         if (i%3 == 0)
         s = s + 2 * pFunc(x,a,b,c);
           else
            s = s + 3 * pFunc(x,a,b,c);
        }
 
 s = 3./8*s*h;
 float absolut = fabs(fabs(s) - fabs(pPerv(a,b,c,x1,x2)));
 float otnosit = fabs(100*absolut/s);
 
 printf("интеграл симпсона 3/8 - %f\n",s);
 printf("точное значение интеграла - %f\n",pPerv(a,b,c,x1,x2)); 
 printf("абсолютная погрешность - %f\n",absolut);
 printf("относительная погрешность - %f\n",otnosit);
 initwindow(800,600);
 setcolor(BLUE);
 line(0,300,800,300);
 line(400,0,400,600);
 getch();           
}
 
 
 
 
//////////////////////////////////
float fun1(float x, float a, float b, float c)
{
 return (a*pow(x,3)+x*b+c);
}
 
float fun2(float x, float a, float b, float c)
{
 return (a*sin(b+x)+c);
}
 
float fun3(float x, float a, float b, float c)
{
 return (a*log(fabs(b+x))+c);
}
float pfun1(float a, float b, float c, float x1, float x2)   
{
 return(a * pow(x2, 4) / 4 + b * pow(x2, 2) / 2 + c * x2)-(a * pow(x1, 4) / 4 + b * pow(x1, 2) / 2 + c * x1);
}
float pfun2(float a, float b, float c, float x1, float x2)
{
 return((- a * cos(x2 + b) + c * x2)- (- a * cos(x1 + b) + c * x1));
}
float pfun3(float a, float b, float c, float x1, float x2)
{
 return(a * (x2 - b) * log (x2 + b) - a * (x2 - b) + c * x2)-(a * (x1 - b) * log (x1 + b) - a * (x1 - b) + c * x1);
}
Если кто-нибудь возьмется, вот мой скайп mctraher43

Последний раз редактировалось GGLeq; 30.05.2013 в 17:16.
GGLeq вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция для численного интегрирования системы дифференциальных уравнений методом Рунге - Кутта DenProx Общие вопросы C/C++ 4 03.07.2012 12:33
численное интегрирование методом Симпсона: трудности с блок-схемой smalljoke Помощь студентам 0 26.11.2010 02:34
Решение в С++ методом трапеции и Симпсона chapello Помощь студентам 0 15.09.2010 17:14
Разработка алгоритма вычисления параметрического интеграла методом Симпсона killbore Помощь студентам 3 09.04.2010 01:37
VB6.0 График зависимости погрешности от количества отрезков интегрирования. XenoS Помощь студентам 1 22.05.2008 10:22