You are on page 1of 3

‫به نام خدایی که بیدریغ ستّار العیوب است‪...

‬‬

‫مؤلف‪ :‬سجّاد رحمانی‬

‫هرگونه کپی برداری غیرقانونی و حرام است و هیچ گونه رضایت مولف را در بر ندارد‬

‫تمرین سری ‪5‬‬


‫‪ -1‬اگر نیاز باشد در سوالی از پایتون استفاده نکنید‪ ،‬صراحتاً بیان میشود‪.‬‬

‫‪ -2‬ممکن است در جواب بعضی سواالت نیاز باشد بگویید با خطا مواجه میشویم و توضیح دهید‪[ .‬پس لزوماً قرار‬
‫نیست چیزی که خواسته شده واقعاً صحیح باشد]‬

‫پس تاکید مجدد‪ :‬اگر جایی با خطا مواجه میشه‪ ،‬کامل توضیح بدید [کاملِ کامل!]‬

‫‪ -3‬در هیچ جای این تمرین حق ندارید از مطالبی استفاده کنید که ما آموزش ندادیم‪.‬‬

‫متن سوال‬ ‫شماره‬


‫در این سوال میتوانید از پایتون استفاده کنید‬ ‫‪1‬‬
‫عدد ‪ 1‬را در نظر بگیرید‪ .‬میخواهیم این عدد را آنقدر تقسیم بر ‪ 2‬بکنیم که عددی کوچک مانند ‪ ‬شود‬
‫(همان ‪ ‬که پایتون در نظر میگیره منظورمون هست)‪.‬‬
‫چندبار نیاز است این تقسیم بر ‪ 2‬کردن انجام شود؟ (برنامهای بنویسید که این تعداد دفعاتی که باید عدد‬
‫تقسیم بر ‪ 2‬شود را چاپ کند)‬
‫در این سوال میتوانید از پایتون استفاده کنید‬ ‫‪2‬‬
‫مقادیر ‪ x‬و ‪ y‬را در نظر بگیرید‪:‬‬
‫میخواهیم یک رگرسیون خطی ساده بر این دادهها برازش دهیم‪.‬‬ ‫‪X‬‬ ‫‪Y‬‬
‫یادآوری از آمار‪ :‬در معادلهی رگرسیونی خطی ساده به فرم زیر‪:‬‬ ‫‪1‬‬ ‫‪16‬‬
‫‪Y =  0 + 1X1‬‬ ‫‪0‬‬ ‫‪9‬‬
‫برآورد ضرایب به صورت زیر است‪:‬‬ ‫‪2‬‬ ‫‪17‬‬
‫‪S‬‬ ‫‪0‬‬ ‫‪12‬‬
‫‪b1 = ˆ1 = XY‬‬
‫‪SXX‬‬ ‫‪3‬‬ ‫‪22‬‬
‫‪b = ˆ = Y − b X‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪13‬‬
‫که در آن‪:‬‬ ‫‪0‬‬ ‫‪8‬‬
‫‪n‬‬ ‫‪n‬‬
‫‪1‬‬ ‫‪15‬‬
‫‪X‬‬ ‫‪i‬‬ ‫‪Y‬‬ ‫‪i‬‬
‫=‪X‬‬ ‫‪i =1‬‬
‫=‪Y‬‬ ‫‪i =1‬‬
‫‪2‬‬ ‫‪19‬‬
‫‪n‬‬ ‫‪n‬‬
‫‪0‬‬ ‫‪11‬‬
‫‪SXY‬‬ ‫‪=  XiYi − nXY‬‬ ‫‪SXX‬‬ ‫‪=  Xi2 − nX 2‬‬
‫‪i‬‬ ‫‪i‬‬

‫حال شما باید توابعی بنویسید که ‪ x‬و ‪ y‬را به ترتیب به عنوان ورودی بگیرند و موارد زیر را انجام دهند‪.‬‬
‫الف) تابعی که معادله رگرسیونی را چاپ کند (اسم تابع را ‪ fit‬بگذارید)‪.‬‬
‫یعنی مثالً در خروجی بدهد‪:‬‬
‫‪Y= 15.2 + 5.6 * X‬‬
‫ب) تابعی ک برآورد ضرایب رگرسیون را خروجی دهد (اسم تابع را ‪ coeff‬بگذارید)‪.‬‬
‫پ) تابعی که به ازای یک مشاهده جدید‪ ،‬طبق معادله رگرسیونی‪ ،‬پیشبینی انجام دهد (اسم تابع را‬
‫‪ predict‬بگذارید)‪.‬‬
‫تذکر‪ :‬در مثال فوق حق ندارید یک تابع بنویسید که همهی موارد باال را باهم خروجی دهد‪ .‬بلکه توابع‬
‫باید جداگانه باشند‪ ،‬ولی باهم ارتباط داشته باشند‪.‬‬
‫زنگ تفریح‪ :‬به عنوان زنگ تفریح و برای دل خودتون‪ ،‬پرتاب یک تاس رو شبیهسازی کنید و ببینید که آیا در عمل‪،‬‬

‫‪1‬‬
‫هست یا نه؟ [جوابش رو در زیر آوردم‪ ،‬هر وقت خودتون حل کردید بهش نگاه کنید]‬ ‫واقعاً احتمال هر وجه‬
‫‪6‬‬

‫‪1‬‬
‫(اون ‪ 6‬یعنی هِمینجوری تا آخر عدد ‪ 6‬هست یعنی مثالً ‪)0.1666666666‬‬ ‫حل‪ :‬اوالً باید بدونیم که‪= 0 / 16 :‬‬
‫‪6‬‬

‫کدی که من نوشتم اینه [لزوماً قرار نیست شما هم همین شکلی نوشته باشید‪ ،‬ممکنه یه جور دیگه نوشته باشید‪ ،‬کلیتش‬
‫رو چک کنید]‬

‫‪# www.Koolac.Org‬‬
‫‪# By: Sajjad Rahmani‬‬
‫‪import random‬‬
‫][=‪dice‬‬
‫‪for i in range(10000000):‬‬
‫))‪dice.append(random.randint(1,6‬‬
‫{=‪prob‬‬
‫‪1: dice.count(1)/len(dice),‬‬
‫‪2: dice.count(2)/len(dice),‬‬
‫‪3: dice.count(3)/len(dice),‬‬
‫‪4: dice.count(4)/len(dice),‬‬
‫‪5: dice.count(5)/len(dice),‬‬
‫)‪6: dice.count(6)/len(dice‬‬
‫}‬
‫) ‪print( prob‬‬
‫خروجی (چون داریم ‪ 10‬میلیون بار عدد تصادفی تولید میکنیم‪ ،‬طبیعتاً یکم طول میکشه)‪:‬‬

‫}‪{1: 0.1666605, 2: 0.1668222, 3: 0.1667151, 4: 0.1664218, 5: 0.1667469, 6: 0.1666335‬‬

‫موفق باشید‬
‫با تشکر‪ ،‬سجّاد رحمانی‬

‫گروه آموزشی کوالکــــ‪...‬‬

You might also like