Трапеция әдісі.
функциясын нүктелері арқылы тұрғызылған бір дәрежелі Лагранж көпмүшесімен алмастырсақ, онда (1.8) мұндағы (1.8) формуласын аралығында интегралдау арқылы (1.9) теңдігін аламыз. Осыдан . Бұл формула трапеция әдісі деп аталады,себебі 3-сурет сызықтарымен қоршалған қисық сызықты трапецияның ауданы трапециясының ауданымен алмастырылады (3сурет). (1.9) формуладан бұл әдістің жіберетін қатесі (2) екенін көреміз. Ал жоғарыдан бағаласақ , Енді интегралды былай есептесек: (2.1)
Онда (2.2) трапеция әдісінің жалпы формуласы шығады. Ал жіберілетін қате (2.3) Жоғарыдан бағаласақ , (2.4) . Сонымен, трапеция әдісінің кесіндісіндегі дәлдігі екенін көреміз.
#include <iostream.h> #include <math.h> double f(double x) { double s=x; return s; } void main() {double a,b,s,s1,J1,J2,x[100]; float h,h1,c,e; int n; cin >>a >>b >>n; s=0; s1=0; h=(b-a)/n; h1=(b-a)/(2*n); c=(f(b)-f(a))/2; for(double i=a+h; i<b; i+=h) { s+=f(i);} J1=(c+s)*h; cout<<"J1="<<J1<<endl; for(double j=a+h/2; j<b; j+=h/2) { s1+=f(j);} J2=(c+s1)*h/2; cout<<"J2="<<J2<<endl; e=fabs(J2-J1); cout<<"e=fabs(J2-J1)="<<e<<endl;}
1) a=1;b=5;n=10
2) a=1;b=5;n=100 3) a=1;b=5;n=1000
|