Akademisyenler öncülüğünde matematik/fizik/bilgisayar bilimleri soru cevap platformu
0 beğenilme 0 beğenilmeme
3.9k kez görüntülendi
Uzun süredir sitede aktif değildim , içimden bir ses artık bir şeyler yazmam gerektiğini söylüyor.

Mikrodenetleyicim için C dilini kullanarak doğal logaritmayı hızlı bir şekilde hesaplayan algoritma yazmaya çalışıyorum.İntegral kullanarak bu işi şu şekilde yapabiliyorum :

1.Doğal logaritmayı integral ile yazabiliriz :

c1dxx=ln(c)


2.Bu integrali C dilinde de hesaplayabilmek için x1 fonksiyonunun , [1,c] aralığındaki x ekseni ile arasında kalan alanı bulmamız gerekir.Bu alanı parçalara ayırarak (sınırlı sayıda parça) yaklaşık alanı hesaplayabiliriz.

f(x)=x1 ve nZ+ olmak üzere bu alanı 10n parçaya ayırırsak , bu parçaların alanları toplamını :

ln(c)[110n][f(1+(c1)10n)+f(1+2(c1)10n)+f(1+3(c1)10n)++f(c)]


şeklinde yazabiliriz.Bu toplamı , toplam sembolü ile gösterirsek :

ln(c)10nk=1110n+k(c1)


3. Bu ifadeyi C ' de aşağıdaki gibi yazabiliriz ;

double dogal_logaritma(double deger , int n_sayisi)
  {
      double sonuc = 0 ;
      for(k=1;k<(10^n_sayisi)+1;k++)
       {
          sonuc += (double)1/((10^n_sayisi)+k*(deger-1))
       }
       return(sonuc) ;
  }


4.  n değeri arttırıldığında daha doğru sonuçlar alınabiliyor.Tabi bu durumda işlem süreside uzuyor.n=4 ve deger=50 için toplam işlem süresi 34 saniye civarında.

Benim yapmak istediğim bu süreyi kısaltmak ve gerçek değere daha yakın değerler bulmak.Bunun içinde yeni bir hesaplama yolu geliştirmek gerekiyor.Sizce bunu nasıl yapabilirim ?

Veri Bilimi kategorisinde (1.1k puan) tarafından 
tarafından yeniden kategorilendirildi | 3.9k kez görüntülendi

Simpson kuralı ile integral burada uygulanabilir mi?

for döngüsü dışında p=10^n  değişkeni kullanılabilir:)

image

Mathematica ile yaklasik deger boyle bulunabilir.., C bilmedigim icin yardimci olamayacagim..

Toplamin icine f yazmayi unutmus sunuz.. sag toplam yerine orta toplam daha iyi sonuc verir, tabi ki en iyisi simspson methodu (basit olan yontemler icinde)


  image
 

...........................

Integral almak yerine Pade yaklasimini kullanabilirsiniz.
20,293 soru
21,832 cevap
73,524 yorum
2,660,885 kullanıcı