17
ی عت ن ص گاه ش ن دا- ی مهساز ا رن بی ن ا ب م ف# ی ر ش ی ’ه’’س’ا’ز’ م ا’ ر’ن’ ب ی’ ن ا’ ’ب’ مFUNDAMENTALS OF PROGRAMMING ردِ خ ق ل ا ام خ هن ب ری گل# ی2 ب ر# ی5 ظ ن ی ن مدزس: سه ل خ24 ( دی عد ات ب س حا م: 2 ) سال دوم م# ی ب1392 - 1393

مبانی برنامهسازی Fundamentals of Programming

Embed Size (px)

DESCRIPTION

به‌نام خالق خِرد. مبانی برنامه‌سازی Fundamentals of Programming. مدرس: بی‌نظیر بیگلری. جلسه 24: محاسبات عددی ( 2 ). عناوین. انتگرال ( scipy.integrate ) انتگرال دوگانه ( scipy.integrate ) یافتن ریشه معادلات ( scipy.optimize ) حل معادلات غیرخطی ( scipy.optimize ) - PowerPoint PPT Presentation

Citation preview

Page 1: مبانی برنامهسازی Fundamentals of Programming

مبانی برنامه سازی - دانشگاه صنعتی شریف

مبانی‌برنامه‌سازیFUNDAMENTALS OF

PROGRAMMING

به‌نام‌خالق‌رد خ�

مدرس:‌بی‌نظیر‌بیگلری

:‌محاسبات‌24جلسه‌(2عددی‌)

1393-1392 نیم سال دوم

Page 2: مبانی برنامهسازی Fundamentals of Programming

عناوین

مبانی برنامه سازی - دانشگاه صنعتی شریف

2

انتگرال(scipy.integrate)

( انتگرال دوگانهscipy.integrate)

( یافتن ریشه معادالتscipy.optimize)

( حل معادالت غیرخطیscipy.optimize)

( درون یابیscipy.optimize)

( ماتریس ها و توابع جبر خطیscipy.linalg)

( حل معادالت خطیscipy.linalg)

24جلسه دوم 1393-1392نیم سال

Page 3: مبانی برنامهسازی Fundamentals of Programming

LAMBDAعبارت های

مبانی برنامه سازی - دانشگاه صنعتی شریف

3

عبارت ه;ایlambda ب;ه لح;اظ گرام;ری همانن;د تواب;ع هس;تند ک;ه تنه;ا از ی;ک خ;ط تش;کیل ش;ده اند پس نمی توانن;د ش;امل حلق;ه باش;ند و فق;ط بای;د

در یک عبارت درست پایتونی بیان شوند.

24جلسه

lambda arguments: expression

>>> f = lambda x: x**2 + 2*x - 5 >>>f(4.5)

دوم 1393-1392نیم سال

Page 4: مبانی برنامهسازی Fundamentals of Programming

انتگرال

مبانی برنامه سازی - دانشگاه صنعتی شریف

4

زیرپکیجscipy.integrate.شامل چندین تکنیک انتگرال گیری است

انتگ;رال عم;ومی توس;ط ت;ابعquad پیاده س;ازی شده اس;ت ک;ه روی ی;ک تابع با یک متغیر در بازه مشخصی انتگرال می گیرد.

( این ت;ابع در ب;ازهa, b از ت;ابع )func انتگ;رال می گ;یرد. گون;ه a و b ن;وع float :است و می توانند باشند numpy.inf

ف;رض کنی;د می خ;واهیم از ت;ابع بس;ل R [ انتگ;رال 4.5, 0 در ب;ازه ]2.5مثًالبگیریم:

24جلسه

