علی شکیبا

دفتر یادداشت دیجیتال برای هر چیز مفید!

۲ مطلب با موضوع «محاسبات علمی» ثبت شده است

به منظور انجام محاسبات با دقت دلخواه، می توان از کتابخانه های متعددی مانند GNU MP استفاده کرد. یک نمونه ی خوب و سریع در پایتون، کتابخانه mpmath است.

from mpmath import mp 
# mpmath is a free (BSD licensed) Python library for real and complex floating-point arithmetic with arbitrary precision.
mp.dps = 2000
from mpmath import sin, cos, acos, asin, abs

راهنمای این کتابخانه در آدرس http://mpmath.org/doc/current/ در دسترس است.

برای استفاده از آن در کنار numpy می توان از راهکار زیر استفاده نمود:

# providing wrappers for mpmath functions in numpy
from numpy import frompyfunc
sin_v = frompyfunc(sin, 1, 1)
asin_v = frompyfunc(asin, 1, 1)
cos_v = frompyfunc(cos, 1, 1)
acos_v = frompyfunc(acos, 1, 1)

همچنین برای تبدیل آن به float در مواردی که خطای 

TypeError: float() argument must be a string or a number

دریافت شد؛ می تواند به این معنی باشد که حاصل از نوع مختلط بوده و لازم است به صورت زیر مشکل حل شود:

from mpmath import re
x = re(x)

پی نوشت: البته یافتن ریشه مشکل که چرا حاصلی که باید حقیقی باشد، مختلط شده است از بدیهیات است.

۰ نظر موافقین ۱ مخالفین ۰ ۰۹ مرداد ۹۷ ، ۲۲:۴۳
علی شکیبا

امروز مطلبی را در خبرنامه ی فنی ACM به نام ACM Technew دیدم درباره ی نوع داده ی جدید unum (یا بهتر است بگویم شیوه ی جدیدی برای نمایش اعداد حقیقی). کمی در این باره کنجکاو شدم! ایده ی جالبی است و البته طراح آن نیز یک قانون در معماری کامپیوتر را نیز به نام خود ثبت کرده است!

مشروح مصاحبه ی ACM با این فرد در مورد نوع داده ی unum و اثرات آن در محاسبات در مجله ی Ubiquity به چاپ رسیده است. کتابی از نویسنده با شرح دقیق unum و کاربردهای آن به عنوان The End of Error: Unum Computing چاپ شده است که البته می توانید نسخه ای از آن را به رایگان از libgen دریافت کنید.

پی نوشت: می توان این مطلب را به عنوان پروژه ی درسی دانشجویان درس اصول سیستم های کامپیوتری منظور کرد تا علاوه بر آشنایی با IEEE-754، با این نوع نیز آشنا شوند. البته پیاده سازی آن ساده است ولی کمی سماجت و ممارست می خواهد. :-)

۰ نظر موافقین ۱ مخالفین ۰ ۰۷ ارديبهشت ۹۵ ، ۰۰:۱۵
علی شکیبا