3.2 Laboratoriya mashg’uloti
Mavzu: Tenglamalarni yechishda vatarlar va Nyuton usullari. Yaqinlashish tezligi.
Ishdan maqsad: Algebraik tenglamalarni taqribiy yechish usullaridan foydalanib dastur tuzish.
Kerakli jihozlar: doska, kompyuter, Dev C++ muhiti, proyektor
Oraliqni teng ikkiga bo’lish usuli uzoq vaqt ishlasa, oddiy interatsiya usulida esa tenglamaning ko’rinishini o’zgartirishga to’g’ri keladi. Bunday kamchiliklardan urinmalar usuli holidir. Bu usul kutilgan natijani agar boshlang’ich qiymat to’g’ri tanlansa, juda tez aniqlab beradi. Eng asosiysi x0 boshlang’ich qiymatni to’g’ri tanlashda. Yechim yotgan (a,b) oraliq bor deb hisoblanib, qiymati kiritiladi. a va b nuqtalardan vatar o’tkazamiz.Vatarga mos to’g’ri chiziq tenglamasidan vatarning x o’q bilan kesishish nuqtasi c ni ifodasini topamiz.
Quyidagi shartlardan foydalanib, boshlang’ich qiymat sifatida a yoki b ni tanlab olish mumkin.
f(a)f(c) <0 bo’lsa, x0=a, f(a)f(c)>0 bo’lsa, x0=b deb olamiz.
Boshlang’ich qiymat aniqlangandan keyin shu nuqtadan urinma o’tkaziladi. Urinmalar yordamida ketma-ket yaqinlashishlarni amalga oshiramiz. Uning ishchi algoritmi biror nuqtadan o’tuvchi urinmalar tenglamasi orqali aniqlanadi:
x n = x n-1 - , n= 1, 2, … (4)
Hisoblashlar esa toki |x n – x n-1 | < E (E yetarli kichik musbat son) shart bajarilguncha davom ettiriladi. Bu yerdagi x0 - boshlang’ich qiymat.
1-masala. -10*x-2=0 tenglamani Urinmalar usuli bilan yechish algoritmi va dasturini tuzing
Urinmalar usuli algoritmining
Dastur kodi
#include
#include
using namespace std;
float fnf(float x){
return exp(x)-10*x-2;
}
float fna(float x){
return exp(x)-10;
}
float fnb(float x){
return exp(x);
}
int main(){
float a,b,h,eps,x1,x2,x; int i;
cout<<"Ildiz yotgan kesma [a,b]"<
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
cout<<"h="; cin>>h;
i=1;eps=0.001; x1=a;
L1: x2=x1+h;
x=x1; a=x2;
if(x2>b) goto L4;
if(fnf(x1)*fnf(x2)>0) goto L3;
if(fnf(x1)*fnb(x1)>0) goto L2;
x=x2; a=x1;
L2: x=x-fnf(x)*(a-x)/(fnf(a)-fnf(x));
if (fabs(fnf(x))>eps) goto L2;
cout.precision(4);
cout<natijalari va ularning tahlili
Ishlab chiqilgan algoritmlarning va yaratilgan dasturlarning xatosi yo’qligini tekshirish uchun dastur yordamida yechimi oldindan ma’lum bo’lgan test misolini yechib ko’riladi.
Masalan: x3+x-1=0 tenglamani 0.001 aniqlikda yeching. Yechim yotgan oraliq sifatida [0; 1] ni olish mumkin. Boshlang’ich qiymat x-ni esa shu oraliqdagi birorta songa tenglash mumkin.
Quyida har bir usul bo’yicha olingan natijalar ko’rsatilgan:
oraliqni teng ikkita bo’lish usuli bo’yicha x=0,682189 yechim aniqligi 0,0004
oddiy ketma-ketlik usuli bo’yicha x=0,68299156 yechim aniqligi 0,0006
urinmalar usuli bo’yicha x=0,682327804 yechim aniqligi 0,0000002
Olingan natijalarni tahlil qiladigan bo’lsak, urinmalar usulida yechimning aniqligi yuqori ekanligini ko’rish mumkin.
Umuman olganda barcha usullarda ishlab chiqilgan algoritm va yaratilgan dasturlar to’g’riligini topilgan yechimlar ko’rsatib turibdi.
Mustaqil yechish uchun topshiriqlar
Quyidagi transsendent tenglamani oraliqni teng ikkiga bo’lish va iteratsiya usuli yordamida yechimini aniqlovchi dastur tuzing:
1. 2x3-2x-1=0
2. x3-x7=0
3. 2x3-2x2+3x+1=0
4. 2x3-x-5=0
5. x3-3x2+2x-4=0
6. x3+2x2+5x+2=0
7. 2x3+2x-4=0
8. x3-2x2+7x-1=0
9. 2x3+3x+4=0
10. x3-3x2+6x+2=0
11. x3-2x+2=0
12. x3-3x2+2x-4=0
13. x3+x-8=0
14. x3-3x2+5x+1=0
15. x3-x+2=0
16. 3x+cosx+1=0
17. sin(x/2)+1=x2
18. 2x-cosx=0
19. 3-2x=lnx
20. x(x+1)2=2
21. 4x-ex=0
22. 3x-2lnx=4
23. x2=3sinx
24.
25. 2x-lgx=3
26. lnx+x+1=0
27. x2+4sinx=0
28. lnx+2 =0
29. x+cosx-1=0
30. 0>
Do'stlaringiz bilan baham: |