Форум программистов, компьютерный форум CyberForum.ru

Вычислить методом Симпсона - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Jony Wocker
45 / 45 / 2
Регистрация: 19.11.2009
Сообщений: 362
13.05.2010, 20:33     Вычислить методом Симпсона #1
Вычислить интеграл http://www.cyberforum.ru/attachment....p;d=1273752305 методом Симпсона.
Не пойму этих формул...

Добавлено через 34 минуты
Это правильно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//---------------------------------------------------------------------------
#include <vcl.h>
#include <conio.h>
#include <stdio.h>
//---------------------------------------------------------------------------
int main()
{double a=0.8,b=1.4,h,j,s=0,x;
int i,n=20;
double f[20];
for(i=0;i<20;i++)
{f[i]+=a+((b-a)*i)/2*n;
s+=((b-a)/6*n)*(f[0]+4*(f[1]+f[3]+f[2*n-1])+2*(f[2]+f[4]+f[2*n+2])+f[2*n]);}
printf("S=%8.4f",s);
getch();
return 0;
}
//---------------------------------------------------------------------------
Плиссс помогите
Мне курсовую через две недели сдавать!!!!!!!
http://ru.wikipedia.org/wiki/Метод_п...BA.D0.BE.D0.B2
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
genius5
 Аватар для genius5
114 / 36 / 2
Регистрация: 13.12.2009
Сообщений: 223
13.05.2010, 22:45     Вычислить методом Симпсона #2
а зачем тебе массив??
и откуда число 20??
Jony Wocker
45 / 45 / 2
Регистрация: 19.11.2009
Сообщений: 362
14.05.2010, 23:25  [ТС]     Вычислить методом Симпсона #3
Цитата Сообщение от genius5 Посмотреть сообщение
а зачем тебе массив??
По другому не знаю как...

Цитата Сообщение от genius5 Посмотреть сообщение
и откуда число 20??
Честно говоря сам не знаю.
Вроде для разбивания интервала интегрирования...
genius5
 Аватар для genius5
114 / 36 / 2
Регистрация: 13.12.2009
Сообщений: 223
15.05.2010, 15:46     Вычислить методом Симпсона #4
нет тебе нужен просто размер шага.
и все и концы отрезка.
Jony Wocker
45 / 45 / 2
Регистрация: 19.11.2009
Сообщений: 362
15.05.2010, 15:56  [ТС]     Вычислить методом Симпсона #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//---------------------------------------------------------------------------
#include <vcl.h>
#include <conio.h>
#include <stdio.h>
//---------------------------------------------------------------------------
int main()
{double a=0.8,b=1.4,h,j,s=0,x;
int i;
const int n=9;
double f[n];
for(i=a;i<=b;i++)
{f[i]+=a+((b-a)*i)/2*n;
s+=((b-a)/6*n)*(f[0]+4*(f[1]+f[3]+f[2*n-1])+2*(f[2]+f[4]+f[2*n+2])+f[2*n]);}
printf("S=%10.4f",s);
getch();
return 0;
}
//---------------------------------------------------------------------------
??????
genius5
 Аватар для genius5
114 / 36 / 2
Регистрация: 13.12.2009
Сообщений: 223
15.05.2010, 23:42     Вычислить методом Симпсона #6
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
double intergral2(double a,double b,double(*f)(double x),double e,double *sum)
{double x1,kap,p,I1,I2,h=0.3;
//FILE*fin=fopen("d.txt","w");
x1=a;
*sum=0;
while(1==1)
{
I1=I(x1,x1+h,f);//0.5*h*(f(c)+f(d));
I2=I(x1,x1+h*0.5,f)+I(x1+h*0.5,x1+h,f);//0.5*h*(f(k)+f(l)+f(s)+f(w));
p=((I1-I2))/15.;
if(fabs(p)<e){*sum=*sum+I2;x1=x1+h;}
kap=fabs(p)/e;
if(kap>1.e+5)kap=1.e+5;
if(kap<1.e-5)kap=1.e-5;
h*=0.95/pow(kap,0.2);
//printf("%lg\n ",*sum);
if(x1+h>b)h=b-x1;
if(fabs(b-x1)<e)break;
}return 2;}
Добавлено через 4 минуты
это сфмо вычисление суммы
а ето метод 2 точечный гаус
C
1
2
3
4
5
double I(double v,double q,double(*f)(double x))
{double l,h=q-v;
l=0.5*h*(f((v+q)/2+h/2*sqrt(3))+f((v+q)/2-h/2*sqrt(3)));
return l;
}
Добавлено через 14 секунд
это сфмо вычисление суммы
а ето метод 2 точечный гаус
C
1
2
3
4
5
double I(double v,double q,double(*f)(double x))
{double l,h=q-v;
l=0.5*h*(f((v+q)/2+h/2*sqrt(3))+f((v+q)/2-h/2*sqrt(3)));
return l;
}
Добавлено через 4 минуты
а
double f(double x)
{
double l;
l=....;
return l;}

это подинтегральное выражение

Добавлено через 15 секунд
а
double f(double x)
{
double l;
l=....;
return l;}

это подинтегральное выражение
Yandex
Объявления
15.05.2010, 23:42     Вычислить методом Симпсона
Ответ Создать тему
Опции темы

Текущее время: 06:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru