Bu yerda quyidagi teoremani keltiramiz:
6.1-Teorema. Agar f(x) funktsiyasining kesmada yetarlicha (masalan, Simpson formulasi uchun to‘rtinchi) tartibli chegaralangan hosilasi mavjud bo‘lsa, taqribiy integrallash formulalari xatoliklarining bahosi uchun quyidagilar o‘rinlidir:
a) To‘g’ri to‘rtburchaklar formulasi uchun
b) Trapetsiya formulasi uchun
c) Simpson formulasi uchun
Laboratoriya topshiriqlari va
ish davomida ishlab chiqiladigan dasturning to‘liq namunasi.
Laboratoriya topshirig‘i. Berilgan masalani yechish uchun algoritm va mos dasturni ishlab chiqing. Algoritmni blok-sxema shaklida ifodalang va zarur bo‘lsa algoritmik dekompozitsiyani amalga oshiring. Zarur hollarda qism masalalarni yechish uchun qism dasturlardan foydalaning.
Dastur namunasi. Biz quyida namuna sifatida transensent tenglamalarni taqribiy yechish bilan bog‘liq masalani qaraymiz. Masalani taqribiy usullaridan bo’lgan to’g’ri to’rtburchaklar, trapetsiyalar va Simpson usullari yordamida yechish algoritmini (psevdokod shaklida) ishlab chiqamiz va uni C++ tilidagi dasturga o‘tkazamiz.
Labotoriya topshirig‘i sharti. Quyidagi
aniq integralni:
1) to‘g’ri to‘rtburchak formulasi bilan;
2) trapetsiyalar formulasi bilan;
3) Simpson formulasi bilan
bo‘linishlar soni 10 bo‘lganda hisoblang va xatoliklarni baholang
Masalani yechish algoritmi (To’g’ri to’rtburchaklar usuli). Integral chegaralari [a,b] oraliqni bo‘luvchi qadami
h=(b-a)/n=(3.5-2)/10=0.15
bo‘lganda, bo‘linish nuqtalari xi=a+ih, i=1,…,10 o‘lsa, nuqtalarni [2,3.5] oraliqda aniqlab, bu nuqtalarda integral ostidagi funktsiya qiymatlarini topamiz.
Yuqoridagi x va y qiymatlariga ko‘ra
O‘ng to‘g’ri to‘rtburchaklar formulasiga asosan:
=0.15(0.3338+0.3350+0.3371+0.3402+0.3443+0.3494+ +0.3558+0.3637+0.3733+0.3849)=0.5276;
To‘g’ri to‘rtburchaklar formulasi xatoligini bahosi:
Aniq integralni to'gri to'rtburchak usulida xisoblash dasturi :
C++ dagi kodi
#include
using namespace std;
int a, n, i;
float z, EPS, h, s, x, b;
float funk(float y)
{
return (1/(sqrt(5+4*y-y*y)));
}
int main()
{
cout << "Aniq integralni to'gri to'rtburchak usulida xisoblash dasturi : \n";
n=10, a=2, b=3.5, EPS=0.1;
ga: h=(b-a)/n;
s=0;
for(int i=1; i<=n; ++i)
{
x=a+h*i; s=s+funk(x);
}
s*=h;
if (n!=10) goto gc;
gb: n=n+10;
z=s; goto ga;
gc: if (abs(s-z)>EPS) goto gb;
n=n-10; h=(b-a)/n;
for (int i=0; i{
x=a+h*i;
cout<< "x= " << x << " f("<}
cout<<"integralning qiymati : s="<< s ;
return 0;
}
Yuqoridagi x va y qiymatlariga ko‘ra
Simpson formulasiga asosan:
[0.3333+0.3849+4(0.3338+0.3371+0.3443+0.3558+ +0.3733)+2(0.3350+0.3402+0.3494+0.3637)]=0.05(0.7182+4*1.7493+ +2*1.3883)=0.05*10.4720=0.5236.
Simpson formulasi xatoligining bahosi:
Aniq integralni Simpson usulida yechishning C++ dagi kodi:
#include
using namespace std;
int a, n, i;
float z, EPS, h, s, x, b, c;
float funk(float y)
{
return (1/(sqrt(5+4*y-y*y)));
}
int main()
{
cout << "Aniq integralni simpson usulida xisoblash dasturi : \n";
n=10, a=2, b=3.5, EPS=0.1;
ga: h=(b-a)/n;
s = (funk(a)+funk(b));
c = 1, x = a;
for(int i=1; i<=n; ++i)
{
x=a+h; s=s+(c+3)*funk(x);
c -= c;
}
s*=h/3;
if (n!=10) goto gc;
gb: n=n+10;
z=s; goto ga;
gc: if (abs(s-z)>EPS) goto gb;
n=n-10; h=(b-a)/n;
for (int i=0; i{
x=a+h*i;
cout<}
cout<<"integralning qiymati : s="<< s ;
return 0;
}
Do'stlaringiz bilan baham: |