سایت شخصی صادق سلمانی

ولتست، بهینه‌سازی تولید و عملکرد چاه، یادگیری ماشین، پایتون، چاه‌های هوشمند، تحلیل داده، فرازآوری مصنوعی

سایت شخصی صادق سلمانی

ولتست، بهینه‌سازی تولید و عملکرد چاه، یادگیری ماشین، پایتون، چاه‌های هوشمند، تحلیل داده، فرازآوری مصنوعی

سایت شخصی صادق سلمانی

مطالبی که در این سایت نوشته می‌شود به منزله تخصص من در آن‌ها نمی‌باشد، بلکه صرفاً آغازی است در مسیری طولانی برای یادگیری بهتر و عمیق‌تر.

آخرین نظرات

۱۰ مطلب با کلمه‌ی کلیدی «برنامه نویسی» ثبت شده است

تابع خطا (Error Function) در ریاضیات، تابعی غیراصلی (نداشتن ضابطه صریح) است که در علوم احتمالات، مواد، آمار و معادلات دیفرانسیل با مشتقات جزئی استفاده می‌شود. تعریف این تابع به صورت زیر است (منبع: ویکی پدیا):


همچنین متمم تابع خطا (Complementary Error Function) نیز به شکل زیر تعریف می‌شود:


نمودار تابع خطا


جدول تابع خطا


علاوه بر اینها، در زبان برنامه‌نویسی پایتون نیز دستوری وجود دارد که می‌توان تابع خطای هر مقداری را محسابه نمود:


from math import *


erf (2)

>> 0.9953222650189527


erfc (2)
>> 0.004677734981047268

یکی از کاربردهای تابع خطا در درس چاه‌آزمایی می‌باشد. مثلاً گرینگارتن و همکاران با استفاده از توابع گرین (Green’s function)، معادله انتشار را برای یک چاه شکافدار (مدل شار یکنواخت) حل نمودند و به رابطه زیر رسیدند:

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

۰ نظر ۰۸ شهریور ۹۶ ، ۱۷:۲۸
صادق سلمانی


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

هنگام مطالعه حرکت یک شیء کوچک که تحت تأثیر نیروی گرانش زمین قرار دارد، ما ممکن است که بتوانیم نیروی اصطکاک هوا را نادیده بگیریم. در این حالت، مدل ما یک تقریبی از سیستم واقعی خواهد بود. معمولاً این مدل این اجازه را به ما خواهد داد تا رفتار سیستم (به فرم تقریبی) را از طریق معادلات ریاضی بیان کنیم، که اغلب شامل معادلات دیفرانسیل معمولی (ODE) یا معادلات دیفرانسیل با مشتقات جزئی (PDE) هستند.

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

از سوی دیگر، در مواردی که نمی‌توان آن‌ها را به خوبی در چارچوب ریاضیات شرح داد و به رفتار اشیائی وابسته هستند که اقدام آن‌ها را نمی‌توان به طور قطعی پیش‌بینی نمود (مانند انسان‌ها)، یافتن یک مدل خوب برای توصیف واقعیت بسیار مشکل است. به عنوان یک قاعده کلی، در این رشته‌ها معادلات حاصله را ساده‌تر می‌توان حل نمود، اما یافتن آن‌ها سخت‌تر است و اعتبار یک مدل باید بیشتر مورد سوال قرار بگیرد. برخی از مثال‌های معمول عبارتند از تلاش برای شبیه‌سازی اقتصاد، استفاده از منابع طبیعی و غیره.

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

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

به طور واضح مطلوب است که راه‌های تحلیلی را در هر کجا که امکان‌پذیر است پیدا کنید، اما تعداد مسائلی که این امکان وجود دارد کم هستند. معمولاً نتایج عددی یک شبیه‌سازی کامپیوتری بسیار مفید است (با وجود کاستی‌های نتایج عددی در مقایسه با روش تحلیلی)، زیرا این تنها راه ممکن برای مطالعه سیستم است.

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

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

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

درک نحوه ایجاد یک شبیه‌سازی کامپیوتری تقریباً به این صورت است: 1) یافتن مدل (اغلب به معنای یافتن معادلات درست می‌باشد)؛ 2) دانستن اینکه چگونه این معادلات را به صورت عددی حل کنیم؛ 3) پیاده‌سازی روش‌هایی برای محاسبه این راه حل‌ها (این برنامه‌نویسی است).

 

 

