Nochiziqli tenglamalarni yechish
Download 62.33 Kb.
|
github
- Bu sahifa navigatsiya:
- Takrorlash usuli (ketma-ket yaqinlashish usuli)
- %matplotlib
Nochiziqli tenglamalarni yechish Scipy kutubxonasida chiziqli bo'lmagan tenglamalarni yechishning samarali usullari mavjud, masalan, fsolve usuli. Ushbu protseduraning kirish parametrlari noli biz izlayotgan funktsiya va nolga dastlabki yaqinlashishdir. Demak, tenglamaning yechimini topish uchun ushbu funksiyadan foydalanamiz: from scipy.optimize import fsolve from numpy import exp def f(x): return 2-x-exp(-x) ans = fsolve(f,1) print(' Raqamli yechim: ', ans) Raqamli yechim: [1.84140566] Takrorlash usuli (ketma-ket yaqinlashish usuli) shakldagi tenglama analitik yechimga ega emas. Eng oddiy to'g'ri chiziqli yechim usullaridan biri oddiy takrorlash usulidir. Birinchi bosqichda biz tenglama ildizining dastlabki yaqinlashuvini o'rnatdik, masalan, , keyin tsiklda biz ketma-ket qiymatlarini hisoblaymiz. ketma-ketligi 1.8414056 asl tenglamaning ildizi bo'lgan qozg’almas nuqtaga yaqinlashadi. import numpy as np N = 11 x = np.empty(N, float) x[0] = 1. for i in range(N-1): x[i+1] = 2 - exp(-x[i]) print(x[i+1]) 1.6321205588285577 1.8044854658474119 1.8354408939220457 1.8404568553435368 1.841255113911434 1.8413817828128696 1.8414018735357267 1.8414050598547234 1.8414055651879888 1.8414056453310121 Yechimning yaqinlashish jarayoni grafik ko'rinishda ifodalanishi mumkin. Tenglamaning ildizi chiziqning kesishish nuqtasidir va eksponenti . Grafikdagi qizil nuqta ildizning ketma-ket yaqinlashuvini belgilaydi. dan boshlab nuqtalar bittaga birlashadi. %matplotlib inline import matplotlib.pyplot as plt t = np.linspace(0.9,2,100) plt.plot(t,t,color='black') plt.plot(t,2-exp(-t),color='black') plt.plot(x[:N-1],x[1:N],'ro') plt.show() Olingan natijalar asosida ildizning yaqinlashuvini quyidagi grafikga o'xshash grafik chiziladi tenglamasini dastlabki yaqinlashuvi bilan yechish uchun xuddi shu yondashuvdan foydalanilganda, natija bir qo'zg'almas nuqtaga yaqinlashmaydi, balki ikkita pozitsiya o'rtasida tebranadi. Ushbu misolda iteratsiya usuli yaqinlashmaydi. import numpy as np N = 11 x = np.empty(N, float) x[0] = 0.5 for i in range(N-1): x[i+1] = exp(1-x[i]*x[i]) print(x[i+1]) --------------------------------------------------------------------------- NameError Traceback (most recent call last) 4 x[0] = 0.5 5 for i in range(N-1): ----> 6 x[i+1] = exp(1-x[i]*x[i]) 7 print(x[i+1]) NameError: name 'exp' is not defined t = np.linspace(-0.5,3.5,100) plt.plot(t,t,color='black') plt.plot(t,exp(1-t*t),color='black') plt.plot(x[:N-1],x[1:N],'ro') plt.show() Download 62.33 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling