С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
kamikazy
0 / 0 / 2
Регистрация: 18.11.2013
Сообщений: 67
1

Составить программу приближенного вычисления площади фигуры, ограниченной заданными линиями

08.11.2016, 12:11. Просмотров 764. Ответов 2
Метки нет (Все метки)

Использовать метод прямоугольников. Для построения прямоугольника использовать правый конец отрезка.
y=−2x2+3x+6, y=x+2.

Добавлено через 13 часов 28 минут
Я написал код, но выдает неправильный ответ. Помогите найти ошибку, пожалуйста.
При a=1, b=4, n=5 у меня выдает 22,56.
Решение в Экселе выдает 56,16.

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
//Третья лабораторная работа.//
/* Использовать метод прямоугольников. Для построения прямоугольника использовать правый конец отрезка.
y=-2x^2+3x+6, y=x+2.*/
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <cmath>
#include <math.h>
 
using std::cout;
using std::cin;
using std::endl;
 
double f1(double x) {
    return -2 *pow(x, 2) + 3 * x + 6; 
}
 
double f2(double x) {
    return x + 2;
}
 
double integrate(double a, double b, double n) {
    double h, S = 0, S1 = 0, S2 = 0, x;
    int i;
    h = (b - a) / n;
    for (i = 1; i <= n; i++)
    {
        x = a + i*h;
        S1 += f1(x);
        S2 += f2(x);
    }
    S = h*(S2 - S1);
    return S;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    double y, n, a, b;
    cout << "Использовать метод прямоугольников. Для построения прямоугольника использовать правый конец отрезка" << endl;
    cout << "y = -2x ^ 2 + 3x + 6, y = x + 2." << endl;
    cout << "\nВведите интервал a = ";
    cin >> a;
    cout << "Введите интервал b = ";
    cin >> b;
    cout << "Введите интервал разбиения: ";
    cin >> n;
 
    y = integrate(a, b, n);
        cout << "\nОтвет: S = " << y;
 
    _getch();
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2016, 12:11
Ответы с готовыми решениями:

Составить программу приближенного вычисления площади фигуры, ограниченной заданными линиями
Составить программу приближенного вычисления площади фигуры, ограниченной...

Составить программу приближенного вычисления площади фигуры, ограниченной заданными линиями
1)Составить программу приближенного вычисления площади фигуры, ограниченной...

Составить программу приближенного вычисления площади фигуры, ограниченной заданными линиями
1)Составить программу приближенного вычисления площади фигуры, ограниченной...

Составить программу приближенного вычисления площади фигуры
Составить программу приближенного вычисления площади фигуры, ограниченной...

Вычислить площадь фигуры ограниченной линиями
Ребят помогите плс!Задачка никак не получается((( Постановка задачи....

2
afront
1055 / 1001 / 753
Регистрация: 29.02.2016
Сообщений: 3,193
08.11.2016, 12:37 2
у вас одна ошибка, должно быть
C#
1
S = h*(S1 - S2);
а проверять лучше посчитав чему равны интегралы точно

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
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <cmath>
#include <math.h>
 
using std::cout;
using std::cin;
using std::endl;
 
double f1(double x) {
    return -2 *pow(x, 2) + 3 * x + 6; 
}
 
double f2(double x) {
    return x + 2;
}
  
double if1(double x) {
    return -2.0 / 3 * pow(x, 3) + 3.0/2 * pow(x, 2) + 6 * x; 
}
 
double if2(double x) {
    return 1.0 / 2 * pow(x, 2)  + 2 * x;
}
double integrate(double a, double b, double n) {
    double h, S = 0, S1 = 0, S2 = 0, x;
    int i;
    h = (b - a) / n;
    for (i = 1; i <= n; i++)
    {
        x = a + i*h;
        S1 += f1(x);
        S2 += f2(x);
    }
    S = h*(S1 - S2);
    return S;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    double y, n, a, b;
    cout << "Использовать метод прямоугольников. Для построения прямоугольника использовать правый конец отрезка" << endl;
    cout << "y = -2x ^ 2 + 3x + 6, y = x + 2." << endl;
    cout << "\nВведите интервал a = ";
    cin >> a;
    cout << "Введите интервал b = ";
    cin >> b;
    cout << "Введите интервал разбиения: ";
    cin >> n;
 
    y = integrate(a, b, n);
        cout << "\nОтвет: S = " << y;
 cout << "\nПодтверждение: S = " << if1(b) - if1(a) - if2(b) + if2(a);
    _getch();
    return 0;
}
0
kamikazy
0 / 0 / 2
Регистрация: 18.11.2013
Сообщений: 67
08.11.2016, 16:14  [ТС] 3
Моё уравнение было правильным.
у вас одна ошибка, должно быть
Мне помогли и заменили код цикла. Выдает 58.56, уже хорошо.
C++
1
2
3
4
5
6
7
    for (double i = a; i < b; i = i + h)
    {
        x = i + h;
        S1 += -2 * x*x + 3 * x - 6;
        S2 += x + 2;
    }
    S = h*(S2 - S1);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2016, 16:14

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

Вычислить площадь фигуры ограниченной заданными функциями
Доброго времени суток, программисты :) Прошу помощи переделать программу из...

Написать программу для вычисления площади фигуры, используя 3 модуля и 3 пользовательские функции
Была поставлена задача написать программу для вычисления площади фигуры,...


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

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

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