۰ نظر ۰۵ شهریور ۹۶ ، ۰۹:۲۱
صادق سلمانی

یکی از موضوعات مهم ریاضیات و آمار که کاربرد زیادی در رشته‌های مهندسی دارد، مبحث برازش منحنی (Curve Fitting) می‌باشد. 

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


.The most common choice is to minimize the sum of squared residuals


معرفی چند تابع:

1- z = polyfit (x, y, n) 

این تابع، مقادیر x داده و مقادیر y داده‌ها را دریافت می‌کند و سپس یک منحنی درجه n ام از داده‌ها عبور می‌دهد به نحوی که بهترین انطباق ممکن را داشته باشد (حداقل مربعات). 

2- p = poly1d (z)

یک تابع چند جمله‌ای از ضرایب می‌سازد.



بررسی یک مثال از مبحث برازش منحنی:

from numpy import *

x = array ([0.0 , 1.0 , 2.0 , 3.0 , 4.0 , 5.0])

y = array ([0.0 , 0.8 , 0.9 , 0.1 , -0.8 , -1.0])

z = polyfit (x, y, 3)

p = poly1d (z)

xs = [ 0.1 * i for i in range (50)]

ys = [p ( x ) for x in xs]


from pylab import *

plot (x, y, 'o', label='data')

plot (xs, ys, label='fitted curve')

ylabel ('y')

xlabel ('x')

show ()


۰ نظر ۰۴ شهریور ۹۶ ، ۰۸:۳۶
صادق سلمانی

یک توضیح در مورد عکس: این عکس را در یکی از پارک‌های اصفهان، در یک روز بارانی و در آب و هوایی بسیار مطلوب گرفته‌ام. هیچ ارتباطی هم بین من و این حیوان (که به طرز بسیار هنرمندانه از باقیمانده تنه یک درخت حاصل شده) وجود ندارد؛ چراکه او به مکاری معروف است و من نامم صادق است:) راستی کلاً لباس‌های من امسال همین‌ها بودند و در تمام عکس‌ها با این تیپ هستم!


چند مورد از فعالیت‌هایی را که در سال 95 انجام داده‌ام در اینجا لیست کرده‌ام. به نظرم مشاهده آن‌ها در اسفند 96 و مقایسه آن با کارهایی که در طول سال 96 انجام خواهم دید خیلی لذت بخش میتونه باشه. 

1- چند وقت پیش با یکی از بهترین دوستانم و در واقع یکی از معدود دوستانم (مدتی است دایره دوستانم را تنگ‌تر کرده‌ام) یک تصمیم انقلابی گرفتیم (این دوستم ان شاءالله در ماه‌های آتی برای ادامه تحصیل در مقطع دکترا به کانادا و یکی از دانشگاه‌های بسیار خوب آن خواهد رفت). البته ما چند ماه پیش هم در این پست یک تصمیم جدی گرفته بودیم و اتفاقاً به خوبی هم اجرا شد.

دنبال راه حلی برای کم کردن نویزهای محیطی بودیم، که یکی از مهمترین آن‌ها تلگرام و شبکه‌های اجتماعی بود. در همان شب تصمیم گرفتیم که تمام افراد داخل لیست تلگرام را میوت (mute) کنیم و اینجوری کسی نمیتونه باعث عدم تمرکز ما بشه. مدتی است که از این کار گذشته و من به شدت راضی هستم و حس می‌کنم چندین ساعت در روز، وقت اضافه می‌آورم و می‌توانم به کارهای دیگرم برسم. تمام شبکه‌های اجتماعی مثل اینستاگرام و فیس‌بوک را هم دی اکیتو کرده‌ام (البته مدت بسیار زیادی است که هیچ فعالیتی در فیس بوک ندارم و چند سال پیش صرفاً به دلیل کنجکاوی وارد آن شدم و بعد هم متوجه شدم چندان به کارم نمی‌آید و فقط وقتم را تلف می‌کند). 

2- خدا را شکر مسیر جدید و مهمی را هم برای ادامه زندگی کاری و تحصیلی خودم ترسیم کرده‌ام و کمی هم به آن ورود پیدا کرده‌ام و همین روزهاست که آن را به طور جدی برای حداقل 3 سال به صورت مستمر ادامه دهم تا کم کم نتایج آن مشاهده شود و به دستاوردهای دلخواهم برسم (با تشکر از محمدرضا شعبانعلی و دوستان متممی که در این دو سه سال اخیر چراغ راه من بوده‌اند). 

