Adams-Bashforth usullari
Runge-Kutta usullari singari, Adams-Bashforth usullari ham eritma egri chizig'ining xatti-harakatlarini baholashni xohlashadi, ammo hosila funktsiyasini keyingi eritma qiymatiga yaqin yangi nuqtalarda baholash o'rniga, hosilaga eski echim qiymatlarida qarashadi va interpolatsiya g'oyalaridan foydalanadilar. , hozirgi eritma va lotin bilan birga, yangi echimni taxmin qilish. Shu tarzda ular yordamchi nuqtalarda echimlarni hisoblab chiqmaydilar va keyin yordamchi qiymatlarni tashlaydilar. Jamg'arma samaradorlikni oshirishi mumkin.
Shu tarzda qaraydigan bo'lsak, Eyler usuli birinchi darajali Adams-Bashfort usuli bo'lib, u erda eski nuqtalardan foydalanilmaydi, shunchaki hozirgi eritma va lotin. Biz "AB2" deb nomlaydigan ikkinchi tartib usuli, oldingi nuqtadagi hosilani interpolatsiya aralashmasiga qo'shadi. Formulani shunday yozishimiz mumkin:
AB2 usuli oldingi ikkita nuqtada hosila qiymatlarini talab qiladi, ammo bizda faqat bittasi bor. Agar biz shunchaki Eyler pog'onasidan foydalansak, birinchi pog'onada nisbatan katta xatoga yo'l qo'ygan bo'lar edik, bu bizning natijalarimizni ifloslantiradi. O'rtacha boshlang'ich qiymatni olish uchun biz RK2 usulidan foydalanishimiz kerak, uning har bir qadamidagi xato AB2 usuli bilan bir xil bo'ladi.
Kodni ab2.m deb nomlangan faylga nusxalash yoki ab2.m-ni yuklab olish.
Bir daqiqa vaqt ajrating, ushbu kodni ko'rib chiqing va nima bo'layotganini tushunishingizni biling. To'g'ri joylarda quyidagi ikkita sharh satrlarini kodga kiriting: Izohlangan kodning nusxasini xulosangizga qo'shganingizga ishonch hosil qiling.
Vaqtinchalik o'zgaruvchan yprime bu erda kiritilgan, ammo Eyler, RK2 yoki RK3 usullarida kerak emas edi. Bu erda uning foydasi nimada? (Ikki jumladan oshmasligi kerak.)
Agar numSteps 100 bo'lsa, unda hosila funktsiyani aniq necha marta f deb ataymiz?
X = 0,0 dan x = 2,0 gacha bo'lgan eksponensial (expm_ode) uchun ODE ning sonli echimini hisoblash uchun ab2 dan foydalaning, qadam kattaliklari 0,2, 0,1, 0,05, 0,025, 0,0125 va 0,00625. Har bir holat uchun raqamli echimning qiymatini x = 2,0 ga, xato va xatolarning nisbatlarini yozing. Kodning to'g'ri ishlashini tekshirish uchun jadvalning birinchi satridan foydalanish mumkin.
Jadvaldagi nisbatlarga asoslanib, usulning aniqligi tartibini baholang, ya'ni xatolar bahosidagi ko'rsatkichni baholang. bu holda butun son hisoblanadi.
Adams-Bashforth usullari eski echim nuqtalaridan ma'lumotlarni siqib chiqarishga harakat qiladi. Yechimi silliq bo'lgan muammolar uchun ushbu usullar juda aniq va samarali bo'lishi mumkin. Hosilaviy funktsiyani necha marta baholaganimiz bilan samaradorlikni o'ylab ko'ring. NumSteps yangi yechim nuqtalarini hisoblash uchun, qanday tartibda bo'lishidan qat'i nazar, taxminan numSteps lotin qiymatlarini hisoblashimiz kerak (esda tutingki, usul hosil bo'lgan qiymatlarni eski nuqtalarda saqlaydi). Aksincha, uchinchi darajali Runge-Kutta usuli taxminan 3 * numSteps lotin qiymatlarini oladi. Runge Kutta usuli bilan taqqoslaganda, eski echim punktlari yangi echim nuqtasidan ancha uzoqroq, shuning uchun ma'lumotlar unchalik ishonchli emas va biroz "eskirgan". Shuning uchun Adams-Bashforth usullari ko'pincha qila olmaydi uning xatti-harakatini qisqa vaqt oralig'ida o'zgartiradigan yoki uning hosilasida to'xtovsizlikka ega bo'lgan eritma egri chizig'ini boshqaring. Ushbu samaradorlik va ishonchlilik o'rtasidagi o'zaro bog'liqlikni bilish juda muhimdir!
Do'stlaringiz bilan baham: |