در این نوشته به معرفی دو دستور where و argwhere از کتابخانه numpy پرداخته خواهد شد. این دو دستور اگر درست و به جا استفاده شوند میتوانند موجب خوانایی کدها شده و سرعت برنامهنویسی ما را نیز افزایش دهند. با مثالها گوناگون نحوه استفاده از این دو تابع توصیف خواهد شد.
رگرسیون خطی تخمین یک پارامتر بهصورت تابعی خطی از تعدادی داده دیگر میباشد. در عمل ما به دنبال به دست آوردن یک خط یا در حالت کلی اَبَر صفحه هستیم که با توجه به معیار خطای تعریف شده بهینه است. این روش کاربرد ویژه در علوم و مهندسی داشته و آشنایی با نحوه پیادهسازی آن در پایتون موضوع این نوشته میباشد.
بسیاری از مسائل صنعت و مهندسی در عمل به برنامهریزی بهینه با تابع هزینه قابل بیان به شکل خطی تحت قیود تساوی و ناتساوی ختم میشود. ابزارهای بسیاری برای حل این نوع مسائل طراحی شده است که بطور رایگان در دسترس عموم قرار دارد؛ مثل GNU Linear Programming Kit یا GLTK. با این حال این ابزارها بعنوان ورودی از مدل مجتمع ماتریسی استفاده می کنند. کتابخانه PuLP در پایتون واسط بین کاربر و حل کنندههای برنامهریزی خطی میباشد تا کاربر در گیر ساخت مدل ماتریسی که اغلب زمان بر و پر خطا است نباشد.
کتابخانههای جنبی پایتون اکثرا از رابط Python/C برای افزایش سرعت اجرا استفاده می کنند. برای اینکه بتوانیم از این ظرفیت بالقوه استفاده نماییم باید حدالامکان فراخوانی مکرر توابع کتابخانهای را کاهش دهیم. بعبارت عملیتر از استفاده از حلقهها و فراخوانی توابع پشتسر هم و زاید اجتناب نماییم. در این نوشته با مثالهای متعدد نحوه استفاده صحیح از numpy برای افزایش سرعت محاسبات توضیح داده خواهد شد.
در کنار مجموعه کتابخانههای NumPy و SciPy که محاسبات علمی در پایتون را تسهیل نموده و روشهای عددی متعددی را برای کاربران فراهم میآورند، کتابخانه SymPy امکان محاسبات سمبولیک را فراهم میآورد. این کتابخانه قابلیت محاسبات جبری، محاسبه حد، مشتق و انتگرال، حل معادلات و کار بر روی ماتریسها را بصورت پارامتری برای ما به ارمغان میآورد. در این نوشته با ذکر چند مثال با این کتابخانه آشنا میشویم.
در بسیاری از فرآیندهای محاسباتی امکان روبرو شدن با مسئله پیدا کردن ریشه معادلات محتمل است. این معادلات می توانند در حالت کلی غیرخطی و در ابعاد بزرگ باشند از این رو کاربرد روشهای کارامد برای حل این دسته از مسائل بسیار مهم می باشد. یکی از روشهای شناخته شده که مسئله ریشه یابی را تقریب کریلوف ژاکوبین معکوس انجام می دهد، روش نیوتون-کریلوف است. در این نوشته به نحوه پیدا کردن ریشه دسته معادلات غیرخطی با روش نیوتون-کریلوف پرداخته می شود.
شبیه سازی سیستم های دینامیکی، بررسی و کنترل آنها بدون حل معادله سیستمی آن بر اساس زمان و پارامترهای وابسته امکان ناپذیر است. محیطهای محاسبات عددی متعددی برای انجام اینکار مثل متلب موجود می باشند که امکانات متنوعی را فراهم آورده اند. زبان برنامه نویسی پایتون با بهره گیری از کتابخانه محاسباتی NumPy و SciPy به ابزار مناسبی برای محاسبات علمی تبدیل شده است. در این نوشته به دنبال حل عددی دسته معادلات دیفرانسیلی با SciPy هستیم.