3- سعی کرده‌ام که بتوانم فقط بر روی یک کار تمرکز کنم ولی هنوز موفق به این کار نشده‌ام. هنوز کارهای ناتمامی دارم که از یکی دو سال قبل شروع شده‌اند ولی به دلایلی برخی از آن‌ها در حال طی کردن مسیر فرسایشی هستند و بایدِ بایدِ باید قبل از سربازی (تیرماه) پرونده آن‌ها را ببندم.

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

5- بالاخر بعد از دو سال طفره رفتن، یک زبان خارجی به غیر از انگلیسی را در دی ماه شروع کردم و با قدرت در حال جلو رفتن هستم. انگیزه بسیاری برای یادگیری آن دارم و حس می‌کنم دنیای جدیدی به روی من باز شده است. 

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

7- حس خیلی خوبی نسبت به کار در ایران پیدا کرده‌ام و دیگه گزینه‌هایی مثل اپلای در ذهنم مانور نمی‌دهند و با خیال راحت می‌تونم برنامه‌ریزی کنم.

8- و اما مدتی است که تصمیم گرفته‌ام در این سایت هم کمتر بنویسم و مدتی را به گوشه‌نشینی سپری کنم و در خلوت خودم به کارها و اهدافم بپردازم؛ اهدافی که مسیرشان نیز جذاب است. هرچند بر خلاف خیلی از افراد که می‌گویند جذاب بودن مسیر کافیه، به نظرم این حرف‌ها برای سن من نیست و من دوست دارم که نتیجه تلاش‌هایم را در قالب رسیدن به اهدافم ببینم. شاید سال‌های آینده خود طی مسیر جذابیت کافی را برای من داشته باشه ولی در حال حاضر باید به نتیجه برسم و آخر مسیر را ببینم تا اون حس را به خوبی درک کنم و در جایگاهی باشم که بگویم من نیازی به رسیدن به قله ندارم و خود مسیر برایم کافی است. 

9- تماشای تلویزیون و پیگیری اخبار منفی و همچنین خبرهای مربوط به حوزه ورزش و فوتبال را نیز به طور کامل کنار گذاشته‌ام. برای پیگیری اخبار مفید به کانال تلگرام رهبری مراجعه می‌کنم و برای دیدن برنامه‌های دلخواهم نیز از اینترنت استفاده می‌کنم.

10- یکی از بهترین اوقات من زمانی است که وبلاگ دوستان متممی را مطالعه می‌کنم. واقعاً لذت بخش است.

11- بهترین تفریح من در سال 95، پیاده‌روی در حاشیه زاینده‌رود بوده است. پیاده‌روی با بهترین دوستم که  اتفاقاً هم پسرخاله هستیم و هم پسرعمو و البته بیشتر در جایگاه برادری هستیم. متأسفانه تا ماه‌های آینده به دلیل سربازی ممکن است به مدت دو سال جدا شویم و کمتر همدیگه رو ببینیم.

پی نوشت یک: با عرض معذرت برخی جاها را کمی مبهم نوشته‌ام؛ زیرا امکان توضیحات بیشتر وجود نداشت ولی دوستان نزدیک متوجه خواهند شد.

پی نوشت دو: این قسمت را چند روز بعد و پس از انتشار پست محمدرضا شعبانعلی در مورد «مهاجرت و ادامه تحصیل» اضافه کرده‌ام:

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

خوشحالم که من و دوستم زودتر این مهاجرت را شروع کردیم.

۲ نظر ۲۶ اسفند ۹۵ ، ۰۰:۵۰
صادق سلمانی

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

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

تذکر: برای مطالعه توضیحات در مورد روش رانگ کاتا-2 به کتاب «کاربرد ریاضیات در مهندسی شیمی - روش های عددی» نوشته دکتر خراط مراجعه کنید.

خلاصه این روش:


در اینجا قصد دارم به بررسی یک مثال به روش رانگ کاتا - 2 بپردازم. قبلاً این مثال را به روش اویلر نیز حل کرده ام (این پست).

مثال:

معادله دیفرانسیل زیر را با استفاده از روش رانگ کاتا مرتبه دوم و برای حالت h = 0.5 حل کنید و مقدار تابع را تا x = 3.5 محاسبه کنید.


