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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Jony Wocker
45 / 45 / 2
Регистрация: 19.11.2009
Сообщений: 362
#1

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

13.05.2010, 20:33. Просмотров 1153. Ответов 5
Метки нет (Все метки)

Вычислить интеграл 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2010, 20:33     Вычислить методом Симпсона
Посмотрите здесь:

Нахождение интеграла методом Симпсона C++
C++ Решить методом трапеций или Симпсона определенный интеграл
Интеграл методом Симпсона C++
C++ Нахождение интеграла методом Симпсона
интеграл методом Симпсона C++
Интеграл функции методом трапеций, прямоугольника и Симпсона C++
C++ Интеграл методом Симпсона и трапеции (Code::Blocks)
Вычислить интеграл методом Симпсона C++
Найти площадь фигуры методом трапеций и методом Симпсона C++
Применение операторов цикла в С++. Методом Симпсона C++
Интеграл в С++ Методом правых, средних и Симпсона C++
C++ Вычисление значения трех определенных интегралов методом трапеций или методом Симпсона

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
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
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     Вычислить методом Симпсона
Ответ Создать тему
Опции темы

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