علی شکیبا

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

به منظور انجام محاسبات با دقت دلخواه، می توان از کتابخانه های متعددی مانند 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)

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

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

1- به منظور نشان‌دادن برچسب محیط‌های مورد استفاده در متن؛ از بسته‌ی showkeys استفاده می‌شود:

\usepackage[notref,notcite]{showkeys}

.

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

موضوعی جالب در توابع بولی

https://en.wikipedia.org/wiki/Algebraic_normal_form

همچنین، مرجع 

[1] I. Hussain and T. Shah, “Literature survey on nonlinear components and chaotic nonlinear components of block ciphers,” Nonlinear Dynamics, vol. 74, no. 4, pp. 869–904, Dec. 2013.

نیز مطالعه شود.

موافقین ۰ مخالفین ۰ ۲۶ اسفند ۹۶ ، ۱۱:۱۶
علی شکیبا

در این یادداشت نسبتا طولانی قصد دارم تا ابتدا دیدی کلی از محاسبات کوانتومی را فارغ از هرگونه فرمول ارائه کرده و سپس مراجعی برای ادامه‌ی مطالعه‌ی علاقه‌مندان فراهم آورم.

۰ نظر موافقین ۰ مخالفین ۰ ۳۰ خرداد ۹۵ ، ۰۰:۳۸
علی شکیبا

در این چالش، کتاب زیبای 

Rolf Niedermeier, "Invitation to Fixed Parameter Algorithms", Oxford University, 2006.

را معرفی می‌کنم. به عنوان یک معارفه‌ی ساده با زمینه‌ی مورد بحث این کتاب می‌توانید این مقاله‌ی ویکی‌پدیا را مطالعه کنید.  این کتاب به خوبی از عهده‌ی دو کار برآمده است. اول، یک مرور کلی بر مطالب ارائه شده تا زمان چاپ است که از آن یک Research Manuscript ساخته است و دیگر، در عین اینکه به مرزهای دانش در این زمینه می‌پردازد، به عنوان یک کتاب آموزشی نیز طراحی شده است. مطمئن هستم دوستانی که به نظریه الگوریتمی گراف و مباحث پیچیدگی محاسباتی علاقه‌مند باشند، از مطالعه‌ی این کتاب لذت خواهند برد. می‌توانید این کتاب را از libgen به رایگان دریافت کنید.

پی نوشت: ایده‌ی چالش کتاب بر مبنای این پست دوست عزیزم، آقای گوهرشادی است.

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

مطالعه این خبر بهانه‌ای برای نوشتن این یادداشت شد. قبلا هم با داده‌های حجیم کار کرده‌ام. وجه مشترک پردازش داده‌های حجیم دو چیز است! یعنی دو چیز را اگر از متخصصین پردازش داده‌های حجیم بگیریم، اکثر الگوریتم‌هایشان کار نخواهد کرد! اولی توابع درهم‌ساز و دومی نمونه‌گیری تصادفی!

خبری که ذکر آن رفت، در پایگاه خبری دانشگاه MIT آمده است، تحت عنوان «برای مدیریت داده‌ی حجیم، آن را کوچک کن!» و بر مبنای مقاله http://arxiv.org/abs/1412.0588 است که در کنفرانس ACM Symposium of Theory of Computing در ماه ژوئن ارائه شده است. صفحه شخصی یکی از نویسندگان این مقاله، http://math.mit.edu/~rpeng/ است. البته ظاهرا این نویسندگان، مقاله دیگری نیز کار کرده اند http://arxiv.org/abs/1408.5099 که بحثش نمونه گیری یکنواخت از یک ماتریس است.

در این مقاله، هدف کاهش تعداد نمونه‌های یک مساله، یعنی حجم داده و نه بعد آن، است. از این جهت، بیشتر مشابه مقاله زیر است که اخیرا چاپ کرده ام و بخشی از رساله ی دکتری ام است.

A. Shakiba, M.R. Hooshmandasl, Data volume reduction in covering approximation spaces with respect to twenty-two types of covering based rough sets, International Journal of Approximate Reasoning, Volume 75, August 2016, Pages 13-38, ISSN 0888-613X, http://dx.doi.org/10.1016/j.ijar.2016.04.002.