حل با استفاده از زبان برنامه نویسی پایتون (کدنویسی در محیط Spyder):
import numpy as np
from matplotlib import pyplot as plt
x0=1
y0=1
xf=3.5
n=6
h=(xf-x0)/(n-1)
x=np.linspace(x0,xf,n)
y=np.zeros([n])
y[0]=y0
for i in range(1,n):
    k1=h*x[i-1]*y[i-1]**(1/3)
    k2=h*(x[i-1]+h)*(y[i-1]+k1)**(1/3)
    y[i]=y[i-1]+0.5*(k1+k2)
for i in range(n):
    print(x[i],y[i])
plt.plot(x,y,'o')
plt.xlabel('value of x')
plt.ylabel('value of y')
plt.title('Approximate Solution with RK-2 Method')
plt.show()
نتایج:

1.0    1.0
1.5    1.67926784096
2.0    2.80994158899
2.5    4.52558068947
3.0    6.96573342035
3.5    10.2725017487

۰ نظر ۲۲ اسفند ۹۵ ، ۲۳:۴۰
صادق سلمانی

برای مطالعه مبحث «چندجمله‌ای‌های حداقل مربعات» به کتاب «کاربرد ریاضیات در مهندسی شیمی - روش های عددی» که دکتر خراط نوشته اند مراجعه کنید. البته منابع مختلف دیگری هم در اینترنت موجود هست که به طور کامل توضیح داده اند. در کتاب دکتر خراط تمام روش های عددی و ریاضیاتی به طور مفصل و به همراه مثال توضیح داده شده اند که واقعا عالی هست.


مثال: از پنج نقطه داده شده در زیر یک سهمی از روش حداقل مجموع مربعات خطا بدست آورید:

(-2,4) , (-1,3) , (2,4) , (3,1) , (4,2)


import numpy as np

import matplotlib.pyplot as plt

from scipy.optimize import curve_fit  # Use non-linear least squares to fit a function, f, to data.

xdata=np.array([-2,-1,2,3,4])  # fit this data with a function

ydata=np.array([4,3,4,1,2])


def func(x,p1,p2,p3):

    return p1*x**2+p2*x+p3   # I’d like to fit this function using nonlinear least squares.


popt,pcov=curve_fit(func,xdata,ydata,p0=(3,1,2))

print('parrameters=',popt)   # The variable popt contains the fit parameters


p1=popt[0]

p2=popt[1]

p3=popt[2]

residuals = func(xdata,p1,p2,p3)-ydata 

print('residuals=',residuals)


fres = sum(residuals**2)

print('fres=',fres)



xfit = np.linspace(-3,6)

yfit = func(xfit, popt[0], popt[1], popt[2])

plt.plot(xdata,ydata,'r.')

plt.plot(xfit,yfit,'b-') 

plt.show()

خروجی:

parrameters= [-0.06280788 -0.21305419  3.48275862]

residuals= [-0.34236453  0.63300493 -1.19458128  1.27832512 -0.37438424]

fres= 3.71921182266


منابع تکمیلی:

http://www.walkingrandomly.com/?p=5215

https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html

۰ نظر ۰۶ اسفند ۹۵ ، ۱۳:۴۷
صادق سلمانی


چندین سال بود که هرچه اراده می کردم تا یک زبان برنامه نویسی را یاد بگیرم، هر بار نیمه تمام رها میشد. یک مدت متلب کار کردم و چندین آموزش ویدئویی از سایت فرادرس تهیه کردم و حتی حدود شصت صفحه جزوه هم نوشتم ولی در نهایت به انجام پروژه ختم نشد و آن را کنار گذاشتم. در یک بازه زمانی، به دلیل شغل پسرخاله ام که برنامه نویسی با سی شارپ است، این زبان را نیز شروع کردم ولی باز رها شد. آن موقع با هر بار رها شدن یادگیری برنامه نویسی، بسیار خودم را سرزنش می کردم و تصور می کردم که استعداد این کار را ندارم. 

