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

Метод прямоугольников (трудности по коду) - C++

Восстановить пароль Регистрация
 
Exоrcist
 Аватар для Exоrcist
15 / 15 / 7
Регистрация: 20.02.2014
Сообщений: 86
02.04.2014, 21:42     Метод прямоугольников (трудности по коду) #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
    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);
      
    }
объясните, что в ней происходит, особенно я не понял этой строчки:
C++
1
2
3
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);
Заранее спасибо!

Добавлено через 6 часов 27 минут
апну
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2014, 21:42     Метод прямоугольников (трудности по коду)
Посмотрите здесь:

C++ Решение интеграла метод центральных прямоугольников
C++ С++ Метод прямоугольников
C++ Организовать поиск книги по коду, используя М-блочный метод
C++ Метод трапеций и прямоугольников
Метод прямоугольников для решения определенных интегралов C++
метод прямоугольников C++
C++ Метод средних прямоугольников для функции
Даны стороны трех прямоугольников Найти периметры и площади этих прямоугольников C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,178
Завершенные тесты: 1
02.04.2014, 21:49     Метод прямоугольников (трудности по коду) #2
C++
1
2
3
4
5
6
7
8
9
//метод левых прямоугольников c автоматическим шагом
double LevPrAuto(double a, double b)
{ 
        double otv1 = LevPrCons(a,b,b-a); // считаем площадь прямоугольника с основанием b-a
        double otv2 = LevPrCons(a,b,(b-a)/2);// считаем площадь 2-x прямоугольников с основаниями (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); // делим интервал на 2 половинки и в каждой считаем площади отдельно
}
Exоrcist
 Аватар для Exоrcist
15 / 15 / 7
Регистрация: 20.02.2014
Сообщений: 86
09.04.2014, 21:54  [ТС]     Метод прямоугольников (трудности по коду) #3
zss, спасибо большое!
Yandex
Объявления
09.04.2014, 21:54     Метод прямоугольников (трудности по коду)
Ответ Создать тему
Опции темы

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