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

ولتست، یادگیری ماشین، پایتون، فرازآوری مصنوعی

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

ولتست، یادگیری ماشین، پایتون، فرازآوری مصنوعی

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

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

آخرین نظرات

۱۰ مطلب در اسفند ۱۳۹۵ ثبت شده است


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

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

سوالاتی از قبیل:

  • اپلای کنم یا نه؟
  • دکترا بخوانم یا نه؟
  • کدام دانشگاه ادامه تحصیل بدهم؟
  • چه گرایشی بروم؟
  • چه مهارت هایی کسب کنم؟
  • چگونه توانمندی ها و مهارت هایم را بیشتر کنم؟
  • چگونه فردی متخصص بشوم؟
  • چه نرم افزارهایی مهمتر هستند؟
  • چگونه حوزه مورد علاقه ام را پیدا کنم؟
  • چگونه درآمد کسب کنم؟
  • چگونه روی برند شخصی خودم کار کنم؟
  • و سوالات متنوع دیگر


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

1- با فقط بخشی از پول اپلای چه کارهایی می توانیم در ایران انجام دهیم تا به درآمد و تخصص بیشتری برسیم؟

2- اهمیت ریاضیات در آینده هر مهندس؟

3- چگونه به کدنویسی علاقمند شویم؟ چه زبانی را انتخاب کنیم؟

4- چگونه هندبوک شخصی خود را تألیف کنیم و از آن در مسیر پیشرفت تخصصی خود کمک بگیریم؟

5- اهمیت فهم و درک پشت صحنه نرم افزارها؟

6- چرا انجام پروژه با داده های واقعی کارایی ما را افزایش می دهد؟

7- چگونه با وبلاگ نویسی و تولید محتوای اصیل، یک رزومه آنلاین برای خود ایجاد کنیم؟

8- چرا تهیه گزارش از پروژه ها و فعالیت هایمان حائز اهمیت است؟

9- چند نکته در مورد کنکور ارشد نفت

10- آیا در این اوضاع و شرایط باید تغییر رشته دهیم؟!!

11- مجلات و کنفرانس ها و دوره های آموزشی رو پیگیری کنید

12- تمرکز و تخصص گرایی در انجام فعالیت ها

و ...

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

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


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

نویسنده: صادق سلمانی

تعداد صفحات: 31 صفحه

سال انتشار: اسفند 95

موضوع کتاب: راهنمای عملی دست‌یابی به تخصص در حوزه‌های مورد علاقه‌تان



قیمت محصول: 10 هزار تومان 



دوستانی که این کتاب را تهیه می کنند، تقاضا دارم بعد از مطالعه دقیق کتاب، نظرات و تجربیات خود را در مورد این کتاب در زیر این پست با سایر افراد به اشتراک بگذارند.
۰ نظر ۲۹ اسفند ۹۵ ، ۰۲:۱۶
صادق سلمانی

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


چند مورد از فعالیت‌هایی را که در سال 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

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

یادگیری همراه با اجرای پروژه

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

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

در سال اول مقطع کارشناسی ارشد با دکتر کرد آشنا شدم و کلاس حل تمرین دانشجویان سال چهارم کارشناسی در دانشکده نفت به من واگذار  شد (از زحمت های ایشان و موقعیتی که برای من فراهم نمودند بسیار متشکرم).

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

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

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

و اما خط مشی من در اجرای پروژه های چاه آزمایی بر اساس اصل بیان شده توسط نسیم طالب می باشد:

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


تماس با من برای شروع همکاری:

Salmani.sgh@gmail.com

صادق سلمانی

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

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

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

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

روش اویلر:


در اینجا قصد دارم به بررسی یک مثال به روش اویلر بپردازم.

مثال:

معادله دیفرانسیل زیر را با استفاده از روش اویلر و برای حالت 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):

    y[i]=y[i-1]+h*x[i-1]*y[i-1]**(1/3)

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 Euler Method')

plt.show()


نتایج:

1.0   1.0

1.5   1.5

2.0   2.35853568191

2.5   3.6896463079

3.0   5.62119172863

3.5   8.28825954375


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

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

واقعا همین حالا یک سوالی از خودمان بپرسیم: 

آیا تخصص یا مهارت و یا ویژگی منحصر به فردی داریم تا بتوانیم دیگران را نسبت به خودمان قانع کنیم؟

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

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


مثال:

# the function to be integrated

def func(x):

    return x**2

# define variables

a = 1.          # left boundary of area

b = 4.          # right boundary of area

dx = 1          # width of the trapezoids

# calculate the number of trapezoids

n = int((b - a) / dx)

# define the variable for area

Area = 0

# loop to calculate the area of each trapezoid and sum.

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

    #the x locations of the left and right side of each trapezpoid

    x0 = a+(i-1)*dx

    x1 = a+i*dx

    #the area of each trapezoid

    Ai = dx * (func(x0) + func(x1))/ 2.

    # cumulatively sum the areas

    Area = Area + Ai

#print out the result.

print ("Area = ", Area)

نتیجه:

Area = 21.5


یک نمونه کد دیگر برای انتگرال گیری عددی به روش ذوزنقه ای:

import numpy as np

x = np.linspace(1, 4, num=4)

y = x**2

I = np.trapz(y, x)

error = (I - 4)/4

print(I, error)

نتیجه:

I = 21.5

error = 4.375

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

در نرم افزار چاه آزمایی سفیر یک ماژولی هست به نام KIWI که مخفف عبارت Kappa intelligent well test interpretation هست. 

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

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

پی نوشت: موضوع این انیمیشن با اون مبحث نرم افزار سفیر هیچ ارتباطی نداشت ولی چون این روزها خیلی درگیر این نرم افزار هستم، به محض دیدن نام این انیمیشن، یاد ماژول KIWI در این نرم افزار افتادم:)

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

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


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

(-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 ساعت وقت گذاشتم و در نهایت موفق به کدنویسی آن شدم. چنان لذتی داشت که نگو. به قول معروف نیازی به منت کشی کسی نیز نبود. 

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

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

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