double n = -1/MathPow(5.5, 0.2); Print(n);
Güçlerle çalışan bir işlev yazmam gerekiyordu ve yazma sürecinde kendim için ilginç bir şey keşfettim, yani:
Negatif bir kesirli sayıyı negatif bir kesirli kuvvetle değiştirirseniz, MQL5 -nan yazar.
Aynı sonucu aldığım yerde C++'a baktım (Derlemeye çok tembel olduğum için dilin hangi sürümünün kullanıldığını bilmiyorum ve cpp.sh üzerinde çabucak test ettim)
Artılarda, aynı cevabı veriyor, o zaman MQL5'te kesinlikle hata yok! Ama soru şu ki, bu neden oluyor? Matematiğe dönersek, cevap şu olmalıdır. Matematiksel olarak, bir sayının eksi bir kuvveti, aynı sayının artı bir kuvvete bölünmesine eşittir. Başka bir deyişle:
Ve bilgisayardaki hesap makinesi bunu doğrular. Peki derecelerle ilgili bu numara tam olarak nedir?
R'de:
(-5.5)^-0.2=NaN
-5.5^-0.2=-(5.5^-0.2)=-0.7110947
R'de:
(-5.5)^-0.2=NaN
-5.5^-0.2=-(5.5^-0.2)=-0.7110947
Belki de bacaklar, negatif bir sayıdan eşit bir kök almanın imkansız olduğu gerçeğinden büyür? Zaten biraz kafam karıştı ... Ve en önemlisi, bu nasıl aşılır?
Ve en önemlisi, bu nasıl aşılır?
m = 2
sayı = 10
double result = pow ( pow (- 5.5 , 2.0 ),- 0.1 ); Print ( "result = " ,result); //result = 0.7110947333604484parantez olmadan, eksi işareti farklı yorumlanabilir, IMHO
İşaretlerle ilgili bir sorun olacak. Eşit bir gücün kökü her zaman pozitiftir
İşaretlerle ilgili bir sorun olacak. Eşit bir gücün kökü her zaman pozitiftir
Derecenin kesirli olduğu hesap makinesinde
1 /(- 5.5 ^ - 0.2 ) - 0 , 7110947333604484236326007791589
Derecenin kesirli olduğu mql cinsinden
double n = 1 / MathPow (- 5.5 , - 0.2 ); Print (n); zero divide in 'Pow.mq5'
Derecenin tamsayı olduğu mql'de
double n = 1 / MathPow (- 3.0 , - 3.0 ); Print (n); - 27.0
Sonuç olarak, işlev kesirli gücü doğru bir şekilde hesaplamaz ve sıfır bölme döndürür.
m = 2
sayı=10
parantez olmadan, eksi işareti farklı yorumlanabilir, IMHOCevabınız için teşekkür ederim, ancak genel olarak, aritmetik olarak doğru bir çözüm alırsanız, o zaman sadece karmaşık sayılarla benzer bir şey uygulamak mümkün olacak gibi görünüyor ... Önerdiğiniz yöntemde, dereceyi bölmeniz gerekiyor. kök değerinin her zaman pozitif bir dereceye sahip olduğu ve cevabın her zaman pozitif olacağıdır. Ama bu uydurma olmadan alırsak, o zaman sadece karmaşık sayılara geliriz, çünkü genel olarak kabul edilen cebirsel modele göre, bildiğim kadarıyla (eğitimden dolayı bir matematikçi değilim) - negatif bir sayının kökü karmaşık bir sayı.
Derecenin kesirli olduğu hesap makinesinde
Derecenin kesirli olduğu mql cinsinden
Derecenin tamsayı olduğu mql'de
Sonuç olarak, işlev kesirli gücü doğru bir şekilde hesaplamaz ve sıfır bölme döndürür.
İşlev doğru. Sadece standart matematikle çalışmıyor.
İşlev doğru. Sadece standart matematikle çalışmıyor.
-0.2, sıfıra bölme hatası döndürmek için sıfır değildir.
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Güçlerle çalışan bir işlev yazmam gerekiyordu ve yazma sürecinde kendim için ilginç bir şey keşfettim, yani:
Negatif bir kesirli sayıyı negatif bir kesirli kuvvetle değiştirirseniz, MQL5 -nan yazar.
Aynı sonucu aldığım yerde C++'a baktım (Derlemeye çok tembel olduğum için dilin hangi sürümünün kullanıldığını bilmiyorum ve cpp.sh üzerinde çabucak test ettim)
Artılarda, aynı cevabı veriyor, o zaman MQL5'te kesinlikle hata yok! Ama soru şu ki, bu neden oluyor? Matematiğe dönersek, cevap şu olmalıdır. Matematiksel olarak, bir sayının eksi bir kuvveti, aynı sayının artı bir kuvvete bölünmesine eşittir. Başka bir deyişle:
Ve bilgisayardaki hesap makinesi bunu doğrular. Peki derecelerle ilgili bu numara tam olarak nedir?