متمتیکا


+ حرکت پرتابه - Mathematica

 توضیحات در ادامه مطلب

 

دانلود برنامه 


اول خدمتتون عرض کنم که به خاطر در هم ریختگی فونتهای فارسی و اینگلیسی توی توضیحات بعضی جاها یه ایراداتی بوجود اومده ، حواستون باشه! این مشکل تو فایل متمتیکا که دانلود میکنید نیست .

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

برای حرکت پرتابه ما فقط شتاب در راستای عمودی  و برابر g داریم و شتاب در راستای افقی  صفر است . سرعت اولیه و مکان اولیه دلخواه است حالا بیایید این را به صورت کد نویسی در آوریم :

برای شتاب :

x"[t] == 0

y"[t] == -g

برای سرعت اولیه :

x'[0] == Vxo

y'[0] == Vyo

برای مکان های اولیه :

x[0] == Xo

y[0] == Yo

حالا همه رو تو دستور Dsolve قرار میدیم:

dsol=DSolve[ { x"[t]==0 , y"[t]== -g , x'[0]==Vxo , y'[0]==Vyo , x[0]==Xo ,

y[0]==Yo } , { x[t] , y[t] } , t ]   

 

به همین سادگی شما معادلات حرکت رو بدست آوردید ، همونطور که میبینید اسم عبارت رو dsol گذاشتیم تا بعداً ازش استفاده کنیم.

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

ویژگی نقطه اوج چیه؟ تو این نقطه سرعت در راستای عمودی نداریم ، یعنی شما باید مشتق معادله‌ی حرکت در این راستا رو برابر صفر قرار بدید:

oj=Solve[ D[ y[t] /.dsol , t ]==0 , t]

در این عبارت ابتدا دیفرانسیل[y[t که از dsol بدست اومده بر حسب t گرفته میشه و مساوی صفر قرار داده میشه ، بعد این معادله برحسب t حل میشه . جواب این دستور زمان نقطه‌ی اوج خواهد بود ، حالا اگه این زمان رو توی x و y  بدست اومده از dsol بزاریم مختصات اون نقطه رو میده :

toj = {x[t] , y[t] } /.dsol /.oj

بیاید معادله رو از حالت پارامتری در بیاریم و مقادیر عددی بهش بدیم:

val={ Xo -> 0 , Yo -> 0 , Vxo -> 5 , Vyo -> 6 , g -> 10 } ;

به این نوع تعریف کردن مقادیر ثابت دقت کنید ، برای تایپ فلش از منها( - )وعلامت > که روی کیبردتون هست استفاده کنید و نکته‌ی دیگه اینکه شما اگه دوباره x و y  بدست اومده از dsol رو بنوسید، یعنی

{x[t] , y[t] } /.dsol

میبینید که معادلاتتون هنوز پارامتریه و مقادیر ثابت در اون قرار نگرفته برای اینکه این مقادیر قرار بگیره باید این کارو کنید :

{x[t] , y[t] } /.dsol /.val

البته شما میتونستید برای تعریف مقادیر ثابت این طور عمل بکنید :

Xo = 0 ; Yo = 0 ; Vxo = 5 ; Vyo = 6 ; g = 10 ;

در این صورت هر جا که این مقادیر وجود داشته باشن بصورت خودکار مقدار عددیشون وارد میشه و نیاز به فراخوانی( /.  ) نیست.

ویژگی نقطه‌‌‌ی برد چیه؟ این نقطه ریشه دوم معادله حرکت در راستای عمودی هست بنابر این:

tb = Solve[ {y[t] /.dsol } == 0 , t ] [[2]]  /.val

همونطور که میدونید این معادله دو جواب داره که اولی اون نقطه‌ی پرتابه که این نقطه‌ بدردمون نمیخوره ، پس نقطه‌ی دوم رو لازم داریم ، برای همین از [[2]] استفاده کردیم تا فقط جواب دوم رو بما بده.

برای رسم شکل این حرکت چون x و y توابعی از t هستن شما نمیتونید از Plot استفاده کنید و باید از ParametricPlot استفاده کنید :

ParametricPlot[ { x[t] , y[t] } /.dsol /.val} , {t , 0 , 1.2} , AxesLabel ->{ "X","Y" } , GridLines  -> Automatic , Frame  -> True ]

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

 

نویسنده : کامران اینانلو ; ساعت ۱۱:٢۸ ‎ب.ظ ; یکشنبه ٩ تیر ۱۳۸٧
    پيام هاي ديگران()   لینک