7- ЛАБОРАТОРИЯ ИШИ
Мавзу: Аниқ интеграл қийматини тақрибий ҳисоблаш усуллари.
Керакли техник воситалар:
Шахсий компьютер.
Керакли дастурий воситалар:
Турбо Паскаль дастурлаш системаси ва аниқ интеграллар қийматларини тақрибий ҳисоблаш учун тузилган дастурлар.
Ишнинг мақсади: Талабаларни аниқ интегралларни тўғри тўртбурчак, трапеция ва Симпсон усуллари ёрдамида тақрибий ҳисоблаш алгоритмлари билан таништириш ва унга Паскаль тилида тузилган дастурда ишлашга ўргатиш.
Топшириқ.
Қуйидаги аниқ интегралларни тўғри тўртбурчак, трапеция ва Симпсон усуллари ёрдамида ҳисобланг (n=10).
1. 2. 3.
4. 5. 6.
7. 8.
9. 10.
11. 12. 13. 14.
15.
Назарий қисм.
Масаланинг қўйилиши: [a,b] оралиқда аниқланган узлуксиз f(x) функция берилган бўлиб биздан қуйидаги
(1)
интегрални ҳисоблаш талаб қилинган бўлсин. Баъзи ҳолларда f(x) функциянинг берилишига қараб бу интегрални аниқ ҳисоблашимиз мумкин. Амалий ишларда f(x) функция шундай кўринишга эга бўладики, (1) интегрални аниқ ҳисоблаб бўлмайди. Бундай ҳолларда (1) интегрални берилган аниқликда тақрибий ҳисоблашга тўғри келади.
Қуйида аниқ интегрални ҳисоблаш учун бир неча тақрибий усуллар, уларнинг алгоритми ва унга мос Паскаль алгоритмик тилида тузилган программалари келтирилган.
Тўғри тўртбурчаклар усули. х0=а, хn=b, n – натурал сон бўлсин. Ушбу формулалар ёрдамида (1) интегрални тақрибий ҳисоблаш мумкин:
бу ерда xi=xi-1+h, yi=f(xi), i=1,2,…,n.
Тўғри тўртбурчак усули учун хатолик қуйидагича аниқланади:
|I-S|
Аниқ интегрални тўғри тўртбурчак усулида ҳисоблаш учун C++ тилида тузилган дастурнинг кўриниши:
#include
#include
#include
using namespace std;
double funksiya(double x){
return 1. / x / x; // bu yerga funksiya yoziladi
}
double turtburchak(double a, double b, double n){
double h, c, t;
h = (b - a) / n;
c = t = 0;
c = a - h / 2;
for(int i = 1; i <= n; i++)
c += h, t += funksiya(c);
t *= h;
return t;
}
main(){
double a, b, n;
cin >> a >> b >> n;
printf("%.5f", turtburchak(a, b, n));
}
Трапеция усули. [a;b] оралиқ xi=a+ih нуқталар билан (бу ерда i=1,2,…,n; х0=а, хn=b, n-натурал сон) n+1 та оралиққа ажратилади ва ҳар бир оралиқда эгри чизиқли трапеция юзи тақрибий равишда тўғри чизиқли трапеция юзига алмаштирилиб, қуйидаги тақрибий формулани ҳосил қиламиз
бу ерда I-(1) интегралнинг аниқ қиймати, S-(1) интегралнинг тақрибий қиймати, yi=f(xi)
Хатоликни баҳолаш: , M=max|f’’(z)| , z[a,b]
Аниқ интегрални трапеция усулида ҳисоблаш учун С++ тилида тузилган дастурнинг кўриниши:
#include
#include
#include
using namespace std;
double funksiya(double x){
return 1. / x / x; // funksiya ifodasi
}
main(){
double a, b, n;
cout << "A = "; cin >> a;
cout << "B = "; cin >> b;
cout << "N = "; cin >> n;
double h, s;
h = (b - a) / n;
s = (funksiya(a) + funksiya(b)) / 2;
for(int i = 1; i < n; i++) s += funksiya(a + i * h);
printf("%.5f", s * h);
}
Симпсон усули. х0=а, х2n=b , yi=f(хi), i=1,2,…,n. n- натурал сон бўлсин. Ушбу йиғинди ёрдамида (1) интегрални тақрибий ҳисоблаш мумкин:
Хатоликлар:
, M=max|fIV(z)|, z[a,b].
Мисол. интеграл қийматини [1;2] оралиқда n=4 да, трапеция формуласи билан ҳисобланг:
х0=1, х1= х2= х3= х4=2;
;
.
Аниқ интегрални Симпсон усулида ҳисоблаш учун С++ тилида тузилган дастурнинг кўриниши:
#include
#include
#include
using namespace std;
double funksiya(double x){
return 1. / x / x; // funksiya ifodasi
}
main(){
double a, b, n;
cout << "A = "; cin >> a;
cout << "B = "; cin >> b;
cout << "N = "; cin >> n;
double h, s, s1, s2;
h = (b - a) / (2 * n);
s1 = s2 = 0;
s = funksiya(a) + funksiya(b);
for(int i = 1; i <= n; ++i)
s1 += funksiya(a + (2 * i - 1) * h);
for(int i = 1; i <= n; i++)
s2 += funksiya(a + 2 * i * h);
printf("%.5f", h * (s + 4 * s1 + 2 * s2) / 3);
}
Do'stlaringiz bilan baham: |