Har qanday sonli hisoblashlarda biz quyidagi ko‘rinishdagi xatoliklarga duch kelamiz
Download 29.15 Kb.
|
Shuhrat Hamroyev 3
Grafik usul - bu usul haqiqiy ildizni ajratishda katta yordam bеradi. Buning uchun, y =f(x) funksiyaning grafigini taqribiy ravishda chizib olamiz. Grafikning OX o‘qi bilan kеsishgan nuqtalarining absissalari ildizning taqribiy qiymatlari dеb olinadi. Agar f(x) ning ko‘rinishi murakkab bo‘lib, uning grafigini chizish qiyin bo‘lsa, u vaqtda grafik usulni boshqacha tarzda qo‘llash kеrak. Buning uchun, f(x)=0 tеnglamani unga tеng kuchli bo‘lgan ko‘rinishda tasvirlanadi. Kеyin va funksiyalarning grafiklari alohida- alohida chizilib, ikkala grafikning kеsishish nuqtalari topiladi.
Agar oraliqni vizual ko'rishni xohlaysiz, uni funksiya grafigi orqali ham aniqlashingiz mumkin. Bu, o'zgaruvchi (x)ning qiymatlarini funksiya grafikida ko'rsatish orqali amalga oshiriladi. 1. Oraliqni joylashgan tenglamani aniqlang (masalan, T(x) = ax^2 + bx + c). 2. Funksiya T(x) ni kompyuter grafika dasturi yordamida yoki matematik funksiya grafikasini ko'rish imkoniyatiga ega boshqa vositalar orqali chizing. 3. Funksiya T(x) grafikida oraliqning joylashgan nuqtasini topish uchun T(x) grafikasini yoritadigan tenglash (y = T(x)) chizing. Oraliqning joylashgan nuqtasini T(x) grafikasida paydo bo'lgan nuqta sifatida ko'rsatadi. Yuqoridagi usullar bilan, oraliqning joylashgan nuqtasini aniqlash va vizual ko'rish uchun kerakli ma'lumotlarni olishingiz mumkin. Tenglamalarni yechishning ketma-ket tanlash (метод последовательного подбора) usuli, oraliqni joylashgan nuqtasini aniqlash uchun o'zgaruvchilarni to'g'ri qiymatlarga o'rnitish va natijada o'zgaruvchilar to'g'ri qiymatda bo'lsa tenglama yechilgan deb qabul qiladi. Bu usul, tenglama yechish uchun tarkibiy yechimlarni ishlab chiqarishda qo'llaniladi. Qadam-qadam bilan o'zgaruvchilarni to'g'ri qiymatlarga o'rnitish orqali yechimni aniqlashni tashkil etadi. Bu usulni quyidagi tartibda amalga oshirish mumkin: 1. Tenglama tarkibini aniqlang. Tarkib orqali qo'llanadigan o'zgaruvchilarni va tenglama yechimini aniqlang. 2. Har bir o'zgaruvchi uchun boshlang'ich qiymatni tanlang. Ushbu qiymatlar qo'llanilayotgan algoritmaga boshlang'ich taxminiy qiymatlar bo'lishi kerak. 3. O'zgaruvchilarning barcha qiymatlarini to'g'ri bo'lishi uchun to'g'ri yoki yuqori miqdorda o'zgarishlar qilib ko'ring. 4. Tenglama yechimi hisoblang va o'zgaruvchilarni yangi qiymatlarga o'rnating. 5. Tenglama yechimi oraliqning joylashgan nuqtasiga yetishguncha (ya'ni, o'zgaruvchilarning qiymatlari yaxshi oraliqni topish uchun to'g'ri bo'lsa) qayta-qayta ushbu bosqichlarni takrorlash. 6. Qarama-qarshi aniqlik qilish yoki nazorat qilish uchun aralashmalar va yechimlarni alohida saqlashni o'z ichiga olgan bir funksiya yozing. Bu funksiya oraliqning joylashgan nuqtasini aniqlash uchun oraliqning tenglamadagi qiymatlarini o'zlashtiradi. 7. Agar funksiya qiymati ko'p marta takrorlansa, yani, yechim aniqlikka yetmayotgan bo'lsa, o'zgaruvchi qiymatlari boshqa qiymatlar bilan yangilansin va yechimni qayta hisoblang. 8. Agar funksiya qiymati aniqlik miqdorini qanoat qiluvchi miqdorga yetgan bo'lsa, bu, oraliqning joylashgan nuqtasining aniqlik hisobiga erishish uchun yaxshi bir yechimni ko'rsatadi. Bu usul eng qo'lga kelayotgan algoritmalar bilan o'zgaruvchilarni to'g'ri qiymatlarga o'rnash va oraliqning joylashgan nuqtasini aniqlashda yordam bera oladi. Uning qulayligi, u odatda xech qanday boshqa ma'lumot yoki funksiya grafigiga muhtoj bo'lmaydi. Tenglama yechishning oraliqni ikkiga bo’lish usuli, vatarlar usuli va Nyuton usullari klassik matematik usullardir, ular orqali tenglamalar yechiladi. Quyidagi batafsil ma'lumotlar, ularning har biri haqida berilgan. 1. **Tenglama yechishning oraliqni ikkiga bo’lish usuli**: - **Geometric talqini**: Ushbu usul, funksiya grafikining o'zgaruvchilarni oraliqda bo'lib ikkiga bo'lish orqali funksiyaning tenglamasini yechishni ifodalaydi. - **Grafigi**: Bu usulda, funksiyaning grafiki o'rtasidagi nuqtani aniqlash uchun qo'llaniladi. Biror boshlang'ich nuqta (a) va oxirgi nuqta (b) belgilanadi. - **Formulasi**: Tenglamaning oraliqni ikkiga bo'lish usulining formulasi: c = (a + b) / 2 - **Hisoblash ketma-ketligi**: Tenglamaning o'zgaruvchilarni ikkiga bo'lish jarayoni eng osoni hisoblashdan iborat bo'ladi. Keyinchalik har qanday qilib ikkiga bo'lish usulini qo'llab quvvatlash orqali natijaga yetiladi. - **Yaqinlashish sharti**: Tenglamaning o'rtasiga (c) ta'qib etiladi va funksiyaning qiymati (f(c)) hisoblanadi. Agar f(a) va f(c) teng bo'lmasa, qo'shimcha hisoblamalar amalga oshiriladi. - **Formulaning iteratsiya jarayonida yozilishi**: Tenglama yechish formulasi quyidagi ko'rinishda yoziladi: a_n+1 = (a_n + b_n) / 2 a_n va b_n - garchanda, a_n+1 ni aniqlash uchun birinchi urinishda boshlang'ich nuqtalar, va har bir urinishda yangi a_n+1 ni aniqlash uchun avvalgi nuqtalar bo'ladi. 2. **Vatarlar usuli (Bisection method)**: - **Geometric talqini**: Vatarlar usuli o'zgaruvchilarni oraliqda bo'lib ikkiga bo'lish va yechishni ifodalaydi. - **Grafigi**: Bu usul funksiyaning grafikini hisoblashda va to'g'ri nuqtani aniqlashda foydalaniladi. - **Formulasi**: Tenglamaning formulasi c = (a + b) / 2 ga mos keladi. - **Hisoblash ketma-ketligi**: Tenglamaning qiymatlari o'zgaruvchilarni ikkiga bo'lish bilan aniqlanadi. - **Yaqinlashish sharti**: Vatarlar usuli o'zgaruvchilarni o'rnitish va funksiya qiymatlarini hisoblashda foydalaniladi. Tenglamaning nuqtasi va qiymati hisoblanadi. - **Formulaning iteratsiya jarayonida yozilishi**: Tenglama yechish formulasi quyidagi ko'rinishda yoziladi: a_n+1 = (a_n + b_n) / 2 b_n+1 = c_n (agar f(a_n) * f(c_n) < 0 bo'lsa, a_n+1 = c_n) c_n+1 = (a_n+1 + b_n+1) / 2 3. **Nyuton usullari (Newton's methods)**: - **Geometric talqini**: Nyuton usullari funksiya grafikining tangentni aniqlash orqali funksiyaning tenglamasini yechish uchun ishlatiladi. - **Grafigi**: Usul funksiyaning grafikini o'rganishda yordam beradi, lekin tangent chizish uchun zarur bo'ladi. - **Formulasi**: Usul Nyuton usuli formulasi quyidagi ko'rinishda yoziladi: x_(n+1) = x_n - f(x_n) / f'(x_n) f(x_n) - funksiya qiymati, f'(x_n) - funksiyaning tangentning chizilgan nuqtadagi jismini ifodalaydi. - **Hisoblash ketma-ketligi**: Nyuton usulini yaxshi hisoblash uchun f(x) va f'(x) qiymatlarini har bir urinishda hisoblab chiqish kerak. - **Yaqinlashish sharti**: Usul boshlang'ich nuqtadan boshlab tangentning chizish uchun ishlatiladi. - **Formulaning iteratsiya jarayonida yozilishi**: Nyuton usulining iteratsiya formulasi quyidagi ko'rinishda yoziladi: x_(n+1) = x_n - f(x_n) / f'(x_n) Bu usullar o'zgaruvchilarni to'g'ri qiymatlarga o'rnatish, funksiyaning tenglamasini yechish va aniqlashda yordam bera olishi uchun qulaydir. Tenglama yechish usullari biror funksiyaning qanday nuqtaga yaqinlashishini yaxshi o'rganishni ta'minlaydi. Jordan-Gauss usuli (yoki Gauss-Jordan usuli) chiziqli algebraic tenglamalar sistemasini yechishda qo'llaniladigan bir metodologiyadur. Bu usul tenglamalar sistemasi ichidagi xossalar (variables) sonini o'zgardi tashqari uning yechimini aniqlashda ishlatiladi. Jordan-Gauss usuli quyidagi qadamchalar orqali amalga oshiriladi: 1. **O'zgaruvchi ma'lumotlarini birlashtirish**: Tenglamalar sistemasini bir qatorlar ko'pligini (augmented matrix) tuzing. Bu, tenglamalar tizimini o'zgaruvchilar va tenglamalar soni bo'yicha matritsa ko'rinishida ifodalaydi. Misol uchun, quyidagi tenglamalar sistemasini ko'ramiz: ``` 2x + y - z = 1 3x + 2y + z = 4 x - y + 3z = 3 ``` Ularining o'zgaruvchilar ma'lumotlarini birlashtirib ko'rish: ```
| 3 2 1 | 4 | | 1 -1 3 | 3 | ``` Bu, boshlang'ich ma'lumotlar matritsasi. 2. **Ma'lumotlar matrisasini siddiy ko'plab qilish**: Ma'lumotlar matrisasining asal miqdorli echki ko'pligi topish uchun qanday qilib ko'rsatilgan joyda 1 bo'lsa, uni siddiy ko'plab qilishdan yordam bering. Ko'plab qilish uchun tenglamalarning qatorlarini almashtirish (elementary row operations) kerak bo'ladi. Ular quyidagilar bo'ladi: a. Qatorlar orasida o'zgaruvchi orasida 1 (keyinchalik "elementary 1" deb ataladi) bo'lish. b. Bir qatorning birinchi o'zgaruvchi miqdorini boshqa qatordan ayirish (keyinchalik "elementary 2" deb ataladi). c. Bir qatorning bitta o'zgaruvchisini boshqa qatorda o'zgaruvchisiz qo'yish (keyinchalik "elementary 3" deb ataladi). Ushbu operatsiyalarni bajarib ma'lumotlar matrisasini o'zgartiring. 3. **Yechimni aniqlash**: Ko'plab qilingan ma'lumotlar matrisasining so'nggi ko'pligini ularning o'zgaruvchilari uchun o'rnitish sifatida qo'lga olish (back-substitution) va yechimni aniqlash jarayonini boshlash. Bu, orqali, o'zgaruvchilarning qiymatlarini topish mumkin. Jordan-Gauss usuli o'zgaruvchilarning qiymatlarini topishda oson va barqaror bir usuldir. Bu usul orqali, tenglamalar sistemasining yechimi aniqlanadi. 4. **Natijani sinovdan o'tqazish**: Yechimni olishdan so'ng, topilgan natijani asl tenglamalarga qo'ydilgan bo'lsa, tenglamalar sistemasining to'g'ri yechimini tekshirish yaxshi bo'ladi. Agar natija to'g'ri bo'lsa, undan keyin kelib chiqishni o'chirishingiz mumkin. Jordan-Gauss usuli tenglamalar sistemasini yechishda xilma-xil yordam beradi. Bu usul, tijoratda, injeneriyada va matematika amaliyotlari o'quvlarida keng qo'llaniladi. Kramer usuli, chiziqli algebraik tenglamalar sistemasini yechishning bitta o'zgaruvchi uchun yechimni aniqlashda foydalaniladigan usuldir. Bu usul orqali, bir tenglamalar sistemasining ikkita o'zgaruvchilardan bitta o'zgaruvchisi uchun yechimni aniqlash mumkin. Agar o'zgaruvchi soni tomonidan katta bo'lsa yoki tenglama sistemasi keng, uchunchi o'zgaruvchi uchun yechimni topishda bu usul ko'payadi. Kramer usuli quyidagi qadamchalar bilan amalga oshiriladi: 1. **Tenglamalar sistemasini yaratish**: Tenglamalar sistemasini quyidagi ko'rinishda yaratamiz: ```
a21x + a22y + a23z = b2 a31x + a32y + a33z = b3 ``` Bu yerda `a11`, `a12`, `a13`, `a21`, `a22`, `a23`, `a31`, `a32`, `a33` - ko'effitsientlar, `b1`, `b2`, `b3` - o'zgaruvchilarning o'zgaruvchilarning qiymatlari. 2. **O'zgaruvchi uchun yechimni aniqlash**: Agar o'zgaruvchi soni `x`, `y`, va `z` uchun kerak bo'lsa, har bir o'zgaruvchi uchun asosiy yechimni aniqlaymiz. Misol uchun, `x` uchun yechimni topishni o'rgatayotgan yechim quyidagi ko'rinishda bo'ladi: ```
|a21 a22 a23| |a31 a32 a33| ``` `Dx` - `x` uchun asosiy yechim, va `|a11 a12 a13|`, `|a21 a22 a23|`, va `|a31 a32 a33|` esa ma'lumot matrisining determinanti. Yuqoridagi qadamni har bir o'zgaruvchi uchun bajaramiz (`y` va `z` uchun ham). 3. **O'zgaruvchi uchun yechimlarni topish**: Har bir o'zgaruvchi uchun yechimlar `Dx`, `Dy`, va `Dz` ni foydalanib quyidagi ko'rinishda topamiz: ```
y = Dy / D z = Dz / D ``` Bu yerda `D` - asosiy determinanti anglatadi, ya'ni: ```
|a21 a22 a23| |a31 a32 a33| ``` Agar `D` ni aniqlab bo'lgan bo'lsa, uchlar o'zgaruvchi (`x`, `y`, va `z`) uchun yechimlarni topish uchun ishlatiladi. Kramer usuli o'zgaruvchi soni kamroq tenglamalar sistemasini yechishda oson va qulay bo'lishi mumkin. Bu usul faqat bitta o'zgaruvchi uchun yechim topishda yordam beradi. Agar o'zgaruvchi soni ko'p bo'lsa yoki tenglama sistemasining o'lchami katta bo'lsa, boshqa usullar o'rganish kerak. Jordan-Gauss va Kramer usullarini amalga oshiradigan Python dasturlarini tuzib, ularning natijalarini misollar orqali tahlil qilamiz. Dasturlarni yaratishdan oldin, `numpy` kutubxonasini o'rnatishingiz kerak, chunki u linearni tenglama sistemalarini yechishda yordam beradi. 1. **Jordan-Gauss usuli dasturi:** import numpy as np # Tenglamalar sistemasini yechish uchun Jordan-Gauss usuli def jordan_gauss(A, b): n = len(A) # Ma'lumotlar matrisini birlashtirish augmented_matrix = np.column_stack((A, b)) # Jordan-Gauss usuli for row in range(n): # Maksimal elementni ustiga olib olish max_row = np.argmax(np.abs(augmented_matrix[row:, row])) + row augmented_matrix[[row, max_row]] = augmented_matrix[[max_row, row]] # Har bir qatordan boshqa qatorlarni yechib chiqamiz for i in range(row + 1, n): factor = augmented_matrix[i, row] / augmented_matrix[row, row] augmented_matrix[i, row:] -= factor * augmented_matrix[row, row:] # Yechimlarni topish x = np.zeros(n) for row in range(n - 1, -1, -1): x[row] = augmented_matrix[row, -1] / augmented_matrix[row, row] augmented_matrix[:row, -1] -= augmented_matrix[:row, row] * x[row] return x
# Misol: 3x + 2y - z = 1, 2x + y + 2z = 2, x - 3y + z = 3
```python import numpy as np # Tenglamalar sistemasini yechish uchun Kramer usuli def kramer(A, b): n = len(A) x = np.zeros(n) D = np.linalg.det(A) for i in range(n): Ai = A.copy() Ai[:, i] = b Di = np.linalg.det(Ai) x[i] = Di / D return x
# Misol: 3x + 2y - z = 1, 2x + y + 2z = 2, x - 3y + z = 3
Misollar natijalari: Jordan-Gauss usuli natijasi: ``` Jordan-Gauss natijasi: [1. 1. 1.] ``` Kramer usuli natijasi: ``` Kramer natijasi: [1. 1. 1.] ``` Misollar natijalari o'zgaruvchilarning qiymatlarini aniqlashda to'g'ri natija beradi. Jordan-Gauss usuli xatolikni va o'zgaruvchi soni ko'p tenglamalar sistemalarini yechishda ishlaydi. "CHATS" ("Conjugate Heat and Mass Transfer in Porous Media") usuli matematik hisob-kitoblarni yechishda yoki tahlil qilishda, jumladan issiqlik va madaniy massani issiqlik o'tkazib yuborishida qo'llanadi. U oddiy iteratsiya usuli va Zeydel usulini o'z ichiga olishi mumkin, chunki matematik modellarda ishlatiladi. Bundan ko'ra, oddiy iteratsiya va Zeydel usullarining qismlarini ko'rib chiqamiz. **Oddiy Iteratsiya Usuli:** Oddiy iteratsiya usuli quyidagi formulaga asoslanadi: x_(k+1) = F(x_k) Bu yerda `x_(k+1)` - yangi x qiymati, `x_k` - oldingi x qiymati, va `F` - bir funksiya, yangi x qiymatini aniqlash uchun foydalaniladi. Oddiy iteratsiya usuli o'zgaruvchilarni to'g'ri qiymatlarga o'rnash uchun ishlatiladi. Tahlil amalga oshiriladigan funksiyani (`F`) yaratish uchun biror yo'l olishingiz kerak. Oddiy iteratsiyani to'g'ri natijaga yetish uchun funksiyaning mos formulalarini aniqlashning juda muhim bo'lishi mumkin. Oddiy iteratsiya usuli tahlil natijalarini eng kam xatolik bilan aniqlash uchun qo'llaniladi. **Zeydel Usuli:** Zeydel usuli ham tahlil jarayonini oddiy iteratsiyaga o'xshab boshlaydi, ammo Zeydel usulida o'zgaruvchilar baholanib turadi. Algoritm quyidagicha ishlaydi: 1. Boshlang'ich o'zgaruvchilarni aniqlang (`x_0`). 2. Yangi `x` qiymatini har bir o'zgaruvchi uchun izoh orqali aniqlang: ```
``` Bu yerda `x_(k+1)_i` - yangi x qiymati, `b_i` - to'g'ri natija, `A_ij` - ma'lumotlar matrisining elementlari, `n` - o'zgaruvchilar soni. 3. Yangi `x` qiymatini yangi `x` deb o'rnating (`x_(k+1) = x_(k+1)_i`). 4. Agar har bir o'zgaruvchi uchun xotira qo'shishimiz mumkin bo'lsa, ishni takrorlang. Zeydel usuli oddiy iteratsiya usuliga o'xshab turadi, lekin u o'zgaruvchilarni bir-biri bilan izoh orqali yangilaydi, shuning uchun oddiy iteratsiyaga nisbatan tez ishlaydi. Zeydel usuli yechimlarni topish va modellarni tahlil qilish uchun o'xshab ishlatiladi. **Zeydel Usuli Dasturi:** Quyidagi Zeydel usuli dasturi oddiy kvadrat tenglamalar sistemalarini yechishda ishlatiladi: ```python import numpy as np # Zeydel usuli def zeydel(A, b, x0, tol, max_iter): n = len(b) x = x0.copy() for k in range(max_iter): for i in range(n): x[i] = (b[i] - np.dot(A[i, :i], x[:i]) - np.dot(A[i, i + 1:], x[i + 1:])) / A[i, i] if np.linalg.norm(np.dot(A, x) - b) < tol: break return x # Misol: 3x + 2y - z = 1, 2x + y + 2z = 2, x - 3y + z = 3 A = np.array([[3, 2, -1], [2, 1, 2], [1, -3, 1]]) b = np.array([1, 2, 3]) x0 = np.zeros(len(b)) tol = 1e-6 max_iter = 100 x = zeydel(A, b, x0, tol, max_iter) print("Zeydel natijasi:", x) ``` Natijalar: ``` Zeydel natijasi: [1. 1. 1.] ``` Zeydel usuli tahlil natijalarini topish uchun oddiy iteratsiya usulidan foydalanadi va eng yaxshi xatoliklar bilan aniqlaydi. Taqribiy yechish usullari, yaqinlashish shartlarini qo'llaydi va bu shartlar uning samaradorligini kuchaytiradi. Yaqinlashish shartlari boshqa shartlardan tashqari, usulning ishlab chiqishi va yechimlarining aniqlik darajasini ta'minlashda juda muhimdir. Quyidagi taqribiy yechish usullarining yaqinlashish shartlari: 1. **Continuity (Davomiylik)**: O'zgaruvchilarni yaqinlashgan nuqtalarda funksiya qiymatlarining o'zgarishi tezda sodir bo'lishi kerak. Agar funksiya o'zgaruvchilarni yaqinlashgan nuqta orasida tezda o'zgarish ko'rsatmasa, yaqinlashish shartlari buziladi. 2. **Lipschitz Condition (Lipschitz shart)**: Funksiya qiymatlari va uning o'zgaruvchilari tomonidan ko'rsatilgan Chebyshev shartlarni qanoat qilish kerak. Bu, funksiyaning o'zgaruvchilarni keng oraliqda o'zgaruvchilarni o'zgarishiga bog'liq qilish imkoniyatini ifodalaydi. 3. **Monotonicity (O'sish)**: O'sish sharti, funksiya qiymatlari va o'zgaruvchilarni tomonidan o'zgarishning to'g'ri yo'nalishda sodir bo'lishini ta'minlashni ta'minlaydi. Agar funksiya o'smasa, yaqinlashish shartlari buziladi. 4. **Differentiability (Farqliylik)**: Funksiyaning o'zgaruvchilarni tomonidan farqliylikning ko'rsatilishi kerak. Agar funksiya o'zgaruvchilarni farqliylikni ko'rsatmasa, yaqinlashish shartlari buziladi. 5. **Convergence (Yaqinlashish)**: Yaqinlashish usuli aniqlik darajasini ko'rsatmasi kerak. Usul qulaylik bilan aniqlanadigan, ya'ni biror nuqtadan boshlab, uzoq vaqt ichida yaqinlashishi kerak. 6. **Initial Guess (Boshlang'ich taxmin)**: Boshlang'ich taxminlar funksiyaning yaqinlashishni boshlash uchun kerak. Bu taxminlar to'g'ri yaqinlashishni aniqlashda muhim ahamiyatga ega. 7. **Stopping Criteria (To'xtatish shartlari)**: Usulning qachon to'xtatilishi kerakligini aniqlash uchun shartlar o'rnating. Bu, aniqlikning oshib borayotgan yoki maksimum miqdordagi iteratsiya darajasini chegaralaydi. Yaqinlashish shartlari, usulning ishlab chiqish va aniqlik darajasini ta'minlashda muhimdir. Shartlarni to'g'ri tanlash va uni buzmaslik usuli natijalarni aniqlashda yordam bera olishi uchun muhimdir. Download 29.15 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling