SORU
21 Mayıs 2010, Cuma


Nasıl bir güç işlevi kendim yazabilir miyim?

Her zaman gücün (örneğin 2 . hesaplayan bir fonksiyon yapabilirim nasıl merak ettim ^sup>3kendimi. Çoğu dilde bu standart kütüphanede bulunan, çoğunlukla pow(double x, double y), ama nasıl yazmak kendi başıma yapabilir miyim?

for loops ama beynimin bir döngü var sanırım (tamsayı olmayan bir üs ile bir güç yapmak istediğimde, 5 gibi . düşünüyordum ^sup>4.5veya negatif 2-21ve ben deli gitti ;)

Nasıl gerçek bir dizi gücünü hesaplayan bir fonksiyon yazabilirim? Teşekkürler


Oh, önemli bir konu da, belki de bu sonuçta işe yaramaz hale getiren güçler () örneğin exp kullanın. işlevlerini kullanamazsınız

CEVAP
21 Mayıs 2010, Cuma


Negatif güçler bana ters (1/x) pozitif güç onlar için bir sorun değildir.

Kayan nokta güçleri biraz daha karmaşık; bildiğiniz gibi bir kesirli güç eşdeğer bir kök (örneğin x^(1/2) == sqrt(x)) ve bunu siz de biliyorsunuz çarparak güçler ile aynı temel eşdeğerdir Ekle kendi üslü.

Yukarıdaki tüm bu ile, şunları yapabilirsiniz:

  • Decompose the exponent in a integer part and a rational part.
  • Bir döngü ile tamsayı gücü (faktörler çürüyor ve kısmi hesaplamalar yeniden optimize edebilirsiniz) hesaplayın.
  • İstediğiniz herhangi bir algoritma ile kök (ikiye bölme veya Newton yöntemi gibi herhangi bir yinelemeli yaklaşım işe yarayabilir) hesaplayın.
  • Sonuç çarpın.
  • Eğer üs negatif ise tersi geçerlidir.

Örnek:

2^(-3.5) = (2^3 * 2^(1/2)))^-1 = 1 / (2for loops2 * sqrt(2))

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • akalyne

    akalyne

    13 Mayıs 2009
  • ELawshea

    ELawshea

    26 Mayıs 2008
  • 10 Daughters, 2 Sons

    10 Daughters

    10 Mart 2009