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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Rovecrew
1 / 1 / 0
Регистрация: 06.03.2014
Сообщений: 25
#1

Найти ошибку в программе. Интеграл по формуле Симпсона, - C++

11.05.2014, 20:59. Просмотров 389. Ответов 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
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
// Lab14Y.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include "math.h"
#include "conio.h"
#pragma warning(disable : 4996)
#define M_PI 3.1415926535897932384626433832795
 
using namespace std;
 
 
 
double f(double x)
{
    return sqrt(pow(x, 2) + 0.16) / x;
}
 
 
 
 
double c(double(*func)(double), double a = 1, double b = 2)
{
    double s = 0;
    for (double i = a; i<b; i += 0.01)
    {
 
        s += ((*func)(i)+(*func)(i + 0.01))*0.5*0.01;
    }
 
    return s;
}
 
 
 
double Simps(int n) // formula Simpsona
{
    double m;
    double x, x1, x2, h, sum = 0;
    m = n >> 1;
    h = (double)1 / n;
    for (int i = 1; i <= m; i++)
    {
        x = 2 * i*h;
        x1 = (2 * i + 1)*h;
        x2 = (2 * i + 2)*h;
        sum += (f(x) + 4 * f(x1) + f(x2));
    }
    return h*sum / 3;
}
 
 
 
void main()
{
    
    double a = 0;
    double b = M_PI/3;
    int g = 2.2;
    cout << c(f, a, b) << endl;
    cout << c(f, a) << endl;
    cout << c(f) << endl;
    cout << Simps(g) << endl;
 
    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2014, 20:59     Найти ошибку в программе. Интеграл по формуле Симпсона,
Посмотрите здесь:

посчитать интеграл...найти ошибку в программе - C++
Написал прогу, работает, но препод сказал что неправильно, в чём ошибка-то ? Собственно задание: написать программу, которая считает...

Не могу найти ошибку в программе, вычисляющей определенный интеграл по методу трапеций - C++
Написал программу для вычисления интеграла от x^(1/3) в пределах от -1 до 8. На выходе выдает нули и бесконечности:( Подскажите плиз в чем...

Найти интеграл методами правых прямоугольников и Симпсона - C++
Составить программу вычисления определенного интеграла методами правых прямоугольников и Симпсона с помощью вызова двух различных функций и...

Не могу найти ошибку в коде (Численное интегрирование методом Симпсона) - C++
Нужно предусмотреть обработку ситуации, когда заданная точность не может быть достигнута. Пытаюсь прервать выполнение расчётов при помощи...

Интегралы по формуле Симпсона и прямоугольников (С++) - C++
Вычислить приближенное значение интеграла по формулам прямоугольников и Симпсона для n = 120 (интеграл на фото) вот...

интеграл методом Симпсона - C++
нужно посчитать интеграл: ∫32(1/(x*lgx))dx кол-во разбиений - 36 шаг вычисления первообразной - 0,2 результат выдать с точностью ...

Интеграл методом Симпсона - C++
Вообщем на форуме есть такая програма, спасибо её автору: ouble Simpson(double (*Fx)(double)) { double I,x,h,a,b; ...

Вычисление функции по формуле Симпсона и Треугольника - C++
Вычислить функцию по формулам &quot;Треугольника&quot; и &quot;Симпсона&quot; функция во вложении. Программа: #include&lt;iomanip.h&gt; ...

Вычислить интеграл методом Симпсона - C++
Требуется написать программу, которая решает интеграл методом Сипмсона. Вот моя программа. Почему выводит неправильный ответ. Помогите,...

Интеграл в С++ Методом правых, средних и Симпсона - C++
Доброго времени суток. Надо написать программу, которая будет решать один интеграл 3 методами, можно все записать в 1 программе. С такого...

Вычислить интеграл методами прямоугольников и Симпсона - C++
Разработать алгоритм блок-схемы, чтобы обчислить численного интегрирования с использованием метода прямоугольника или Симпсона

Интеграл методом Симпсона и трапеции (Code::Blocks) - C++
подскажите что делать дальше и в чём ошибки? файл main.cpp: #include &lt;iostream&gt; #include &quot;integrall.h&quot; inline double ff(double...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rovecrew
1 / 1 / 0
Регистрация: 06.03.2014
Сообщений: 25
13.05.2014, 17:29  [ТС]     Найти ошибку в программе. Интеграл по формуле Симпсона, #2
написал. готово.
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
// Lab14Y.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <cmath>
#include <iostream>
#include <conio.h>
#pragma hdrstop
#define pi 3.1415926535897932384626433832795
 
using namespace std;
 
//Підінтегральна функція
double func(double x)
{
    double r = sin(x);
    
    return r;
}
 
 
double simpson(double(*Fx)(double), double a, double b, int n);
double newton(double(*Fx)(double), double a, double b);
 
int main(int argc, char* argv[])
{
    double I;
    double S;
    double a, b;
    int n;
 
    cout << "\n Input integral atributes:\n" << endl;
    a = 0;
    b = pi / 3;
 
    cout << "\t-> Enter n for Method Simpson = ";
    cin >> n;
 
    // вичислення інтеграла
 
    I = simpson(&func, a, b, n);
    S = newton(&func, a, b);
    // Вивід результату
    cout << endl << "Method Newton \n\n I= " << S;
    cout << endl << "\nMethod Simpson \n\n I= " << I;
    cin.get();
}
 
 
// Метод Сімпсона
double simpson(double(*Fx)(double), double a, double b, int n)
{
 
    double h;
    h = (b - a) / n;
 
    double I, I2 = 0, I4 = 0;
    I4 = Fx(a + h);
    for (int k = 2; k < n; k += 2)
    {
        I4 += Fx(a + (k + 1)*h);
        I2 += Fx(a + k*h);
    }
    I = Fx(a) + Fx(b) + 4 * I4 + 2 * I2;
    I *= h / 3;
 
    return I;
}
 
// Метод Ньютона Лейбніца
double newton(double(*Fx)(double), double a, double b)
{
    double s = 0;
    for (double i = a; i<b; i += 0.000001)
    {
 
        s += ((*Fx)(i)+(*Fx)(i + 0.000001))*0.5*0.000001;
    }
 
    return s;
}
Yandex
Объявления
13.05.2014, 17:29     Найти ошибку в программе. Интеграл по формуле Симпсона,
Ответ Создать тему
Опции темы

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