Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 0
Регистрация: 14.12.2016
Сообщений: 33
1

Почему неправильно высчитывает интеграл

23.12.2016, 10:22. Показов 446. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Код вырван из программы с решением нескольких задач.

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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
double function(double x)
{
    return (exp(x)+exp(-x)); //Решаем ингтеграл по данному значению
}
 
 
double calcintegral(int a, int b, int N)
{
    int i;
    double result, h;
    result = 0;
    h = (b - a) / N; //Шаг сетки
    for (i = 0; i < N; i++)
    {
        result += function(a + h * (i + 0.5)); //Вычисляем в средней точке и добавляем в сумму
    }
    result *= h;
    return result; //Возвращаем результат вычислений
}
 
double integralpr() //Метод средних прямоугольников
{
    double integral;
    int a1,b1;
    int n;
    printf("Введите а\n");
    scanf("%d",&a1);
    printf("Введите b\n");
    scanf("%d",&b1);
    printf("Введите n\n");
    scanf("%d",&n);
    integral = calcintegral(a1, b1, n); //Вызываем функцию решения интеграла, а затем присваеваем полученный результат в переменную
    printf("Значение интеграла: %f \n", integral);
    return 0;
}
 
double integraltrap() //Метод трапеции
{
    double h, x1, x2, S;
    int n1,a2,b2;
    printf("Введите а\n");
    scanf("%d",&a2);
    printf("Введите b\n");
    scanf("%d",&b2);
    printf("Введите n\n");
    scanf("%d",&n1);
    S = 0;
    h = (b2 - a2) / n1; //Находим высоту трапеции
    x2 = a2;
    for (int i = 1; i <= n1; i++)
    {
        x1 = a2 + i*h;
        S = S + (function(x1) + function(x2))*h / 2;
        x2 = x1;
    }
    printf("Значение интеграла: %lf \n", S);
    return 0;
}
 
void integral() //Интеграл
{
    setlocale(LC_ALL, "RUS");
    int t = 1;
    while (t > 0)
    {
        int chis;
        printf("Выберите, по какому методу вычислять интеграл e^x+e^(-x) ;. \nЕсли хотите выйти в меню, напишите 0. \n");
        printf("1. Методом трапеции. \n");
        printf("2. Методом прямоугольников. \n");
        scanf_s("%d", &chis);
        system("cls");
        switch (chis)
        {
        case 0: t = 0; break;
        case 1:
            integraltrap();
            printf("\nНажмите любую клавишу, чтобы вернуться в меню.");
            _getch();
            system("cls");
            break;
        case 2:
            integralpr();
            printf("\nНажмите любую клавишу, чтобы вернуться в меню.");
            _getch();
            system("cls");
            break;
        default:
            system("cls");
            break;
        }
        system("cls");
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2016, 10:22
Ответы с готовыми решениями:

Программа неправильно высчитывает угол
Создать программу, которая будет запрашивать у пользователя длины сторон треугольника. После этого...

Неправильно считает интеграл
написал два метода Симпсона и Монте-Карло, но 2-ой не правильно считает, помогите пожалуйстаю...

Почему неправильно считает матрицу?
#include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include&quot;stdio.h&quot; #define N 3 #define A printf(&quot;can't...

Строка: Почему else неправильно работает?
Почему else неправильно работает? Выдаёт закарючку X=strlen(x)-1; Y=strlen(y)-1; k...

0
23.12.2016, 10:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2016, 10:22
Помогаю со студенческими работами здесь

Почему так выделять память под структуру неправильно?
Допустим, надо выделить память под структуру, не пользуясь именем структуры. Я давно уже делаю так,...

Почему записывает неправильно значение хотя показывает правильное
int newstrcpy(char *s, char *t, int n) { int i = sizeof s; // почему здесь записывает 8...

Треугольник задан координатами своих вершин. Составить программу вычисления его площади. Почему-то считает неправильно
Задачу нужно решить с помощью функций.Почему-то все время вместо площади выбивает 0. #include...

Почему неправильно считает определенный интеграл?
Считаю интеграл (файлик .nb Mathematica 8 пригалаю) методом средних прямоугольников. 2 вопроса:...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru