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

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

Войти
Регистрация
Восстановить пароль
 
julia23_97
0 / 0 / 0
Регистрация: 09.12.2013
Сообщений: 18
#1

Интегралы по формуле Симпсона и прямоугольников (С++) - C++

15.04.2014, 20:01. Просмотров 1349. Ответов 1
Метки нет (Все метки)

Вычислить приближенное значение интеграла по формулам прямоугольников и Симпсона для n = 120 (интеграл на фото)
вот программа:
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
#include<iostream.h>
#include<math.h>
#include<conio.h>
void main()
{  float a,b,n,h,x,s1=0,s2=0,s,res,res1;
   int i;
   cout<<"Введите нижний предел интегрирования:  "<<endl;
   cin>>a;
   cout<<"Введите верхний предел интегрирования: "<<endl;
   cin>>b;
   cout<<"Введите n:  "<<endl;
   cin>>n;
   x=a;
   h=(b-a)/2/n;              //шаг интегрирования
   for(i=2; i<=2*n-2; i+=2)  //вычисление суммы значений с четными номерами        
   {  s1+=x*x*sin(x);
      x+=2*h;
   }
   s1*=2;                    //удвоение суммы значений с четными номерами          
   x=a;
   for(i=1; i<=2*n-1; i+=2)  //вычисление суммы значений с нечетными номерами        
   {  s2+=x*x*sin(x);
      x+=2*h;
   }
   s2*=4;
   s=s1+s2+a*sin(a)+b*sin(b); //вычисление итоговой суммы 
   res=(b-a)*s/(6*n);         //приближенное вычисление интеграла по формуле Симпсона
   res1=(b-a)*s/n;             //приближенное вычисление интеграла по формуле прямоугольников
   cout<<"Integral = "<<res<<endl;
   cout<<"Integral2 = "<<res1<<endl
   getch();
}
программа работает, но значения первого интеграла и второго не близки по значению( а должны). Что в этой программе не так ? Может для формул по прямоугольникам какая-то другая сумма должна быть?
0
Миниатюры
Интегралы по формуле Симпсона и прямоугольников (С++)  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2014, 20:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Интегралы по формуле Симпсона и прямоугольников (С++) (C++):

Вычислить интеграл методами прямоугольников и Симпсона - C++
Разработать алгоритм блок-схемы, чтобы обчислить численного интегрирования с использованием метода прямоугольника или Симпсона

Найти интеграл методами правых прямоугольников и Симпсона - C++
Составить программу вычисления определенного интеграла методами правых прямоугольников и Симпсона с помощью вызова двух различных функций и...

Найти значения определенного интеграла по формулам прямоугольников, трапеции и Симпсона - C++
Составить программу вычисления приближенного значения определенного интеграла по квадратным формулам прямоугольников , трапеций и Симпсона ...

Вычислить заданные интегралы по формулам трапеций и Симпсона, определяя шаг интегрирования - C++
Вычислить заданные интегралы по формулам трапеций и Симпсона, определяя шаг интегрирования. Добавлено через 1 минуту сделать...

Вычислить интеграл методами левых прямоугольников, трапеций и Симпсона с заданной точностью - C++
Вычислить интеграл 14 ∫ x^3lnxd 06 методами левых прямоугольников, трапеций и Симпсона с заданной точностью (вводится с...

Вычисление функции по формуле Симпсона и Треугольника - C++
Вычислить функцию по формулам &quot;Треугольника&quot; и &quot;Симпсона&quot; функция во вложении. Программа: #include&lt;iomanip.h&gt; ...

1
Exоrcist
15 / 15 / 7
Регистрация: 20.02.2014
Сообщений: 86
15.04.2014, 20:27 #2
julia23_97, обязательно программа должна быть на СИ++?

Добавлено через 3 минуты
Вот часть кода по другому принципу:
Java
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
static int a = 0; // пределы интегрирования
    static int b = 1;
    static double e = 0.0001;//точность
    static double h = 0.05; //шаг
    int amount = 0; 
    double func (double x)
    {
        return Math.cos(x);
    }  
    //метод левых прямоугольников c постоянным шагом
    double LevPrCons(double a, double b, double h)
    { double x = 0; 
      double otv = 0;
    
    for (x = a; x<b; x+=h){
        otv = (otv+func(x));
        
    }
      otv*=h;
      return otv;
    }
    //метод левых прямоугольников c автоматическим шагом
    double LevPrAuto(double a, double b)
    { 
        double otv1 = LevPrCons(a,b,b-a);
        double otv2 = LevPrCons(a,b,(b-a)/2);
        amount++;
        if( Math.abs(otv1-otv2) < e*(b-a)/(b-a) ) return otv2;
   else return LevPrAuto(a,(a+b)/2) + LevPrAuto((a+b)/2,b);
      
    }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2014, 20:27
Привет! Вот еще темы с ответами:

Найти ошибку в программе. Интеграл по формуле Симпсона, - C++
посмотрите правильно ли выполнил задание // Lab14Y.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; ...

Даны стороны трех прямоугольников Найти периметры и площади этих прямоугольников - C++
1. S1=SSS(a1, b1); S2=SSS(a2, b2); S3=SSS(a3, b3); -------------------------------- int SSS(int a, int b) { return (a*b);...

Объединение прямоугольников (количество объединенных прямоугольников минимально) - C++
Добрый день. Прошу помощи в выполнении задачи. Дан список прямоугольников, которые задаются координатами верхней левой вершины и...

Программа считает интегралы методом а) прямоугольников, б) трапеций, в) Симпсона (Добавьте цикл) - Pascal ABC
Помогите в эту программу добавить меню. Три пункта меню для вызова соответствующей подпрограммы и 4 для выхода. Программа считает...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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