Asosiy tarkibga o'tish

4.13-bo'lim: Nyuton usuli

Ushbu bobda biz ko'rib chiqadigan keyingi dastur ko'plab sohalarda qo'llaniladigan muhim dasturdir. Agar siz ushbu bobni shu nuqtaga qadar kuzatib borgan bo'lsangiz, biz ko'rib chiqqan ko'plab ilovalar sizni ishlashga majbur qilish uchun biz tomonidan yaratilgan degan taassurot paydo bo'lishi mumkin. Bu juda achinarli, chunki biz hozirgacha ko'rib chiqqan barcha ilovalar haqiqiy vaziyatlarda qo'llaniladigan haqiqiy ilovalardir. Muammo shundaki, ko'pincha ilovalarning mazmunli misollarini ishlab chiqish uchun biz odatda muammo ortidagi fan va/yoki fizika haqida ko'proq bilimga muhtojmiz. Bunday ma'lumotga ega bo'lmasak, biz ko'pincha ko'rinmaydigan juda sodda misollarni keltiramiz juda real va bu biz ko'rib chiqayotgan dastur haqiqiy dastur ekanligini tushunishni qiyinlashtiradi.

Bu bo'limda bu o'zgaradi. Bu biz hammamiz tushuna oladigan dastur bo'lib, har birimiz tushuna olamiz, hatto biz haqiqiy ilova ortidagi fizika/fanni tushunmasak ham, vaqti-vaqti bilan bajarilishi kerak.

Ushbu bo'limda biz tenglamalar yechimlarini yaqinlashtirish usulini ko'rib chiqamiz. Biz hammamiz bilamizki, tenglamalar vaqti-vaqti bilan echilishi kerak va aslida biz bu nuqtaga qadar bir nechta tenglamalarni hal qildik. Biz shu nuqtaga qadar ko'rib chiqqan barcha misollarda biz aslida echimlarni topa oldik, lekin buni aniq bajarish va/yoki ishni qo'lda bajarish har doim ham mumkin emas. Aynan shu dastur o'ynaydi. Shunday qilib, keling, ushbu ilova nima haqida ekanligini ko'rib chiqaylik.

Faraz qilaylik, biz \(f\left( x \right) = 0\) ning yechimini yaqinlashtirmoqchimiz va biz qandaydir tarzda bu yechimning dastlabki yaqinlashuvini topdik, deylik, \({x_0}\). Bu dastlabki yaqinlashuv unchalik yaxshi emas, aslida bu biz qilgan tezkor taxmindan boshqa narsa bo'lmasligi mumkin va shuning uchun biz yaxshiroq taxmin qilishni xohlaymiz. Buni qilish yetarlicha oson. Birinchidan, biz \(f\left( x \right)\) at \({x_0}\) ga teginish chizig'ini olamiz.

