Haskell'deki lineer ve kuadratik modüler denklemleri tek değişkende çözmek istiyorum. Şu anda yaptığım gibi, x = [1..]
denklemini birer birer koyarak ve geri kalanını bulmak (p
denklemi p
ise (x
değişkenine sahip)). Bunun çok verimsiz bir süreç olduğuna inanıyorum. Yani bunu yapmak için daha iyi bir yolu var mı? Modüler kareselleştirme çözmeHaskell'de modüler denklemler
7
A
cevap
5
birleştirmeyi içerir:
- Tonelli-Shanks algorithm
- Chinese Remainder Theorem
- ve ikinci dereceden bir formül (yani kare tamamlama) Haskell'e için
arithmoi paket uygulamaları vardır Bu algoritmaların Özellikle, chineseRemainder, sqrtModP ve sqrtModPP işlevlerine bakın. Bulabileceğiniz İşte
bazı örnekler çalıştı:
+2
Çok dikkatli olun. arithmoi paketi. Birinci elek kodunda, aralıklı segmentasyon hatalarına neden olan en az bir hata vardır. Kod * son derece * kıllı ve zayıf bir şekilde belgelenmiştir ve yeni bir bakıcıya sahip olan pakete rağmen, yakında herhangi bir zamanda iyileştirileceğine dair hiçbir işaret yoktur. – dfeuer
[Bu yardımcı olabilecek] (http://math.stackexchange.com/a/261900/88047) –
Ben arıyorum @BartekBanachewicz genel yöntem. Aslında ifadede, diğer araçları kullanarak tespit edilen başka sabitler de vardır, böylece el ile çözemiyorum ve bu sonuçları kullanıyorum. – Iguana
bu sayısal bir yöntem/algrotihm nedir? eğer evet ise, ilgili etiketi eklemek isteyebilirsiniz. –