Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Пример выполнения задания. Написать и отладить программу вычисления значения интеграла от функции f(x) = 4x - 7sinx на интервале [-2



Написать и отладить программу вычисления значения интеграла от функции f (x) = 4 x - 7sin x на интервале [-2, 3] методом Симпсона с выбором: по заданному количеству разбиений n и заданной точности e. Панель диалога будет иметь вид, представленный на рис. 8.4.

Как и в предыдущих примерах, приведем только тексты функций-обработчиков соответствующих кнопок:

...

typedef double (*type_f)(double);

double fun(double);

double Simps(type_f, double, double, int);

//--------------------- Текст функции-обработчика кнопки РАСЧЕТ --------------------

double a, b, x, eps, h, Int1, Int2, pogr;

int n, n1;

a = StrToFloat(Edit1->Text); b = StrToFloat(Edit2->Text);

eps = StrToFloat(Edit3->Text); n = StrToInt(Edit4->Text);

h = (b - a)/100; // Шаг вывода исходной функции

Chart1->Series[0]->Clear();

for(x = a-h; x< b+h; x+=h)

Chart1->Series[0]->AddXY(x,fun(x));

switch(RadioGroup2->ItemIndex) {

case 0:

Memo1->Lines->Add("Расчет по разбиению на n = " + IntToStr(n));

Int1 = Simps(fun,a,b,n);

break;

case 1:

n1=2;

Memo1->Lines->Add("Расчет по точности eps");

Int1 = Simps(fun,a,b,n1);

do {

n1*=2;

Int2 = Simps(fun,a,b,n1);

pogr = fabs(Int2-Int1);

Int1 = Int2;

} while(pogr > eps);

Memo1->Lines->Add("При n = " +IntToStr(n1));

break;

}

Memo1->Lines->Add("Значение интеграла = " + FloatToStrF(Int1,ffFixed,8,6));

//------------------------------- Метод Симпсона -----------------------------------------------

double Simps(type_f f, double a, double b, int n) {

double s=0,h,x;

h=(b-a)/n;

x=a;

for(int i=1; i<=n; i++) {

s+=f(x)+4*f(x+h/2)+f(x+h);

x+=h;

}

return s*h/6;

}

//------------------------------ Подынтегральная функция f (x) ------------------------------

double fun(double x) {

return 4*x - 7*sin(x); // На интервале [-2, 3] значение 5,983

}

Рис. 8.4





Дата публикования: 2015-02-22; Прочитано: 365 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...