scipy.integrate.quad)func, a, b(

دوم 1393-1392نیم سال

Page 5: مبانی برنامهسازی Fundamentals of Programming

محاسبه انتگرال به صورت عددی

مبانی برنامه سازی - دانشگاه صنعتی شریف

5

هم;ان طور ک;ه می دانیم انتگ;رال ب;ه مع;نی س;طح زی;ر نم;ودار ی;ک ت;ابعاس;ت؛ ب;رای محاس;به این س;طح ب;ه ص;ورت ع;ددی ب;ازه م;ورد نظ;ر را ب;ه زی;ر بازه ه;ایی تقس;یم می ک;نیم و ب;ا محاس;به مس;احت های مس;تطیل های

به وجود آمده و جمع آنها تقریبی از انتگرال بدست می آوریم:

24جلسه دوم 1393-1392نیم سال

Page 6: مبانی برنامهسازی Fundamentals of Programming

محاسبه انتگرال به صورت )ادامه(عددی

مبانی برنامه سازی - دانشگاه صنعتی شریف

6

پس ب;رای محاس;به انتگ;رال، ب;ازه م;ورد نظ;ر را ب;ه زیربازه ه;ای مس;اویتقس;یم می ک;نیم و مق;دار ت;ابع را در نق;اط ابت;دایی زیربازه ه;ا در نظ;ر

گرفته و مساحت مستطیل ها را محاسبه و با هم جمع می کنیم:

24جلسه

def integrate(f, a, b, k = 100): ''' Integrate function f(x) along the interval [a, b] ''' sum = 0 dx = (b - a) / k for i in range(k): sum += dx * (f(a) + f(a + dx)) / 2 a += dx return sum

def f(x): ''' A sample function ''' return x ** 2 + 5 * x - 1

# Integrate f(x) along [0, 1]print(integrate(f, 0, 1))

دوم 1393-1392نیم سال

Page 7: مبانی برنامهسازی Fundamentals of Programming

انتگرال چندگانه

مبانی برنامه سازی - دانشگاه صنعتی شریف

7

گرفتن انتگ;رال دوگان;ه و س;ه گانه در تواب;عdblquad و tplquad ق;رارداده و انتگرال گ;یری ب;رای نظ;ر م;ورد ت;ابع تواب;ع، این ی;ا 4شده اس;ت. 6

آرگومان را به تناسب دریافت می کنند.

آنچ;ه ک;ه تواب;عquad، dblquad وtplquad برمی گردانن;د ی;ک دوت;ایی اس;تاز; ت;خمی;نی; اس;ت ی;ک ا;نتگ;رال دومین; مق;دا;ر اولین; مق;دا;ر ج;واب ک;ه

خطای محاسبه چرا که به صورت عددی محاسبه شده است.

24جلسه

scipy.integrate.dblquad)func, a, b, gfun, hfun( ∫

𝑎

𝑏

∫𝑔 𝑓𝑢𝑛

h 𝑓𝑢𝑛

𝑓𝑢𝑛𝑐

scipy.integrate.tplquad)func, a, b, gfun, hfun, qfun, rfun( ∫

𝑎

𝑏

∫𝑔 𝑓𝑢𝑛

h 𝑓𝑢𝑛

∫𝑞 𝑓𝑢𝑛

𝑟𝑓𝑢𝑛

𝑓𝑢𝑛𝑐  

∫0

𝑒−𝑥 𝑠𝑖𝑛𝑥𝑑𝑥print(integrate.quad(lambda x: exp(-x)*sin(x), 0, inf))(0.5000000000000002, 1.4875911931534648e-08)

دوم 1393-1392نیم سال

Page 8: مبانی برنامهسازی Fundamentals of Programming

یافتن ریشه معادالت

مبانی برنامه سازی - دانشگاه صنعتی شریف

8

در پکیجscipy.optimize تواب;ع مختلفی ب;رای بهینه س;ازی و ی;افتن ریش;ه معادالت غیرخطی وجود دارد.

یکی از این تواب;عroot اس;ت ک;ه ریش;ه ی;ک ت;ابع را پی;دا می کن;د و این ن;وع اولی;ه)از ب;ا ی;ک ح;دس ب;ه آن می دهیم ndarrayریش;ه را ( ک;ه م;ا

شروع می کند.

آنچ;ه ب;ه عن;وان مق;دار بازگش;تی برمی گردان;د ی;ک ش;یء از کًالسResult اس;ت ک;ه ج;واب در آن اس;ت و در xاس;ت ک;ه یکی از ویژگی ه;ای آن

حقیقت آرایه ریشه هاست.

24جلسه

scipy.optimize.root)func, x0(

''' Find root of equation: x - 2 cos(x) = 0'''def f(x): return x - 2 * cos(x)

res = optimize.root(f, 0)print('x= ',res.x)

x= [ 1.02986653]

دوم 1393-1392نیم سال

Page 9: مبانی برنامهسازی Fundamentals of Programming

یافتن ریشه [غیرخطی]معادالت

مبانی برنامه سازی - دانشگاه صنعتی شریف

9

پکیج چندمعادل;ه scipy.optimizeدر ریش;ه های ک;ه دارد وج;ود ت;ابعی ت;ابع ق;الب این معادل;ه در ک;ه پی;دا می کن;د را func(x)= 0)غ;یرخطی(

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

داش;ته درای;ه بای;د دوم آرگوم;ان تع;داد مجهول ه;ای معادل;ه، ب;ه بس;ته باشد.

24جلسه

scipy.optimize.fsolve)func, x0(

''' Solve the set of equations: x^2 - 2y = 5 x + y = -1'''

def func(x): return [ x[0] ** 2 - 2 * x[1] - 5, x[0] + x[1] + 1 ]

res = optimize.fsolve(func, [0, 0])print(res)

[ 1. -2.]

دوم 1393-1392نیم سال

Page 10: مبانی برنامهسازی Fundamentals of Programming

درون یابی

مبانی برنامه سازی - دانشگاه صنعتی شریف

10

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

هر دو استفاده می شود.

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

ا;ست که تابع ;یافت شده ا;ز ا;ین ر;وش از ;تمامی نقاط داده; شد;ه می گذرد.

اولین ت;ابع، ت;ابعinterp1d اس;ت ک;ه ی;ک ت;ابع یک-بع;دی را درون ی;ابی می کن;د)یع;نی دو آرای;ه از مق;ادیر ;م;ورد اس;تفاده در تخمین y و xت;ابع،; ی;ک ;ورود;ی دارد;(. در آن

ک;ه ا;س;ت ت;ابع، y=f(x)ت;ابعی ی;ک باش;د. یکس;ان آرای;ه ;بای;د دو ا;ن;دازه ه;ای ;این و خروج;ی آن ;خواهد; بود ک;ه از; تم;ام نقا;ط داده شده م;ی گ;ذرد.;

24جلسه

scipy.optimize.interp1d)x, y, kind=‘linear’(

دوم 1393-1392نیم سال

Page 11: مبانی برنامهسازی Fundamentals of Programming

)ادامه(درون یابی

مبانی برنامه سازی - دانشگاه صنعتی شریف

11

نوع درون ی;ابی را ب;ا ی;ک رش;ته ب;ه عن;وان آرگوم;ان ن;وع می ت;وان تع;ییننم;ود ک;ه ب;ه ط;ور پیش ف;رض خطی اس;ت. ان;واع دیگ;ری ک;ه می توان;د

،’slinear‘ج;ایی ک;ه ’ cubic‘ و ’nearest’، ‘zero’، ‘slinear’، ‘quadratic‘باش;د: ‘quadratic’ و ‘cubic ’ اش;اره دارن;د ب;ه درون ی;ابیspline مرتب;ه اول، دوم

یا سوم

24جلسه

scipy.optimize.rinterp1d)x, y, kind=‘linear’(

دوم 1393-1392نیم سال

Page 12: مبانی برنامهسازی Fundamentals of Programming

ماتریس ها و توابع جبرخطی

مبانی برنامه سازی - دانشگاه صنعتی شریف

12

تواب;ع ج;بر خطی در پکیجscipy.linalg ق;رار دارن;د و بس;یار متن;وع هس;تند از ب;ه بیش تعدادش;ان تواب;ع زی;ادی 50و پکیج این ت;ابع می رس;د. در

مربوط به ماتریس ها قرار دارد.

اولین ت;ابعی ک;ه مط;رح می ش;ود ت;ابعی اس;ت ک;ه معک;وس)وارون;ه( ی;کبای;د ی;ک م;اتریس م;ربعی ت;ابع م;اتریس را برمی گردان;د و ورودی این

باشد.

.همچنین نباید دترمینان آن صفر باشد

24جلسه

scipy.linalg.inv)A(

دوم 1393-1392نیم سال

Page 13: مبانی برنامهسازی Fundamentals of Programming

ماتریس ها و توابع جبرخطی)ادامه(

مبانی برنامه سازی - دانشگاه صنعتی شریف

13

.تابع بعدی، دترمینان یک ماتریس را برمی گرداند

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

.تابع بع;دی، مق;ادیر وی;ژه ماتریس ه;ا از مس;ئله عم;ومی مق;دار وی;ژه محاس;به می کند

از باشد مقدار x0 را كه به ازاي آن، این معادل;ه داراي جوابي مانند λمقداري م;تناظر با اين A بردار وی;ژه x می گويند و بردارAويژه يا مقدار مشخصه ماتريس

مقدار ويژه مي باشد.

ماتریسA ی;ا مختل;ط ی;ک م;اتریس م;ربعی اس;ت ک;ه درایه ه;ای آن اع;داد حقیقی هستند.

24جلسه

scipy.linalg.det)A(

Ax = x

scipy.linalg.eigvals)A(

دوم 1393-1392نیم سال

Page 14: مبانی برنامهسازی Fundamentals of Programming

ماتریس ها و توابع جبرخطی)ادامه(

مبانی برنامه سازی - دانشگاه صنعتی شریف

14

ان;دازه یکی از ت;ابع برمی گردان;د ی;ک آرای;ه تک-بع;دی ب;ه آنچ;ه ک;ه این ابعاد ماتریس است.

24جلسه

from scipy import linalgfrom numpy import *

a = array([[1, -3, 5], [2, 11, 0], [0, 2, 10]])

print(‘determinant = ’, linalg.det(a))print(‘eigenvalues = ’, linalg.eigvals(a))print(‘inverse = ’, linalg.inv(a))

b = 2 * a - 1print(‘b = 2 * a – 1 = ’, linalg.eigvals(b))

determinant = 190.0eigenvalues = [ 1.93552112 11.60737462 8.45710426]inverse = [[ 0.57894737 0.21052632 -0.28947368][-0.10526316 0.05263158 0.05263158][ 0.02105263 -0.01052632 0.08947368]]b = 2 * a – 1 = [ 2.9606702 17.48032641 20.5590034 ]

دوم 1393-1392نیم سال

Page 15: مبانی برنامهسازی Fundamentals of Programming

حل معادالت خطی

مبانی برنامه سازی - دانشگاه صنعتی شریف

15

در پکیجscipy.linalg ت;ابعی وج;ود دارد ک;ه معادل;ه ax = b را ح;ل می کن;د و aک;ه b ک;ه م;اتریس هس;تند a و ی;ک م;اتریس م;ربعی b ماتریس;ی

ابعاد از اندازه یکی با آن تعداد سطرهای برابر است.aاست که a : (M, M), b : (M,) or (M, N) 

آنچ;ه این ت;ابع برمی گردان;د م;اتریسx اس;ت ک;ه x : (M,) or (M, N) ndarray است.bکه شکل این ماتریس همانند ماتریس

24جلسه

scipy.linalg.solve)a, b(

from scipy import linalgfrom numpy import *

''' Solve the following set of equations: x - 2y = 5 x + y = -1'''a = array([[1, -2], [1, 1]])b = array([5, -1])

print(linalg.solve(a, b))

[ 1. -2.]

دوم 1393-1392نیم سال

Page 16: مبانی برنامهسازی Fundamentals of Programming

تمرین

مبانی برنامه سازی - دانشگاه صنعتی شریف

16

جواب معادالت خطی زیر را با استفاده ازscipy.linalg.محاسبه کنید

حل انتگرالxsin(x)( 2, 0 به صورت عددی در بازهπ)

24جلسه

{2x  +  3 y  −  z  = 5    3x  −  2 y  +  4 z  = 6 − x  +  2y  − z  =  12 

دوم 1393-1392نیم سال

Page 17: مبانی برنامهسازی Fundamentals of Programming

ادامه مطلب در جلسه بعد

مبانی برنامه سازی - دانشگاه صنعتی شریف

17

مدیریت‌استثناءها

24جلسه دوم 1393-1392نیم سال