\[y = f\left( {{x_0}} \right) + f'\left( {{x_0}} \right)\left( {x - {x_0}} \right)\]

Endi quyidagi grafikni ko'rib chiqing.

This is a graph of an unknown function that looks like the right side of an upwards opening parabola whose vertex is on the negative portion of the y-axis.   Also shown on the graph is a red dot where the graph crosses the x-axis (i.e. yechim we are after).  Some distance to the right of the red dot is a point labeled $x_{0}$ and above this point is the tangent line to the graph at this point.  The point where this tangent line intersects the x-axis is labeled $x_{1} and is closer to the red dot that $x_{0}.  Above $x_{1} is the tangent line to the graph at this point.  The point where this second tangent line intersects the x-axis is labeled $x_{2} and is closer to the red dot that $x_{1}.

Moviy chiziq (agar siz buni baribir rangda o'qiyotgan bo'lsangiz ...) \({x_0}\)-dagi tangens chiziqdir. Bu chiziq \(x\) o'qini \({x_0}\) ga qaraganda tenglamaning haqiqiy yechimiga yaqinroq kesib o'tishini ko'rishimiz mumkin. Keling, \({x_0}\) dagi tangens \(x\) o'qini \({x_1}\) kesib o'tgan nuqtani chaqiraylik va biz bu nuqtadan yechimga yangi yaqinlashish sifatida foydalanamiz.

Xo'sh, bu nuqtani qanday topamiz? Biz bu koordinatalarni bilamiz, \(\left( {{x_1},0} \right)\) va biz u tangens chiziqda ekanligini bilamiz, shuning uchun bu nuqtani tangens chiziqqa ulang va \({x_1}\) ni quyidagicha hal qiling:

\[\begin{align*}0 & = f\left( {{x_0}} \right) + f'\left( {{x_0}} \right)\left( {{x_1} - {x_0}} \right)\\ {x_1} - {x_0} & = - \frac{{f\left( {{x_0}} \right)}}{{f'\left( {{x_0}} \right)}}\\ {x_1} & = {x_0} - \frac{{f\left( {{x_0}} \right)}}{{f'\left( {{x_0}} \right)}}\end{align*}\]

Shunday qilib, lotin asl yaqinlashuvda nolga teng bo'lmasa, biz yangi taxminiylikni topishimiz mumkin.

Endi biz yanada yaxshi taxminiylikni topish uchun butun jarayonni takrorlaymiz. Biz \(f\left( x \right)\) at \({x_1}\) ga tangens chizig'ini hosil qilamiz va uning ildizidan foydalanamiz, biz uni \({x_2}\) deb nomlaymiz, haqiqiy yechimga yangi yaqinlashish sifatida. Agar shunday qilsak, quyidagi formulaga erishamiz.

\[{x_2} = {x_1} - \frac{{f\left( {{x_1}} \right)}}{{f'\left( {{x_1}} \right)}}\]

Bu nuqta yuqoridagi grafikda ham ko'rsatilgan va biz ushbu grafikdan ko'rishimiz mumkinki, agar biz ushbu jarayonni kuzatishda davom etsak, haqiqiy yechimga juda yaqinlashib kelayotgan raqamlar ketma-ketligini olamiz. Bu jarayon Nyuton usuli deb ataladi.

Mana umumiy Nyuton usuli

Nyuton usuli

Agar \({x_n}\) \(f\left( x \right) = 0\) yechimining taxminiy ko‘rinishi bo‘lsa va \(f'\left( {{x_n}} \right) \ne 0\) bo‘lsa, keyingi yaqinlik quyidagicha berilgan:

\[{x_{n + 1}} = {x_n} - \frac{{f\left( {{x_n}} \right)}}{{f'\left( {{x_n}} \right)}}\]

Bu biz qachon to'xtashimiz kerak degan savolga olib kelishi kerak. Biz bu jarayonni necha marta boshdan kechiramiz? Jarayondagi eng keng tarqalgan to'xtash nuqtalaridan biri bu ketma-ket ikkita yaqinlashish ma'lum miqdordagi o'nli kasrlarga mos kelguncha davom etishdir.

Har qanday misollar bilan ishlashdan oldin ikkita muammoni hal qilishimiz kerak. Birinchidan, Nyuton usuli qo'llanilishi uchun biz haqiqatan ham \(f\left( x \right) = 0\) ni hal qilishimiz kerak. Bu unchalik katta muammo emas, lekin usulni ishlatishdan oldin tenglama shu shaklda ekanligiga ishonch hosil qilishimiz kerak.

Ikkinchidan, biz qandaydir tarzda yechimning dastlabki yaqinlashuviga ega bo'lishimiz kerak (i.e. bizga \({x_0}\) qandaydir tarzda kerak). \({x_0}\)-ni qo'llashning eng keng tarqalgan usullaridan biri bu funktsiyaning grafigini chizish va undan yechimning taxminiy qiymatini olish uchun foydalanish, keyin biz \({x_0}\) sifatida foydalanamiz. Yana bir keng tarqalgan usul, agar biz oraliqda funktsiyaning yechimi borligini bilsak, biz intervalning o'rta nuqtasini \({x_0}\) sifatida ishlatishimiz mumkin.

Keling, Nyuton usuliga misol keltiraylik.

1-misol \(\left[ {0,2} \right]\) oralig'ida joylashgan \(\cos x = x\) yechimiga yaqinlikni aniqlash uchun Nyuton usulidan foydalaning. Oltita kasrgacha bo'lgan taqribiylikni toping.
Yechim

Bizga dastlabki taxminlar berilmaganiga e'tibor bering. Biroq, bizga qarash uchun vaqt berildi. Biz bundan dastlabki taxminimizni olish uchun foydalanamiz. Yuqorida ta'kidlab o'tilganidek, bu holatlarda umumiy qoida oraliqning o'rta nuqtasi sifatida dastlabki yaqinlashishni qabul qilishdir. Shunday qilib, biz dastlabki taxmin sifatida \({x_0} = 1\) dan foydalanamiz.

Keyin, eslaylikki, biz kerak \(f\left( x \right) = 0\) shaklida funksiyaga ega bo'ling. Shuning uchun birinchi navbatda tenglamani quyidagicha yozamiz:

\[\cos x - x = 0\]

Endi biz Nyuton usulining umumiy formulasini yozishimiz mumkin. Buni qilish odatda ishni biroz soddalashtiradi, shuning uchun buni qilish yomon fikr emas.

\[{x_{n + 1}} = {x_n} - \frac{{\cos x_{n} - x_{n}}}{{ - \sin x_{n} - 1}}\]

Keling, birinchi taxminiy xulosaga kelamiz.

\[{x_1} = 1 - \frac{{\cos \left( 1 \right) - 1}}{{ - \sin \left( 1 \right) - 1}} = 0.7503638679\]

Shu o'rinda shuni ta'kidlashimiz kerakki, "olti kasr" iborasi faqat \({x_1}\) ni oltita kasrga olib, keyin to'xtashni anglatmaydi. Buning o'rniga, ikkita ketma-ket yaqinlashish oltita kasrga to'g'ri kelguncha davom etishimizni anglatadi.

Ushbu to'xtash shartini hisobga olsak, biz kamida bir qadam oldinga borishimiz kerak.

\[{x_2} = 0.7503638679 - \frac{{\cos \left( 0.7503638679 \right) - 0.7503638679}}{{ - \sin \left( {0.7503638679} \right) - 1}} = 0.7391128909\]

To'g'ri, biz taraqqiyotga erishmoqdamiz. Biz 1 kasrga yaqinlashdik. Hisoblash tafsilotlarini sizga qoldirib, boshqasini qilaylik.

\[{x_3} = 0.7390851334\]

Biz uni uchta kasrga oldik. Bizga boshqasi kerak bo'ladi.

\[{x_4} = 0.7390851332\]

Va endi bizda 9 kasrga mos keladigan ikkita taxminiy ma'lumotlar bor va shuning uchun biz to'xtashimiz mumkin. Biz yechim taxminan \({x_4} = 0.7390851332\) deb taxmin qilamiz.

Ushbu so'nggi misolda biz Nyuton usuli bizga kerakli aniqlik oralig'ida taxminiy ma'lumot berishi uchun juda ko'p hisob-kitoblarni bajarishimiz shart emasligini ko'rdik. Bu har doim ham shunday bo'lmaydi. Ba'zan kerakli aniqlikka erishish uchun jarayon davomida ko'p takrorlash kerak bo'ladi va ba'zida u butunlay muvaffaqiyatsiz bo'lishi mumkin.

Quyidagi misol biroz ahmoqona, ammo bu usulning muvaffaqiyatsizligi haqida fikr yuritadi.

2-misol \(\sqrt[3]{x} = 0\) yechimiga yaqinlikni topish uchun \({x_0} = 1\) dan foydalaning.
Yechim

Ha, bu ahmoqona misol. Shubhasiz, yechim \(x = 0\), lekin u juda muhim fikrni bildiradi. Nyuton usulining umumiy formulasini olaylik.

\[{x_{n + 1}} = x_{n} - \frac{{{x_n}^{\frac{1}{3}}}}{{\frac{1}{3}{x_n}^{ - \frac{2}{3}}}} = {x_n} - 3{x_n} = - 2{x_n}\]

Aslida, biz bu erda hech qanday hisob-kitob qilishimiz shart emas. Bu hisob-kitoblar har bir iteratsiya bilan \(x = 0\) yechimidan tobora uzoqlashib boradi. Bu fikrni aniqlash uchun bir nechta hisob-kitoblar.

\[\begin{align*}{x_1} & = - 2\\ {x_2} & = 4\\ {x_3} & = - 8\\ {x_4} & = 16\\ & etc. \end{align*}\]

Shunday qilib, bu holda usul muvaffaqiyatsizlikka uchraydi va ajoyib tarzda muvaffaqiyatsizlikka uchraydi.

Demak, Nyuton usuli bilan biroz ehtiyot bo'lishimiz kerak. Odatda tez tenglamaga yaqinlik topadi. Biroq, bu juda ko'p mehnat talab qiladigan yoki umuman ishlamaydigan holatlar mavjud.