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

Интегралы, площадь заштрихованной области - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Удалить из массива все элементы, в записи которых есть заданная цифра http://www.cyberforum.ru/cpp-beginners/thread1305595.html
дан одномерный массив целых чисел заполненный случайным образом числами из промежутка удалить из него все элементы в записи которых есть заданная цифра. Hапишите полный текст программы пожалуйста. Спасибо
C++ Кусок строки находящийся между скобками Нужно максимально оптимально вывести кусок строки находящийся между скобками. Просто так я напишу, но нужно именно максимально оптимально. Помогите пожалуйста! http://www.cyberforum.ru/cpp-beginners/thread1305586.html
Организовать цикл do/while, который принимает целые числа с клавиатуры и вычитает их из 10000 C++
do - while Организовать цикл, который принимает целые числа с клавиатуры и вычитает их из 10000. Окончание цикла - получение отрицательного итога
В массиве найти среднее геометрическое, все элементы с нечетными индексами уменьшить на среднее геометрическое C++
В заданном массиве A1,A2, ... An найти среднее геометрическое, а затем все элементы с нечетными индексами уменьшить на величину среднего геометрического. Указание. Среднее геометрическое вычисляется по формуле: "формула на скрине"
C++ Найти максимальный элемент среди положительных элементов матрицы А http://www.cyberforum.ru/cpp-beginners/thread1305578.html
Доброго времени суток! Задание такое вот: Дана матрица А(5,5) задать из файла. Найти новый одномерный массив С из произведений элементов каждой строки матрицы А. Найти максимальный элемент , среди положительных элементов матрицы А. Заменить третий элемент в 1 строке матрицы А на найденный максимальный элемент. Код программы написал я. #include "stdafx.h" #include <iostream> #include...
C++ Как описать в структуре строку не через указатель Есть структура struct InfoBuf { size_t Len; char Data; / ??? static InfoBufType* Create(size_t Size, char* Val){ InfoBufType* P = (InfoBufType*)new char; P->Len = Size; memcpy(P->Data, Val, Size, Size); return P; подробнее

Показать сообщение отдельно
D_in_practice
 Аватар для D_in_practice
330 / 330 / 159
Регистрация: 02.10.2014
Сообщений: 666
20.11.2014, 07:35     Интегралы, площадь заштрихованной области
Интегралы, площадь заштрихованной области
Код для таблицы
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>
#include <cmath>
#include <iomanip>
 
using namespace std;
 
double f1(double x){
    return log(1 + x * x);
}
 
double f2(double x){
    return (2/x) * cos (x/2);
}
 
double f3(double x){
    return exp(-x * x);
}
 
int main(){
   
cout<< "  x      log(1 + x * x)   (2/x) * cos (x/2)         exp(-x * x)" <<endl;
cout<< "---------------------------------------------------------------" <<endl;
    
    for (int i = 0; i <= 20; ++i){
        
        double x = i * 0.5;
        cout << setw(3) << x;
        cout << setw(20) << f1(x);
        cout << setw(20) << f2(x);
        cout << setw(20) << f3(x) << endl;
    }
}

Код
Из таблицы получил:
0.5 < a < 1
  1 < b < 1.5
  3 < c < 3.5
Метод половинного деления
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
64
#include <iostream>
#include <cmath>
 
double f1(double x){
    return log(1 + x * x);
}
 
double f2(double x){
    return (2/x) * cos (x/2);
}
 
double f3(double x){
    return exp(-x * x);
}
 
double f(double x, int i){ //a: i=0, b: i=1, c: i=2
    
    switch (i){
        case 0:
            return f1(x) - f3(x);
            break;
        case 1:
            return f1(x) - f2(x);
            break;
        case 2:
            return f2(x) - f3(x);
            break;
    }
}
 
int main(){
    
   const double EPS = 1e-10;
    
   for (int i = 0; i < 3; ++i){
    
    double left, right;
        switch (i){
            case 0:
                left = 0.5;
                right = 1;
                break;
            case 1:
                left = 1;
                right = 1.5;
                break;
            case 2:
                left = 3;
                right = 3.5;
                break;
        }
        
        double x = (right + left) / 2;
        while (fabs(f(x, i)) > EPS){
        if (f(left, i) * f(x, i) > 0)
            left = x;
        else
            right = x;
        x = (right + left) / 2;
        }
        
        std::cout << x << std::endl;
   }
}

Код
a = 0.817922
b = 1.40341
c = 3.14143
Метод Симпсона
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
#include <iostream>
#include <cmath>
 
double f1(double x){
    return log(1 + x * x);
}
 
double f2(double x){
    return (2/x) * cos (x/2);
}
 
double f3(double x){
    return exp(-x * x);
}
 
int main(){
    
   const double N = 100000;
   
   double left = 0.817922;
   double right = 1.40341;
    double dx = (right - left) / (N - 1);
    double sum1 = 0;
   for (int i = 1; i < N - 1; ++i){
      double x = left + i * dx;
      if (i % 2 == 0)
         sum1 += 2 * (f1(x) - f3(x));
      else
         sum1 += 4 * (f1(x) - f3(x));
   }   
   sum1 = (dx / 3) * (left + sum1 + right);
   
    left = right;
   right = 3.14143;
    dx = (right - left) / (N - 1);
    double sum2 = 0;
   for (int i = 1; i < N - 1; ++i){
      double x = left + i * dx;
      if (i % 2 == 0)
         sum2 += 2 * (f2(x) - f3(x));
      else
         sum2 += 4 * (f2(x) - f3(x));
   }  
   sum2 = (dx / 3) * (left + sum2 + right);
    
    std::cout << sum1 + sum2 << std::endl;
}

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