Мавзу: Иккинчи тартибли оддий дифференциал тенгламаларни ечишнинг тақрибий усуллари учун дастур таъминотини яратиш
Чекли айирмалар усулининг ишчи алгоритми ва дастурий таъминоти
Download 81.49 Kb.
|
6-topshiriq chegaraviy masalalar
2. Чекли айирмалар усулининг ишчи алгоритми ва дастурий таъминоти
Демак, бизга қуйидаги (1) иккинчи тартибли, Ўзгарувчан коэффициентли оддий дифференциал тенгламанинг оралиқнинг четки нуқталарида қўйилган (2) чегаравий шартларни қаноатлантирувчи сонли-тақрибий ечимини топиш лозим бЎлсин. Бу ерда p(x), q(x), f(x) лар [a, b] оралиқда узлуксиз функциялар синфига киради. m0,m1,m2,g0,g1,g2- Ўзгармаслар, яъни чегаравий шарт белгилари. Ю=оридаги масалани сонли-тақрибий усул ҳисобланмиш чекли айирмалар усули билан ечиш учун ечим қидириладиган [a,b] оралиқда қуйидаги тЎрни киритамиз, яъни оралиқни координаталари xiah формула билан аниқланувчи тугун нуқталар билан бЎлакларга бЎламиз, бу ерда , n-тугун нуқталар сони. xi нуқталар учун ю=оридаги (1) тенглама Ўринли бЎлгани учун, уни шу нуқталарда ёзиб оламиз: қулайлик учун, бу тенгламани қуйидаги кЎринишда ёзиб оламиз: (3) Мавжуд (2) дифференциал тенгламадаги yi’, yi’’ ҳосилалар Ўрнига ҳосил қилинган чекли аймрмали формулаларни қўямиз ва (3) дифференциал тенглама Ўрнига ҳосилалар қатнашмаган ва yi номаълумлардан иборат тенгламаларни ҳосил қиламиз. Амалда қуйидаги чекли-айирмали формулалардан кенг фойдаланилади: 1.Ўнг чекли-айирмали формула: , хатолик даражаси 0(h) 2. Чап чекли айирмали-формула: , хатолик даражаси 0(h) 3. Марказий чекли-айирмали формула: , хатолик даражаси 0(h2) Ҳосил қилинган чекли-айирмали формулаларни (3) дифференциал тенгламага қўямиз: . Ҳосил бЎлган тенгламани ҳар иккала томонини h2га кЎпайтирамиз ва мос ҳадларни группалаймиз: бЎлади. қуйидагича белгилашлар киритиш натижасида: (4) қуйидаги тенгламалар системасини ҳосил қиламиз: (5) Ҳосил бЎлган система y0,y1,..,yn лардан иборат (n1)та номаълумли, (n-1) та тенгламадан иборат уч диагоналли чизиқли тенгламалар системасидан иборат. Маълумки, тенгламалар системасининг ягона ечимини аниқлаш учун тенгламалар ва номаълумлар сони тенг бЎлиши керак. Шунинг учун иккита тенгламани чегаравий шарт ҳисобига тЎлдириб оламиз. Ҳосил қилинган тенгламаларни (5) тенгламалар системасига “улаймиз” ва натижада (n1)та номаълумли, (n1)та тенгламадан иборат y0,y1,..,yn номаълумларга нисбатан ёзилган қуйидаги чизиқли алгебраик тенгламалар системасига эга бЎламиз: ( ) (6) Шунинг учун, бундай махсус системаларни ечишнинг махсус усуллари ишлаб чиқилган. Бу усулларнинг энг соддаси, дастурлашга қулайи, хатолар йи\илмасини ҳосил қилмайдигани “ҳайдаш” усули ҳисобланади. қуйида “Ҳайдаш” усулининг қисқача моҳияти билан танишиб чиқамиз. Махсус, диагоналли системаларни ечишга мЎлжалланган “Ҳайдаш” усули икки босқичдан иборат: номаълум коэффицентларни аниқлаш (тЎҒри) босқичи системанинг ечимларини аниқлаш (тескари) босқичи 1-босқичда (6) системанинг номаълум ечимини қуйидаги кЎринишда қидирамиз: (7) бу ерда: ; лар номаълум ҳайдаш коэффициентлари. , 2-босқичда ; номаълум коэффицентларнинг барча қийматлари топилгач (7) реккурент формула ёрдамида қидирилаётган ечим yi ларни топиш мумкин, бу ерда ҳам реккурент формуланинг ишлаши учун дастлабки қиймат сифатида yn ни аниқлаш лозим. қидирилаётган yn ҳисоблангач, реккурент формуласи ёрдамида (yi) барча =олган ечимлар топилади. Бу жараён i га нисбатан тескари тартибда бЎлгани учун, уни ҳайдашнинг тескари босқичи деб атаймиз. Демак, олдимизга қўйилган масалани, яъни берилган масалани Ўзгарувчан коэффицентли, иккинчи тартибли, оддий дифференциал тенгламани чекли айирмали формулалар ёрдамида сонли-тақрибий усулда ечиш учун ишчи алгоритм ҳосил қилдик. қуйидаги аниқ чегаравий масалани кЎрайлик: yII-2yIx3y12x2-8x3x7 дифференциал тенгламани y(0)0, y(1)1 чегаравий шартларни қаноатлантирувчи ечимини топиш керак. Бу ерда ишчи алгоритм учун керак бЎладиган бошланғич маълумотлар сифатида: p(x)-2, q(x)x3, f(x)12x2-8x3x7; m01; m10; m20; g01; g10; g21 қийматларни киритамиз. Усулга мос алгоритм блок-схемаси қуйидагича кЎринишда бЎлади: B Алгоритмнинг дастур матни : # chekli_a; def p(x): y = ... return y def q(x): y = ... return y def f(x): y = ... return y n = int(input(“Massiv elementlar sonini kiriting: “)) for i in range(n): m0, m1, m2, g0, g1, g2, a, b = map(float, input("m0, m1, m2, g0, g1, g2, n, a, b = ").split()) h = (b-a)/n A = []
C = [0] * n al = [0] * 10000 be = [0] * 10000 x = [0] * 10000 y = [0] * 10000 A[0] = h*m0-m1 B[0] = m1 A[n] = h*g0+g1 C[0] = h*m2 B[n] = -g C[n] = h*g2 al[0] = -B[0]*A[0] be[0] = C[0]/A[0] for i in range(1, n): x[i] = a+i*h A[i] = 1+(h/2)*p[i] B[i] = 2-h**2*q[i] C[i] = 1-(h/2)*p[i] D[i] = h**2 * f[i] al[i+1] = A[i]/(B[i]-C[i]*al[i]) be[i+1] = (C[i]*p[i]-D[i])/(B[i]-C[i]*al[i]) y[n] = (c[n]-B[i]*be[n])/(A[n]+B[n]*al[n]) for i in range(n-1, -1, -1): y[i] = y[i+1]*al[i+a]+be[i] for i in range(n): print(y[i]) r = input() Download 81.49 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling