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

Метод симпсона - C++

Восстановить пароль Регистрация
 
un1acker
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 22
24.03.2012, 17:49     Метод симпсона #1
Подскажите в чем ошибка ?? почему отрицательные значения выводятся???
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
//Metod simpsona
 
#include <iostream>
#include <math.h>
using namespace std;
 
int main()
 
{
    unsigned long i,n;
    double s1,s2,y,x,a,b,h,eps;
    cout<<"Vvedite 4etnor kolvo delenii:";
    cin>>n;
    cout<<"eps:";
    cin>>eps;
    a=0;
    b=3.14;
    h=(b-a)/n;
    x=a;
    for(i=0;i<=n;i++)
    {   y=cos(x)/(x+1);
        x+=h;
        if(i%2!=0)s1=s1+4*y;
        if(i==0 || i==n)s1+=y;
        else s1=s1+2*y;
 
        }
        s1+=h/3;
   do {n=2*n;
           h=(b-a)/n;
    s2=0;
          for (i = 1; i<=n; i++)
              {y=cos(x)/(x+1);
        x+=h;
        if(i%2!=0)s2=s2+4*y;
        if(i==0 || i==n)s2+=y;
        else s2=s2+2*y;}
 
            s1=s2;
        } while(fabs(s1-s2)>eps);
        s2+=h/3;
            cout<<"s="<<s1;
        cout<<"s="<<s2;
 
 
 
 
 
 
 
  return 0;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2012, 17:49     Метод симпсона
Посмотрите здесь:

Вычислить методом Симпсона C++
Интегрирование по методу Симпсона C++
Метод Симпсона C++
C++ метод симпсона
C++ Погрешность метода Симпсона
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
24.03.2012, 18:14     Метод симпсона #2
а что ты вводишь?
un1acker
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 22
24.03.2012, 18:22  [ТС]     Метод симпсона #3
100;0.001
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
24.03.2012, 18:41     Метод симпсона #4
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
//Metod simpsona
 
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
 
double f(double x)
{
 return cos(x)/(x+1);       
}
 
int main()
 
{
    unsigned long i,n;
    double s,x,a,b,h;
    cout<<"Vvedite 4etnor kolvo delenii: ";
    cin>>n;
    a=0;
    b=M_PI;
    h=(b-a)/n;
    x=a;
    s=0.5*f(x)+0.5*f(a+n*h);
    for (int k=1;k<n;k++)
    {
     s+=f(a+k*h);    
    }
    for (int k=1;k<=n;k++)
    {
     s+=2*f((a+(k-1)*h+a+k*h)/2);
    }
    s*=h/3;
    cout<<s;
    getch();
    return 0;
}
По количеству отрезков.
Destank
24.03.2012, 18:53
  #5

Не по теме:

Цитата Сообщение от un1acker Посмотреть сообщение
s1=s1+4*y;
выделенная жирным s1 не обьявленна, а ты пытаешься прибавить ее) ашарина говорила об этом на лекци)) но это не причина отрицательных значений)

Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
24.03.2012, 18:59     Метод симпсона #6
Цитата Сообщение от Destank Посмотреть сообщение
выделенная жирным s1 не обьявленна, а ты пытаешься прибавить ее) ашарина говорила об этом на лекци))
При занулении начальном ничего не меняется
Yandex
Объявления
24.03.2012, 18:59     Метод симпсона
Ответ Создать тему
Опции темы

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