Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2012, 20:25   #1
Luzifer
 
Аватар для Luzifer
 
Регистрация: 14.09.2011
Сообщений: 5
По умолчанию Погрешность в интегрировании

На основе этого кода (4 метода вычисления интеграла по функции 3 *(sin(pow(x,2))) ) написать следующую прогу: Ввести с клавиатуры погрешность и найти максимальное разбиение n которое работает с этой погрешностью. (Дословное условие).

Код:
#include "iostream"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <Windows.h>
 
using namespace std;
 
double dS1();
double dS2();
double dS3();
double dS4();
 
inline double func(double);
 
double A = 0;
double B = 0;
double grad = 0;
 
int main(void)
{
    setlocale(LC_ALL,"Russian");
    cout << "Введите начало промежутка А: ";
    cin >> A;
    cout << "Введите конец промежутка  В: ";
    cin >> B;
    cout << "Введите кол-во разбиений: ";
    cin >> grad;
 
    grad = abs((A-B)/grad);
 
    cout << "метод левого треугольника = " << dS1() << endl;
    cout << "метод правого треугольника = " << dS2() << endl;
    cout << "метод среднего треугольника = " << dS3() << endl;
    cout << "метод трапеций = " << dS4() << endl;
    
    system("PAUSE");
    return 0;
}
 
double dS1()
{
    double S = 0;
    for(double i = A; i < B; i += grad)
    {
        S += grad * func(i);
    }
    return S;
}
double dS2()
{
    double S = 0;
    for(double i = A; i < B;i += grad)
    {
        S += grad * func(i + grad);
    }
    return S;
}
double dS3()
{
    double S = 0;
    for(double i = A; i < B; i += grad)
    {
        S += grad * func(i + grad / 2);
    }
    return S;
}
double dS4()
{
    double S = 0;
    for(double i = A; i < B; i += grad)
    {
        S += grad * ((func(i) + func(i + grad)) / 2);
    }
    return S;
}
double func(double x)
{
    return abs(3 *(sin(pow(x,2)))); 
}
Luzifer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Погрешность интегрирования XemyL Помощь студентам 0 21.03.2012 22:05
Относительная погрешность A.M.G_Dig Помощь студентам 4 20.11.2010 22:57
глюки при численном интегрировании (Delphi) Bazookин Помощь студентам 5 23.04.2009 13:12