Upload
catherine-beasley
View
67
Download
2
Embed Size (px)
DESCRIPTION
بهنام خالق خِرد. مبانی برنامهسازی Fundamentals of Programming. مدرس: بینظیر بیگلری. جلسه 24: محاسبات عددی ( 2 ). عناوین. انتگرال ( scipy.integrate ) انتگرال دوگانه ( scipy.integrate ) یافتن ریشه معادلات ( scipy.optimize ) حل معادلات غیرخطی ( scipy.optimize ) - PowerPoint PPT Presentation
Citation preview
مبانی برنامه سازی - دانشگاه صنعتی شریف
مبانیبرنامهسازیFUNDAMENTALS OF
PROGRAMMING
بهنامخالقرد خ�
مدرس:بینظیربیگلری
:محاسبات24جلسه(2عددی)
1393-1392 نیم سال دوم
عناوین
مبانی برنامه سازی - دانشگاه صنعتی شریف
2
انتگرال(scipy.integrate)
( انتگرال دوگانهscipy.integrate)
( یافتن ریشه معادالتscipy.optimize)
( حل معادالت غیرخطیscipy.optimize)
( درون یابیscipy.optimize)
( ماتریس ها و توابع جبر خطیscipy.linalg)
( حل معادالت خطیscipy.linalg)
24جلسه دوم 1393-1392نیم سال
LAMBDAعبارت های
مبانی برنامه سازی - دانشگاه صنعتی شریف
3
عبارت ه;ایlambda ب;ه لح;اظ گرام;ری همانن;د تواب;ع هس;تند ک;ه تنه;ا از ی;ک خ;ط تش;کیل ش;ده اند پس نمی توانن;د ش;امل حلق;ه باش;ند و فق;ط بای;د
در یک عبارت درست پایتونی بیان شوند.
24جلسه
lambda arguments: expression
>>> f = lambda x: x**2 + 2*x - 5 >>>f(4.5)
دوم 1393-1392نیم سال
انتگرال
مبانی برنامه سازی - دانشگاه صنعتی شریف
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نیم سال
محاسبه انتگرال به صورت عددی
مبانی برنامه سازی - دانشگاه صنعتی شریف
5
هم;ان طور ک;ه می دانیم انتگ;رال ب;ه مع;نی س;طح زی;ر نم;ودار ی;ک ت;ابعاس;ت؛ ب;رای محاس;به این س;طح ب;ه ص;ورت ع;ددی ب;ازه م;ورد نظ;ر را ب;ه زی;ر بازه ه;ایی تقس;یم می ک;نیم و ب;ا محاس;به مس;احت های مس;تطیل های
به وجود آمده و جمع آنها تقریبی از انتگرال بدست می آوریم:
24جلسه دوم 1393-1392نیم سال
محاسبه انتگرال به صورت )ادامه(عددی
مبانی برنامه سازی - دانشگاه صنعتی شریف
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نیم سال
انتگرال چندگانه
مبانی برنامه سازی - دانشگاه صنعتی شریف
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نیم سال
یافتن ریشه معادالت
مبانی برنامه سازی - دانشگاه صنعتی شریف
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نیم سال
یافتن ریشه [غیرخطی]معادالت
مبانی برنامه سازی - دانشگاه صنعتی شریف
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نیم سال
درون یابی
مبانی برنامه سازی - دانشگاه صنعتی شریف
10
ت;ابع درون ی;ک ی;افتن مق;دار در محاس;بات ع;ددی، درون ی;ابی روش;ی اس;ت ب;رای ب;ازه،; ;وقت;یک;ه م;ق;دار ;ت;ابع; در ت;ع;دادی; از ;نق;اط گسس;ته; مع;ل;وم; ;اس;ت. ;ی;ا;فتن م;ق;دار R ;از ;رو;ش ه;ای ;مش;ا;به;ی ب;رای ت;ا;بع; د;ر خ;ارج ;از ;ای;ن ب;ازه ر;ا ب;رون ی;ابی; ;گو;ین;د; ک;ه; عموم;ا
هر دو استفاده می شود.
در بس;یاری از کاربرده;ا در مهندس;ی و عل;وم پای;ه تع;دادی نق;اط معل;وم در دس;ترساس;ت، ;مانن;د ;داده ه;ا;ی بدس;ت آ;م;ده از; آزم;ایش و ی;ا ;نم;ونه ب;رداری. در چ;نین م;واردی از یکی باش;د. نزدی;ک ت;ر د;اده ه;ا; ی;افت ک;ه حتی ا;لمق;دور ;ب;ه ت;ابعی س;ع;ی می ش;ود روش ه;ای ;ی;افتن; چ;نین ت;ا;بعی درون ;ی;ابی ;می باش;د ک;ه وج;ه ;مشخص;ه این ;روش آن
ا;ست که تابع ;یافت شده ا;ز ا;ین ر;وش از ;تمامی نقاط داده; شد;ه می گذرد.
اولین ت;ابع، ت;ابعinterp1d اس;ت ک;ه ی;ک ت;ابع یک-بع;دی را درون ی;ابی می کن;د)یع;نی دو آرای;ه از مق;ادیر ;م;ورد اس;تفاده در تخمین y و xت;ابع،; ی;ک ;ورود;ی دارد;(. در آن
ک;ه ا;س;ت ت;ابع، y=f(x)ت;ابعی ی;ک باش;د. یکس;ان آرای;ه ;بای;د دو ا;ن;دازه ه;ای ;این و خروج;ی آن ;خواهد; بود ک;ه از; تم;ام نقا;ط داده شده م;ی گ;ذرد.;
24جلسه
scipy.optimize.interp1d)x, y, kind=‘linear’(
دوم 1393-1392نیم سال
)ادامه(درون یابی
مبانی برنامه سازی - دانشگاه صنعتی شریف
11
نوع درون ی;ابی را ب;ا ی;ک رش;ته ب;ه عن;وان آرگوم;ان ن;وع می ت;وان تع;ییننم;ود ک;ه ب;ه ط;ور پیش ف;رض خطی اس;ت. ان;واع دیگ;ری ک;ه می توان;د
،’slinear‘ج;ایی ک;ه ’ cubic‘ و ’nearest’، ‘zero’، ‘slinear’، ‘quadratic‘باش;د: ‘quadratic’ و ‘cubic ’ اش;اره دارن;د ب;ه درون ی;ابیspline مرتب;ه اول، دوم
یا سوم
24جلسه
scipy.optimize.rinterp1d)x, y, kind=‘linear’(
دوم 1393-1392نیم سال
ماتریس ها و توابع جبرخطی
مبانی برنامه سازی - دانشگاه صنعتی شریف
12
تواب;ع ج;بر خطی در پکیجscipy.linalg ق;رار دارن;د و بس;یار متن;وع هس;تند از ب;ه بیش تعدادش;ان تواب;ع زی;ادی 50و پکیج این ت;ابع می رس;د. در
مربوط به ماتریس ها قرار دارد.
اولین ت;ابعی ک;ه مط;رح می ش;ود ت;ابعی اس;ت ک;ه معک;وس)وارون;ه( ی;کبای;د ی;ک م;اتریس م;ربعی ت;ابع م;اتریس را برمی گردان;د و ورودی این
باشد.
.همچنین نباید دترمینان آن صفر باشد
24جلسه
scipy.linalg.inv)A(
دوم 1393-1392نیم سال
ماتریس ها و توابع جبرخطی)ادامه(
مبانی برنامه سازی - دانشگاه صنعتی شریف
13
.تابع بعدی، دترمینان یک ماتریس را برمی گرداند
ورودی این ت;ابع، ی;ک م;اتریس م;ربعی اس;ت و خ;روجی آن ی;ک ع;دد ممیزش;ناور ی;امختلط است که همان دترمینان ماتریس است.
.تابع بع;دی، مق;ادیر وی;ژه ماتریس ه;ا از مس;ئله عم;ومی مق;دار وی;ژه محاس;به می کند
از باشد مقدار x0 را كه به ازاي آن، این معادل;ه داراي جوابي مانند λمقداري م;تناظر با اين A بردار وی;ژه x می گويند و بردارAويژه يا مقدار مشخصه ماتريس
مقدار ويژه مي باشد.
ماتریسA ی;ا مختل;ط ی;ک م;اتریس م;ربعی اس;ت ک;ه درایه ه;ای آن اع;داد حقیقی هستند.
24جلسه
scipy.linalg.det)A(
Ax = x
scipy.linalg.eigvals)A(
دوم 1393-1392نیم سال
ماتریس ها و توابع جبرخطی)ادامه(
مبانی برنامه سازی - دانشگاه صنعتی شریف
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نیم سال
حل معادالت خطی
مبانی برنامه سازی - دانشگاه صنعتی شریف
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نیم سال
تمرین
مبانی برنامه سازی - دانشگاه صنعتی شریف
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نیم سال
ادامه مطلب در جلسه بعد
مبانی برنامه سازی - دانشگاه صنعتی شریف
17
مدیریتاستثناءها
24جلسه دوم 1393-1392نیم سال