چند ماه پیش بود که دوباره تصمیم گرفتم برنامه نویسی را شروع کنم. ولی این بار واقعاً نیاز داشتم که یاد بگیریم. در یک پروژه ای که کاملاً به صورت اختیاری آن را استارت زده بودم، مجبور شدم که یک الگوریتم ریاضیاتی را کدنویسی کنم. در ابتدا از چند تا از دوستانم خواستم که آن را در متلب برای من کدنویسی کنند و در اختیارم قرار دهند. ولی هر بار از انجام آن طفره رفتند و در نهایت خودم ماندم و خودم.

این شد که تصمیم گرفتم شروع کنم، ولی با راه حلی متفاوت. در سایت دانشگاه های مختلف و برتر دنیا جستجو کردم تا ببینم آن ها چه زبانی را تدریس می کنند. بعد از دو سه روز زبان مورد نظرم را یافتم. حال به مرحله یادگیری آن زبان رسیده بودم. به طور اتفاقی متوجه شدم که سایت فرادرس آموزش ویدئویی آن زبان برنامه نویسی را دارد. بنابراین، سریعاً آن را خریدم و در حدود سی ساعت فیلم آموزشی دیدم و جزوه نوشتم. فکر می کنم الآن جزوه ام حدود هشتاد صفحه هست. از آنجایی که تا به حال اسم این زبان را نشنیده بودم و همچنین کسی نیز به من معرفی نکرده بود، اشتیاق زیادی برای یادگیری آن داشتم و لذت می بردم. پس از چندین روز، کل آموزش ها را مشاهده کردم و کلیات آن را یاد گرفتم. یک شب بعد از دفاع از پایان نامه ارشدم، در حالیکه تنها در اتاق بودم و همه دوستان به خانه رفته بودند، تصمیم گرفتم که آن الگوریتم را کدنویسی کنم. خلاصه حدود 5 ساعت وقت گذاشتم و در نهایت موفق به کدنویسی آن شدم. چنان لذتی داشت که نگو. به قول معروف نیازی به منت کشی کسی نیز نبود. 

قصدم از این مطلب این هست که بگویم بهترین راه حل برای یادگیری آن است که در ابتدا یک مسأله برای خودمان تعریف کنیم و در حقیقت فرایند یادگیری به صورت پروژه-محور باشد. این در حالی است که اکثر ما، ابتدا چندین نرم افزار را یاد می گیریم و سپس به فکر استفاده از آن ها می افتیم. برای همین هست که همیشه همه کاره و هیچ کاره ایم. همه نرم افزارها را بلد هستیم ولی دقیقاً نمی دانیم که کجاها مورد استفاده قرار می گیرند و در پشت نرم افزارها چه خبر است. خیلی سخت است که ابتدا یک نرم افزار را یاد بگیریم و سپس به فکر ایجاد راه هایی برای استفاده از آن ها و کسب درآمد باشیم. پیشنهاد مناسب آن است که تا زمانی که به مسأله ای برنخورده اید و یا چالش و درگیری ذهنی ندارید، سراغ یادگیری هیچ نرم افزاری نروید؛ چرا که به سرعت فراموش می کنید و یادگیری شما کاربردی نخواهد بود.

بهترین ایجاد کننده انگیزه در وجود من برای یادگیری هر موضوع جدیدی، کسب درآمد از آن و تبدیل مستقیم دانش به ارزش می باشد؛ خواه در کوتاه مدت و خواه در بلند مدت.

۱ نظر ۰۵ اسفند ۹۵ ، ۰۴:۵۴
صادق سلمانی

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

from sympy import*

list1=[]

for i in primerange(7, 18):

    list1.append(i)

print(list1)

[7, 11, 13, 17] :جواب

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

>>> from sympy import*

>>> isprime(13)

 True


تجزیه یک عدد به عوامل اول:

from sympy import*

print(S(45).factors())

{3: 2, 5: 1} :جواب

۰ نظر ۱۰ آذر ۹۵ ، ۲۰:۳۳
صادق سلمانی

برای محاسبه فاکتوریل یک عدد (مثلاً !5) از دو روش زیر استفاده می کنیم:

روش اول:

x=1

num=int(input("enter a positive number:"))

for i in range(1,num+1):

    x=x*i

print("the factorial of",num,"is",x)

جواب: the factorial of 5 is 120

روش دوم:
from math import factorial
print (factorial(10))
جواب: 120
۰ نظر ۱۰ آذر ۹۵ ، ۲۰:۰۴
صادق سلمانی

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


۰ نظر ۲۹ آبان ۹۵ ، ۲۱:۴۲
صادق سلمانی