(http://www.sciencedirect.com/science/article/pii/S0888613X16300433)

اما در مقام مقایسه، کار من روی داده های سمبلیک است در صورتی که این مقاله با داده های عددی کار می کند.

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

یکی از رویه هایی که در برابر مسائل NP-سخت مورد استفاده قرار می گیرد، بیشتر برای شناخت دلیل و علت دشواری مسائل، Fixed Parameter Tractability یا FPT است. فعلا روی این موضوع تمرکز کرده ام، اما امروز مقاله ای جالب با عنوانی جالب تر دیدم!

Alexander Golovnev, Alexander S. Kulikov, and Ivan Mihajlin. 2016. Families with Infants: Speeding Up Algorithms for NP-Hard Problems Using FFTACM Trans. Algorithms 12, 3, Article 35 (April 2016), 17 pages. DOI=http://dx.doi.org/10.1145/2847419

این مقاله، الگوریتم هایی برای یافتن پاسخ دقیق سه مساله ی فروشنده ی دوره گرد (Traveling Salesman)، عدد رنگی (Chromatic Number) و شمارش تطابق های کامل (Counting Perfect Matchings) را با استفاده از تبدیل سریع فوریه ارائه می کند. ایده ی جالبی است و البته برای من جدید بود! نسخه ی منتشر شده ی این مقاله از اینجا قابل دریافت است. همچنین نسخه ی نویسندگان را می توانید از صفحه ی شخصی نویسنده و یا arXiv دریافت کنید.

برای آشنایی یا یادآوری با تبدیل فوریه (سریع) می توانید از BetterExplained یا Math@StackXchange استفاده کنید.

 

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

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

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

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

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

برای نصب Oracle Java در لینوکس به صورت دستی، ابتدا فایل‌های مربوطه را از آینه http://mirror.sito.ir/ (مخزن آینه‌ای برای اکثر نرم‌افزارهای پرکاربرد که دانلود آن‌ها برای آدرس‌های آی‌پی ایرانی مقدور نیست - البته این مخزن برای Java به روز نیست! :( ) دریافت می‌کنیم.

در گام بعدی، لازم است تا فایل مربوطه را که نامی به صورت jdk-7u51-linux-x64.tar.gz دارد تا از حالت فشرده خارج کنیم. بهتر است که فایل‌های خارج شده از حالت فشرده را در محلی مثل /usr/local یا /opt قرار دهیم.

tar xzf jdk-7u51-linux-x64.tar.gz
sudo mkdir /opt/java
mv jdk1.7.0_51 /opt/java/

سپس نوبت به اضافه کردن دستورات مربوطه می‌رسد (البته می‌توان مسیر /opt/java/jdk1.7.0_51/bin را نیز در متغیر محیطی PATH قرار داد، که این کار را هم انجام می‌دهم. اما ممکن است قبلا شما از OpenJDK یا نسخه متفاوتی از Java استفاده می‌کردید)

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/jdk1.7.0_51/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/opt/java/jdk1.7.0_51/bin/javac" 1 
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/opt/java/jdk1.7.0_51/bin/javaws" 1

همچنین مسیر پوشه bin جاوا را نیز به متغیر PATH اضافه می‌کنیم. بدین منظور فایل /etc/envorinment را ویرایش کرده و مقادیر زیر را در آن قرار می‌دهیم

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/texlive/2012/bin/x86_64-linux:/opt/java/jdk1.7.0_51/bin"
JAVA_HOME="/opt/java/jdk1.7.0_51"

حال لازم است تا مجوز اجرایی فایل‌های پوشه bin را نیز برای همه صادر کنیم. بدین منظور

cd /opt/java/jdk1.7.0_51/bin
chmod a+x *

جاوای ما آماده استفاده است! :)

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

امروز قصد داشتم تا Code::Blocks رو با استفاده از فایل‌های توزیع شده در سایت خودش نصب کنم. خوب، مطابق معمول و به سادگی، فایل‌ها رو در یک فولدر قرار داده و بعد دستور زیر رو اجرا کردم

sudo dpkg -i *.deb

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

sudo apt-get install -f

اما یه مقدار حجم بسته‌های مورد نیاز زیاد بود، پس تصمیم گرفتم که فرایند نصب رو برعکس کنم! این کار با دستور زیر ممکن است

sudo apt-get remove `find -iname '*.deb' -exec dpkg --info '{}' \; | awk '/Package:/ {print $2}'`

که از اینجا برداشته شده است.

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