x0 = 1
# Epsilon qiymati
epsilon = 0.0001
# Iteratsiyalar soni
iterations = 0
# Tenglam yechimi
while True:
# Yangi taxmin hisoblanadi
x1 = f(x0)
# Yechimliroq bo'lish uchun epsilon ni qo'llab-quvvatlaymiz
if abs(x1 - x0) < epsilon:
break
# Natijani konsolga chiqaramiz
print("Iteration {}: x = {}".format(iterations, x1))
# Yangi taxminni o'zgartiramiz
x0 = x1
iterations += 1
return x1
# Funktsiyani tekshirish
print("f(1) = ", f(1))
# Tenglam yechimini topish
root = transzendental_tenglama_yechim()
# Natijani chiqarish
print("Tenglam yechimi:", root)
2-topshiriq
Quyidagi masalalar uchun algoritm va dastur kodini yozing. Har bir talaba o’zining jurnaldagi raqami bo’yicha bittadan masalani yechadi. Masalalar kam bo’lganda sanoq tartib boshidan boshlanadi. Masalan, 20 masala bo’lsa, 21-o’rindagi talaba 1-masalani, 22-o’rindagi talaba 2-masalani yechadi.
Quyidagi transsendent tenglamani Nyuton va Vatarlar usuli yordamida yechimini aniqlovchi dastur tuzing:
1. 2x3-2x-1=0
Ma'lumot uchun, transsendent tenglamalar (transcendental equations) boshqacha metoddan foydalanish kerak bo'ladi, chunki ular verguldan keyin qandaydir kutubdan ko'proq turishiga yo'l qo'yishadi. Nyuton usuli (Newton's method) esa bu xususiyatni hisoblash uchun yaxshi usul bo'lib, chunki uni qulay va aniqligi yuqori bo'lib chiqadi.
Dastur quyidagicha bo'ladi:
def f(x):
return 2*x**3 - 2*x - 1
def df(x):
return 6*x**2 - 2
def newton_method(x0, eps):
Do'stlaringiz bilan baham: |