سامانهای برای آزمایشهای جبری و هندسی و البته رمزنگاری
مرصاد | شنبه, ۵ تیر ۱۳۹۵، ۰۷:۲۱ ب.ظ
SageMath
System for Algebra and Geometry Experimentation
sagemath یک نرمافزار ریاضی است که بسیاری از شاخههای ریاضی از جمله جبر مجرد، جبر خطّی، نظریهی اعداد و نظریهی گراف، آمار و احتمال و مثل همهی نرمافزارهای ریاضی دیگر ریاضی عمومی و بهینهسازی و آنالیز عددی را میپوشاند. امّا آنچه سبب شده تا در این وبگاه به معرفی این نرم افزار بپردازم بستهها و توابع مرتبط با رمزنگاری تعبیه شده در این نرمافزار و از آن مهمتر استقبال جامعه رمزنگاری در استفاده از این نرمافزار بوده است.
در جامعهی دانشگاهی ایران (و جهان) نرم افزارهای ریاضی نظیر Matlab ،Maple و Mathematica بیشتر شناخته شدهاند. این نرم افزارها هر یک در زمینهی خاصی قدرتمند هستند برای مثال Matlab برای محاسبات ماتریسی و هر آنچه بتوان با ماتریس مدل کرد قدرت زیادی دارد علاوه بر آن بیشتر از هر نرمافزار ریاضی دیگر در جامعه مهندسی شناخته شده و جعبهابزارهای زیادی به آن افزده شده و به نوعی آن را به یک نرم افزار همهکاره در مهندسی تبدیل کرده و در بسیاری از رشتههای مهندسی مثل برق، مکانیک، مهندسی شیمی و ... نیز از آن استفاده میشود. اما این نرم افزار، علیرغم اپلیکیشن Mupad تعبیه شده در آن برای محاسبات نمادین، در محاسبات نمادین حرفی برای گفتن ندارد، در عوض Maple و Mathematica در محاسبات نمادین خوب عمل میکنند. قصد ندارم در این نوشته جایگزینی برای نرمافزارهای فوق معرفی کنم چون همهی ما به نوعی به نرم افزارهای فوق عادت کردهایم و ترک عادت موجب مرض است، بلکه قصد دارم تا شما را با نرمافزاری دیگر که بیشتر مناسب رمزنگاری است آشنا کنم.
sage اولین بار در ۲۴ فوریهی ۲۰۰۵ به عنوان یک نرمافزار متنباز و رایگان تحت گواهی نامهی GNU GPL و با هدف اولیهی ((نرم افزاری متنباز و جایگزین برای Magma و Maple و Mathematica, Matlab)) تحت سرپرستی ریاضیدانی از دانشگاه واشنگتون به نام ویلیام آرتور اشتاین منتشر شد.
ویلیام اشتاین- سرپرست پروژه sagemath
http://www.wstein.org
سیج نرمافزاری پایتون مبنا است و شما میتوانید برنامههایتان محیط سیج را به زبان پایتون بنویسید. به این ترتیب به راحتی میتوان توابع و رویهها را در آن تعریف کرد ضمن این که از ویژگی شئگرایی به خوبی پشتیبانی میکند. همانطور که در تیتر این مطلب مشاهده میکنید کلمه Sage مخفف عبارت System for Algebra and Geometry Experimentation و به معنای سامانهی برای آزمایشهای جبری و هندسی است.
خصوصیات بارز نرم افزار sagemath:
محیط کاربری گرافیکی مبتنی بر مرورگر و سازگار با انواع مرورگرهای اینترنتی از جمله Firefox, Opera, Konqueror, Google Chrome , Safari
رابط کابری command-line با استفاده از IPython علاوه بر رابط گرافیکی
پشتیبانی از پردازش موازی با استفاده از پردازندههای چند هستهای و یا چند پردازنده
حساب دیفرانسیل و انتگرال با استفاده از Maxiama و Sympy
جبر خطّی عددی با استفاده از GSL و SciPy و NumPy
کتابخانهای شامل توابع مقدماتی و پیشرفتهی ریاضی
رسم دو و سه بعدی گراف توابع عددی و یا نمادین
محاسبات ماتریسی (البته نه به سادگی کار با ماتریسها در Matlab)
کتابخانهی آمار چند متغیره با استفاده از R و SciPy
حاوی توابعی آماده برای آنالیز و بصری سازی گرافها و تحقیق در زمینهی نظریهی گراف
کتابخانهی شامل بسیاری از توابع نظریه اعداد
پشتیبانی از اعداد مختلط و دقت دلخواه در محاسبات و از همه مهمتر پشتیبانی خوب از محاسبات نمادین
حاوی کتابخانههای استاندارد Python
اجرای کدهای Fortran و C و C++ ,Cython
قابلیت فراخوانی از طریق نرمافزار Mathemtica
کتابخانهی حاوی توابع مرتبط با رمزنگاری کلاسیک و مدرن
شامل بستههای نرمافزاری در زمینهی جبر از جمله Groebner Basis و SatSolver که در حملات جبری به سامانههای رمزنگاری مورد استفاده قرار میگیرند
سهولت کار با حلقهی اعداد گویا و صحیح و حلقههای چند جملهای با بیش از یک متغیر و نیز حلقههای خارج قسمتی و میدانهای متناهی در مقایسه با نرمافزارهایی نظیر CoCoA
استفاده از تکنیکهای پردازش کلمات شامل ویرایش فرمولها و پشتیبانی از latex برای نمایش زیبای خروجیهای نمادین
قابل استفاده در سیستمعاملهای مختلف از جمله لینوکس و ویندوز
این نرمافزار دارای یک نسخه آنلاین نیز هست. خوبی نسخه آنلاین این است که تقریبا کامل است و بیشتر کتابخانههای اختیاری را در بردارد و نیازی نیست تا کتابخانه خاصی را به آن اضافه کنید. مهمتر از همه این که برخلاف نرمافزارهایی نظیر متلب که برای استفاده از نسخه آنلاین آنهم باید لایسنس داشته باشید، استفاده از نسخه آنلاین این نرمافزار کاملا رایگان و ساده است و شما با ساختن یک حساب کاربری که فقط به یک ایمیل و یک پسورد نیاز دارد میتوانید بهصورت آنلاین از این نرمافزار استفاده کنید. پیشنهاد میکنم با مراجعه به لینک زیر یکبار اینکار را انجام دهید.
توسعه نرم افزار sage
وقتی ویلیام اشتاین سرپرست پروژه سیج ، این نرمافزار را طراحی میکرد، نرمافزارهای ریاضی متن باز زیادی به زبانهای مختلف از جمله C و Fortran و Python نوشته شده بودند. در این زمان توسعه دهندگان سیج بهجای اختراع دوباره چرخ سعی کردند و افزودن یک نرمافزار دیگر به لیست نرمافزارهای ریاضی موجود و به عبارت دیگر به جای نوشتن یک نرمافزار ریاضی از صفر، به جمع آوری بستههای آمادهی ریاضی که تا آن زمان نوشته شده بود در یک قالب واحد اقدام کردند به طوری که کاربر برای کار با آنها فقط کافی است با زبان Python آشنایی داشته باشد(که برای شروع یک آشنایی مقدماتی با این زبان کافی است). علاوه بر این sage شامل صدها و هزاران خط کد منحصر بفرد است که ضمن افزودن برخی قابلیتهای جدید به این بستههای آماده، به برقراری ارتباط بین این اجزا و ماژولهای آماده میپردازند.
- ۳ نظر
- ۰۵ تیر ۹۵ ، ۱۹:۲۱