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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2011, 21:58   #1
sabaton
Пользователь
 
Регистрация: 14.03.2010
Сообщений: 25
Вопрос Метод Симпсона С++

Доброго времени суток! Не работает программка. Нужно вычислить интеграл методом Симпсона с заданным шагом h разбиений интервала a, b

Вот что имеем:
Когда ввожу шаг h=0.1, при a=0, b=1 программа показывает, что интеграл равен 0.. Но это неверно..
Код:
 
#include <math.h>
#include <iostream>
#include <conio.h>

 
using namespace std;
 
//Подынтегральная функция
double func(double x)
{
    double r;
    r = 1.5*x/2+cos(2*x);
    return r;
}
double simpson( double (*Fx)(double), double a, double b, int h);
 

int main(int argc, char* argv[])
{
   double I;
   double a,b;
   int h;
 
   cout << "\n Введите парамерты:\n" << endl;
   cout << "\t-> Enter a = ";
   cin >> a;
 
   cout << "\t-> Enter b = ";
   cin >> b;
 
   cout << "\t-> Enter h = ";
   cin >> h;
 
   // вычесление
 
   I = simpson( &func, a, b, h );
 
   // вывод результата
   cout << endl << "      I = " << I;
   getch();
}
 
//---------------------------------------------------------------------------
// сам метод
double simpson( double (*Fx)(double), double a, double b, int h)
{
 
   
   
 
   double I, I2 = 0, I4 = 0;
   I4 = Fx(a+h);
   for(int k = 2; k <=b  ; k += 2 )   // Думаю ошибка в этом b , но не знаю что нужно на самом деле
   {
       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;
}
Подскажите, буду благодарен)

Последний раз редактировалось sabaton; 02.04.2011 в 22:02.
sabaton вне форума Ответить с цитированием
Старый 02.04.2011, 23:49   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Когда ввожу шаг h=0.1
Цитата:
Код:
int h
Поменяй тип у h -)
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 03.04.2011, 01:08   #3
sabaton
Пользователь
 
Регистрация: 14.03.2010
Сообщений: 25
По умолчанию

блин...вот это тормоз))) сцука..
Спасибо) а то целый день уже сижу и не знаю, что делать))

Последний раз редактировалось sabaton; 03.04.2011 в 01:29.
sabaton вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Численное интегрирование(метод Симпсона) (=Hello=) Помощь студентам 1 18.03.2011 23:05
Turbo Pascal[програмыки : текстовая\метод симпсона\метод половинного деления qsccsq Помощь студентам 7 24.12.2010 05:23
Метод Симпсона(си) towelie Помощь студентам 0 23.12.2010 19:36
метод симпсона 13xXx13 Помощь студентам 1 16.12.2010 09:57
Метод Симпсона, прямоугольников и трапеций. Buble07 Помощь студентам 2 15.11.2008 11:03