Matematik işlemleri için pic seçimi yardım

Başlatan homer380, 07 Mayıs 2013, 13:30:15

homer380

Benim bir projemde n. dereceden kök alma işlemi yapmam gerekiyor. Fakat bunun için ne tür bir işlemci kullanmalıyım bilemiyorum. (Şimdiye kadar sadece Microchip'în ürettiği işlemcilerle uğraştım. ) Yardımlarınızı bekliyorum.

camby

ben de merak ettım.

Sayısal ortamda kok alma algorıtmasına baktınız mı oncelıkle ? Mantıken her mcu ıle algorıtmayı yazınca bu ıslem olur , fakat mcu nun yeteneklerıne gore ıslem suresı , uzar yada kısalır..

homer380

Baktım fakat yeterince acıklanmamıs. 2 - 3 haftadır arıyorum internette bir kaç yöntem var. Ama benim soruma yeterince cevap vermiyor. Heronun yöntemi diye bir şey var ama yeterince açıklanmış bir sayfa bulamadım.

z

Bugüne kadar bu sorunla hiç ilgilenmedim. Lazım olsaydı logaritma ile çözmeye çalışırdım.

x sayısının n. dereceden kökü y olsun.

y=x^(1/n)

log(y)=(1/n) log(x) = C

Eşitliğin sağ tarafını hesaplayabiliriz.

C=log(y)

y=Inv log(C)

Heronun yöntemi ile ilgili hangi dokumanları buldun?

İşlemci seçimi sana bırakıldıysa ARM CM3 serisini seçmeni öneririm. Yüksek saat frekansı ve 32 bit işlem kabiliyetinden dolayı avantajın çok olacaktır.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Kolaycılık yok.

Floating işlemleri kodla yapmayı öğrensin.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

kantirici

Alıntı yapılan: z - 07 Mayıs 2013, 16:38:59
Kolaycılık yok.

Floating işlemleri kodla yapmayı öğrensin.

Hocam floating işlemleri nasıl kodla yaparız biraz açıklayabilirmisiniz? Mesela ben 5/3 yazıp geçiyorum c'de.

AsHeS

#6
Alıntı yapılan: kantirici - 07 Mayıs 2013, 17:02:56
Hocam floating işlemleri nasıl kodla yaparız biraz açıklayabilirmisiniz? Mesela ben 5/3 yazıp geçiyorum c'de.
5/3 anlamı 5 içerisinde kaç adet 3 var yani algoritmaya dökersek
5 ten kaç kere 3 çıkar(1 kere) kalan 2
2 sayısı 3 e bölünmez o zaman 10 ile çarpalım
20 sayısından kaç adet 3 çıkar (6 adet)  o zaman 5/3=1.6 eder tabi farkettiysen bölme işlemi yerine çıkarma,çarpma yerine toplama kullanıyorsun çünkü bunlar bir ALU da bulunması gereken en temel blok o yüzden ASM ile yazarken ve çok hassas float sayı istenmezse böyle kolaylıklara kaçılabiliyor.
Edit:Çarpma,bölme,kayan noktalı çarpma bölme yapıları her işlemci çekirdeğinde bulunmaz o yüzden böyle yollar tercih edilebilir.

kantirici

Evet can onları biliyorumda bülent hocanın tam olarak bunlarımı yoksa farklı bir yapıyımı  kastettigini anlayamadım.  Bazen birisi size 2+2=4 der tamam der geçersin, bazende başka birisi der altında başka birşeyler ararsın ya o hesap benimki :)

fatih6761

Alıntı yapılan: kantirici - 07 Mayıs 2013, 17:29:55
Evet can onları biliyorumda bülent hocanın tam olarak bunlarımı yoksa farklı bir yapıyımı  kastettigini anlayamadım.  Bazen birisi size 2+2=4 der tamam der geçersin, bazende başka birisi der altında başka birşeyler ararsın ya o hesap benimki :)
Virgülden sonra çok detay gerekiyorsa zaten derleyicinin 64-bit double emülasyonu vardır. 32-bit yeter diyorsanız Cortex-M4F donanımsal FPU birimine sahip. Eğer çok detay lazım değilse fized-point aritmetiği kullanabilirsiniz.

AsHeS

Alıntı yapılan: fatih6761 - 07 Mayıs 2013, 17:45:08
Virgülden sonra çok detay gerekiyorsa zaten derleyicinin 64-bit double emülasyonu vardır. 32-bit yeter diyorsanız Cortex-M4F donanımsal FPU birimine sahip. Eğer çok detay lazım değilse fized-point aritmetiği kullanabilirsiniz.
Zaten amaç derleyicinin double için assembly kodu üretmesini engellemek değil mi sonuçta float işlem yazılımsal ve dinamik(sürekli değişen değişkenler) olduğu için zamandan ve kaynaktan çok götürüyor.

z

#10
Eğer C kullanıyorsak o zaman dediklerimi unutun. Donanımın FPU ünitesine sahip olması olmaması kullanıcının yazacağını etkilemez.

Fakat C kullanıyorsak da anlayamadığım n. dereceden kök alan fonksiyonu kullanır geçersin neden böyle bir soru soruluyor?

Benim aklım tamamen asm kodlamaya gitti. Floating point işlemleri yapabilmek için toplama, çıkartma, çarpma, bölme, karşılaştırma rutinlerini yazmanız gerekiyor. Bu rutinleri yazdıktan sonra da logaritma fonksiyonunu yazarsın en son olarak da yukarıda verdiğim şekilde kök alırsın.

C kullanılacaksa bu bir cırcır soru hiç bir espirisi yok.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Tagli

İşlemin ne kadar sürede yapılması gerekiyor? Önemli olan bu. Yoksa her işlemciyle yaparsın.
Gökçe Tağlıoğlu

Mefe

Eğer işlemlerinşzde ağır matematik kulanacaksanız ve işlemlerin hızlı şekilde yapılmasını istiyorsanız en iyi çözüm DSP kullanmanız olur. DSP bana ağır gelir derseniz 16bitlil MSP veya DSPIC serisine yönelmelisiniz. 8 bit işlemcilerle ağır matematik yapmaya çalışmak, işlemciyi şişirmek demektir.
Muhammet EFE || http://muhammetefe.com

camby

Alıntı yapılan: Tagli - 07 Mayıs 2013, 19:02:40
İşlemin ne kadar sürede yapılması gerekiyor? Önemli olan bu. Yoksa her işlemciyle yaparsın.

Aynen dediğim de buydu. Yani algoritmayı kurduğunuzda iş bitmiş olacaktır. Gerisi sizin  ihtiyaçlarınız , kriterleriniz..