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

вычисление интеграла - C++

Восстановить пароль Регистрация
 
sopik
2 / 1 / 0
Регистрация: 28.03.2010
Сообщений: 81
14.04.2010, 18:45     вычисление интеграла #1
Даны вещественные числа a, b. Значения функции f(x)=(x+1)2√lg x; a=2; b=10;
записать в массив. Вычислить значение интеграла, используя:
1) Формулу трапеций

I1=h*[f(a)/2+f(a+h)+f(a+2h)+…+f(a+(n-1)h)+f(b)/2]


2) Формулу Симпсона

I2=h/3*(f(a)+f(b)+4*(f(a+h)+f(a+3h)+…+f(a+(n-1)h))+

2*(f(a+2h)+f(a+4h)+…+f(a+(n-2)h)))


h=(b-a)/n, n=100.

Вот такие соображения по алгоритму: расчёт выполняем по формулам (формулы даны) .Объявим массив func[n+1], где n - количество отсчётов функции на интервале от а до b , запмсываем знач-я функции в массив, (шаг вычисляем (b-a)/n ,аргумент ф-ии a+i*h, где i параметр цикла, меняющийся от 0 до n ( т. е. всего n значений). массив используем для вычислений по обеим формулам. в первой формуле сумма знач-й массива от 1 до n-1, плюс граничные func[0]/2+ func[n]/2 и умножаем на шаг(h). Во второй форм. две суммы - нечётные и чётные значения сумм-ся отдельно и потом по формуле находится общая сумма.
Помогите с кодом.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2010, 18:45     вычисление интеграла
Посмотрите здесь:

Вычисление интеграла C++
C++ Вычисление интеграла
Вычисление определенного интеграла! C++
Вычисление интеграла C++
C++ Вычисление интеграла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mix1965
 Аватар для mix1965
2 / 2 / 0
Регистрация: 13.04.2010
Сообщений: 23
15.04.2010, 10:39     вычисление интеграла #2
Только свои значения подставь, я думаю разберёшься где


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//Lab 2_2_1
//Integral po formule tropecii
#include <STDIO.h>
#include <MATH.h>
#include <CONIO.h>
#define n 100
int i;
float a, b, h, x, s, sn, f[n];
main()
{
clrscr ();
a=0.5; b=2.5;
h=(b-a)/n;
f[1]=pow(a,2)*sqrt(pow((2+3*a),3));
f[100]=pow(b,2)*sqrt(pow((2+3*b),3));
for(i=1; i<n; i++)
         {
         x=(a+i*h);
         f[i]=pow(x,2)*sqrt(pow((2+3*x),3));
         sn+=f[i];
         }
s=(h/2)*(f[1]+f[100]+2*sn);
printf ("\nZnachenie integrala s=%f", s);
getch ();
}
 
 
 
//Lab 2_2_2
//Integral po formule Simpsona
#include <STDIO.h>
#include <MATH.h>
#include <CONIO.h>
#define n 100
int i;
float a, b, h, x, s, s1, s2, f[n];
main()
{
clrscr ();
a=0.5; b=2.5;
h=(b-a)/n;
f[1]=pow(a,2)*sqrt(pow((2+3*a),3));
f[100]=pow(b,2)*sqrt(pow((2+3*b),3));
for(i=1; i<n-1; i++)
         {
         x=(a+i*h);
         if (i%2==0)
            {
            f[i]=pow(x,2)*sqrt(pow((2+3*x),3));
            s1+=f[i];
            }
         else
            {
            f[i]=pow(x,2)*sqrt(pow((2+3*x),3));
            s2+=f[i];
            }
 
         }
 
s=(h/3)*(f[1]+f[100]+(2*s1)+(4*s2));
printf ("\nZnachenie integrala s=%f", s);
getch ();
}
sopik
2 / 1 / 0
Регистрация: 28.03.2010
Сообщений: 81
15.04.2010, 12:37  [ТС]     вычисление интеграла #3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include<stdio.h>
#include<math.h>
#define n 100
const double a=2.0, b=10.0;
const double h=(b-a)/n;
double func[n+1];
double f(double x)
{
return(x+1)*2*sqrt(log10(x));
}
double trapecii()
{
double result=0.0;
for(int i=0; i<n; ++i)
result+=(func[i]+func[i+1])*h/2;
return result;
}
double simpson()
{
double result=0.0;
result+=(func[0]+func[n])*h/3;
for(int i=1; i<n; i+=2)
result +=4*h/3*func[i];
for( i=2; i<n; i+=2)
result +=2*h/3*func[i];
return result;
}
void main()
{
for(int i=0; i<=n; ++i)
func[i]=f(a+i*h);
double I1, I2;
I1=trapecii();
I2=simpson();
printf("%f\n%f\n",I1,I2);
scanf("%F%f",I1,I2);
}
спасибо.у меня вот такой вариант еще есть.
mix1965
 Аватар для mix1965
2 / 2 / 0
Регистрация: 13.04.2010
Сообщений: 23
15.04.2010, 14:11     вычисление интеграла #4
Да забыл сказать, на моём примере ответы различаются / может погрешность такая при расчёте разными формулами/ я ещё не разбирался с этим.
У тебя 6 вариант?
sopik
2 / 1 / 0
Регистрация: 28.03.2010
Сообщений: 81
15.04.2010, 14:16  [ТС]     вычисление интеграла #5
у меня 3-й, интегралы должны быть приблизительно равны до 3 значащих цифр, я отправил свой вариант на проверку.
mix1965
 Аватар для mix1965
2 / 2 / 0
Регистрация: 13.04.2010
Сообщений: 23
15.04.2010, 16:49     вычисление интеграла #6
Я ещё не отправлял
Yandex
Объявления
15.04.2010, 16:49     вычисление интеграла
Ответ Создать тему
Опции темы

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