Nochiziqli tenglamalarni yechish


Download 62.33 Kb.
Sana17.06.2023
Hajmi62.33 Kb.
#1522200
Bog'liq
github


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)
in
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