import numpy as np
def compute_corrected_integral(f, start, end, num_points):
# 1. Tam sayı aralıkları
step1 = (end - start) / num_points
points1 = [start + step1 / 2 + i * step1 for i in range(num_points)] # Step/2 ile başla, step ile ilerle
values1 = [f(x) for x in points1]
integral1 = np.trapz(values1, points1)
# 2. Yarım noktalar (tam sayı noktaları hariç)
step2 = step1 / 2
points2 = [start + step2 / 2 + i * step2 for i in range(2 * num_points) if (start + step2 / 2 + i * step2) not in points1]
values2 = [f(x) for x in points2]
integral2 = np.trapz(values2, points2)
# 3. Çeyrek noktalar (tam ve yarım noktalar hariç)
step3 = step2 / 2
points3 = [start + step3 / 2 + i * step3 for i in range(4 * num_points) if (start + step3 / 2 + i * step3) not in points1 + points2]
values3 = [f(x) for x in points3]
integral3 = np.trapz(values3, points3)
# Geometrik dizinin farkları
fark1 = integral2 - integral1 # İlk fark (geometrik dizinin ilk elemanı)
fark2 = integral3 - integral2 # İkinci fark (geometrik dizinin ikinci elemanı)
# Geometrik seriyi doğrudan oran kullanarak oluşturma
oran = fark2 / fark1 # Fark oranı
geometric_sum = fark2 * (1 / (1 - oran) - 1) # Sonsuz toplam formülü: a / (1 - r)
corrected_integral = integral3 + geometric_sum
# Sonuçları yazdırma
print("Tam sayı aralıkları (1. grup):")
print("x değerleri:", points1)
print("f(x) değerleri:", values1)
print("Integral:", integral1)
print("-" * 40)
print("Yarım noktalar (2. grup):")
print("x değerleri:", points2)
print("f(x) değerleri:", values2)
print("Integral:", integral2)
print("-" * 40)
print("Çeyrek noktalar (3. grup):")
print("x değerleri:", points3)
print("f(x) değerleri:", values3)
print("Integral:", integral3)
print("-" * 40)
print("Geometrik dizinin ilk farkı:", fark1)
print("Geometrik dizinin ikinci farkı:", fark2)
print("Fark oranı:", oran)
print("Düzeltilmiş integral:", corrected_integral)
print("-" * 40)
# Son olarak integral değerlerini döndürüyoruz
return integral1, integral2, integral3, corrected_integral
# Fonksiyon tanımı (f(x) = x * x)
f = lambda x: x * x
# Parametreler
start = 0
end = 1
num_points = 1024 # İlk gruptaki bölme sayısı
# Hesaplama
integral1, integral2, integral3, corrected_integral = compute_corrected_integral(f, start, end, num_points)
# Sonuçları yazdırma
print("Integral1:", integral1)
print("Integral2:", integral2)
print("Integral3:", integral3)
print("Düzeltilmiş Integral:", corrected_integral)
No comments:
Post a Comment