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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Заполнить случайными элементами массив, умножить каждый элемент на два и вывести http://www.cyberforum.ru/cpp-beginners/thread66991.html
Программа получения одномерного массива, состоящего из 20 элементов с помощю датчика случайных чисел. Каждый элемент пассива умножить на 2, а результат записать в другой массив и обеспечить вывод исходного и ризультирующего массива на мониторе. Вывод массива обеспечить построчно. Каждая строка должна содержать не более пяти элементов
C++ Целочисленная арифметика 1. Найти наибольшую нечетную цифру. Если ее нет, возвратить 0? 2. Определить, состоит ли число из четных и нечетных цифр? http://www.cyberforum.ru/cpp-beginners/thread66968.html
массив строк C++
Создать массив строк, содержащих имена 20 человек. Длина фамилии не превышает 30 элементов. Вывести имена в алфавитном порядке. помогите с решением, в тупике((
C++ Высший пилотаж, или как уменьшить штраф
Помогите, пожалуйста. Моя контрольная работа "горит":( Саму матрицу я создал, но как по ней передвигаться - вот вопрос? Задание в прикрепленном файле... P.S. Задание нужно исключительно на Си! Прошу, помогите, пожалуйста!!!
C++ Подсчитать количество локальных минимумов заданной матрицы http://www.cyberforum.ru/cpp-beginners/thread66928.html
Приветик всем!!! Мне тут подружка принесла задание с котрым я не могу справится,надо написать прогрмку на С++ Помогите пожайлуста!!!Расцелую всех:) Вот само задание: В ходе выполнения практического задания требуется составить алгоритм в виде блок-схемы и програму решения задачи на языке програмирования С++ Элемент матрицы называется локальным минимумом,если он строго меньше всех имеющихся у...
C++ подсчет символов Помогите пожалуйста решить задачку. я полный нуб в с++ но очень нужно решение. Написать программу, которая считывает текстовый файл и выводит на экран какие буквы встречаются в этом файле, а также какое их количество. подробнее

Показать сообщение отдельно
Xorus
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 10
25.11.2009, 00:31  [ТС]     Вычисление интеграла
PS: Нашёл похожую фунцию, но тут методом левых прямоугольников.
Если кто нибудь понимает это подскажите как перейти на правые прямоугольники, я вообще не понимаю эти методы

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
 #include <iostream.h>
#include <math.h>
                     //прототип функции вычисления интеграла по критерию двойного пересчетa
void Vych_Int_lpram(double a, double b, double eps, double (*pf) (double), double *I,  int *k);
                   //прототип функции вычисления суммы по методу левых прямоугольников
void Sum (double a, double b, double h, double (*pf) (double), double *S);
double  f1 (double);              
 
int main ()
{ double  a, b, eps;               //a-b отрезок,  eps точность
   double Int;                        //значение интеграла
    int K_iter;                        //количество итераций
  
  cout << "Input a, b, eps\n";
  cin >> a >> b >> eps; 
 Vych_Int_lpram(a, b, eps, &f1, &Int, &K_iter);      //вычисление интеграла для f1
  cout << "Integral    for f1  =" << Int << "    K_iter= "<< K_iter << endl;
return 0;
}
 
void Vych_Int_lpram(double a, double b, double eps, double (*pf) (double), double *I,  int *k)
 {int n=20;                      //количествo разбиений 
 double h=(b-a)/n;          //шаг интегрирования
 double S1=0, S2=0;      // значения сумм с шагом h и с шагом h/2
 
 Sum (a, b, h, pf, &S1);   // процесса двойного пересчетa
 *k=0;
 do
          {  S2= S1;       
      n *=2;                      //увеличение количества отрезков разбиения и        
      h=(b-a)/n;                //уменьшение шага интегрирования в 2 раза
      Sum (a, b, h, pf, &S1);        //повторное вычисление суммы в S1 
      *k +=1;
 }while (fabs(S1-S2) > eps) ;  
 *I=S1;                    
}
 
void Sum(double a, double b, double h, double (*pf) (double), double *S)
 { double x, sum;
    x=a; 
    sum=0;
    while (x<b) {
             sum=sum+(*pf)(x);    //накопление суммы высот
         x=x+h;
     }  
    *S=h*sum;                                     //вычисление площади
   }
 
 double  f1 (double x)
{ return cos(x)/exp(0.333333*log(x));}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru