ilk mesajda verdiğiniz programdaki exp ve ln yerine,
taylor serisi gelicek.
http://en.wikipedia.org/wiki/Taylor_series List of Taylor series of some common functions kısmında denklemler daha açık şekilde verilmiş.
n değerini ne kadar büyük tutacağınız istediğiniz hassasiyete bağlı.
teorik olarak bulmanın yolu var ama bence deneme yanılma size yeter.
aşağıdaki kodu test etmedim, fikir vermesi açısından yazıyorum.
pascal bilmediğim için C de yazdım.
PHP Kodu:
// exp(x) degeri icin taylor dizisin ilk n teriminin toplami.
double exp_serisi( double x, int n ){
double sonuc = 0 ;
double x_li_terim ;
long n_li_terim ;
// sifirinci terim.
x_li_terim = 1 ;
n_li_terim = 1 ;
sonuc = x_li_terim / n_li_terim ;
// birinciden, n inciye kadar olan terimler
for ( int i = 1; i <= n ; i++ ){
x_li_terim = x_li_terim * x;
n_li_terim = n_li_terim * i;
sonuc = sonuc + x_li_terim / n_li_terim;
}
return sonuc;
}