Algorotim va matematik modellashtirish kafedrasi


Download 116.91 Kb.
bet5/5
Sana17.06.2023
Hajmi116.91 Kb.
#1522893
1   2   3   4   5
f'(x)=1-cosx; f''(x) = sin x>0.
[0,982; 1,178] kesmada f(1,178) . f''(x) > 0, ya`ni boshlangich yaqinlashishda x0 =1,178. Hisoblashni (2.13)-(2.15) formulalar vositasida bajaramiz. Hisoblash natijalari quyidagi 1-jadvalda berilgan.
1-jadval

n

xn

- sin xn

f(xn)=xn-sinxn-0,25

f¢(xn)=1-sosxn



0

1,178

- 0,92384

0,00416

0,61723

- 0,0065

1

1,1715

- 0,92133

0,00017

0,61123

- 0,0002

2

1,1713

- 0,92127

0,00003

0,61110

- 0,0005

3

1,17125














Jadvaldan kurinadiki, x3-x2 = |1,17125 – 1,1713| = 0,00005 < e . Demak echim deb x = 1,17125 ni (e =0,0001 aniqlikda) olish mumkin.
5-8 – rasmlarga dikkat bilan e`tibor kilsak shuni ko`ramizki, f(x)=0 tenglamaning taqribiy echimlarini vatarlar va urinmalar usuli bilan topganda aniq echimga ikki chekkadan yaqinlashib kelinadi. Shuning uchun ikkala usulni bir vaktning o`zida qo`llash natijasida maqsadga tezrok erishish mumkin. Bu usulni kombinatsiyalangan usul deb ataydilar. Kombinatsiyalangan usul yuqorida keltirilgan usullarning umumlashmasi bo`lgani tufayli bu to`g’rida ko`p to’xtalmadim.
Nyuton-Rafson usuli - bu berilgan funktsiyaning ildizlarini yaqinlashtirish uchun ishlatiladigan usul. Bu usul boshqa yaqinlashish nuqtasidan boshlab qayta-qayta takrorlash orqali ildiz yaqinlashuviga erishadi.

Quyida Nyuton-Rafson usuli yordamida funksiyaning ildizlarini topish uchun C++ dasturi keltirilgan. Bu misolda - 2x - 5 funksiyaning ildizlari topiladi.


#include
#include
using namespace std;
double f(double x) { // f(x) = x^3 - 2x - 5
return pow(x, 3) - 2*x - 5;
}
double f_prime(double x) { // f'(x) = 3x^2 - 2
return 3*pow(x, 2) - 2;
}
double newton_raphson(double x0) {
double tolerance = 0.0001;
double x1 = x0 - f(x0) / f_prime(x0);
while (abs(x1 - x0) > tolerance) {
x0 = x1;
x1 = x0 - f(x0) / f_prime(x0);
}
return x1;
}
int main() {
double x0;
cout << " Dastlabki taxminni kiriting:";
cin >> x0;
double root = newton_raphson(x0);
cout << "The root is: " << root << endl;
return 0;
}

9 – Rasm
Bu kodda f() va f_prime() funksiyalari aniqlanadi. newton_raphson() funksiyasi x0 ning dastlabki bahosini oladi va bu funksiya yordamida funktsiyaning ildiziga yaqinlashadi. Main() funksiyada foydalanuvchidan dastlabki baho x0 olinadi va ildiz newton_raphson() funksiyasi yordamida hisoblanadi.
Siz xohlagan funktsiyani belgilash orqali ushbu kodni sinab ko'rishingiz mumkin. Siz f_prime() funksiyasining ta'rifini o'zgartirish orqali boshqa funksiya uchun ildizlarni topishingiz mumkin.

Xulosa :


Vatarlar va Nyuton usuli ikkalasi ham algebraik va transsendental tenglamalarning ildizlarini taxmin qilish uchun ishlatiladigan iterativ usullardir. Ikkala usul ham ma'lum holatlarda samarali bo'lishi mumkin bo'lsa-da, ikkita usul o'rtasida ba'zi bir farqlar mavjud bo'lib, ular muayyan vaziyatlarda birini boshqasidan samaraliroq qiladi.
Vatarlar usuli - bu tenglamaning ildiziga yaqinlashish uchun chiziqli interpolyatsiyadan foydalanishni o'z ichiga olgan ildizni topish usulining bir turi. Usul ildizning har ikki tomonida ikkita nuqta topishni va ildizning o'rnini baholash uchun chiziqli interpolyatsiyani qo'llashni o'z ichiga oladi. Vatarlar usuli tenglama yaxshi tuzilgan va oddiy ildizga ega bo'lganda samarali bo'lishi mumkin va u ko'pincha boshqa usullar muvaffaqiyatsizlikka uchraganda qo'llaniladi.
Boshqa tomondan, Nyuton usuli ildizni aniqlashning umumiy usuli bo'lib, ildizga yaqinlashish uchun funktsiyaning hosilasidan foydalanishni o'z ichiga oladi. Usul ildiz uchun dastlabki taxmindan boshlashni va keyin ildiz topilmaguncha hisobni takroriy aniqlashtirish uchun hosiladan foydalanishni o'z ichiga oladi. Nyuton usuli funktsiya silliq va yaxshi xosil qilingan hosilaga ega bo'lganda juda samarali bo'lishi mumkin va u ko'pincha tenglama bir nechta ildizga ega bo'lganda qo'llaniladi.
Umuman olganda, Nyuton usuli Vatarlar usulidan ko'ra ko'p muammolar uchun samaraliroqdir, chunki u tezroq yaqinlashadi va mustahkamroqdir. Nyuton usuli odatda kvadratik tarzda yaqinlashadi, ya'ni har bir iteratsiyada to'g'ri raqamlar soni taxminan ikki barobar ortadi. Boshqa tomondan, Vatarlar usuli odatda chiziqli ravishda yaqinlashadi, ya'ni har bir iteratsiyada to'g'ri raqamlar soni faqat doimiy omilga ko'payadi. Bundan tashqari, Nyuton usuli funktsiya bir nechta ildizga ega bo'lgan yoki dastlabki taxmin ildizdan uzoqda bo'lgan hollarda yanada barqaror va aniqroq bo'lishi mumkin.
Biroq, Vatarlar usuli Nyuton usulidan samaraliroq bo'lishi mumkin bo'lgan ba'zi holatlar mavjud. Masalan, Vatarlar usuli tartibsiz xatti-harakatlarga ega bo'lgan, masalan, tebranishlar yoki uzilishlar kabi funktsiyalar uchun foydali bo'lishi mumkin, bu erda Nyuton usuli noto'g'ri ildizga yaqinlasha olmaydi. Bundan tashqari, Vatarlar usuli ba'zi hollarda hisoblashda samaraliroq bo'lishi mumkin, chunki u funktsiyaning hosilasini hisoblashni talab qilmaydi.
Umuman olganda, qaysi usulni qo'llashni tanlash aniq muammoga va yaqinlashib kelayotgan funksiyaning xususiyatlariga bog'liq. Ko'pincha ma'lum bir usulga qaror qilishdan oldin ikkala usulni sinab ko'rish va ularning samaradorligini solishtirish yaxshi fikrdir.

Download 116.91 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling