آموزش متمتیکا

آموزش نرم افزار متمتیکا

آموزش متمتیکا

آموزش نرم افزار متمتیکا

  • ۰
  • ۰

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

توضیح فیزیک برنامه ی شبیه سازی حرکت و نوسان 2 فنر رو در ادامه ی مطلب ببینید

برنامه ای که براتون نوشتم مربوط هستش به شبیه سازی حرکت دو جسم که با فنر به هم متصل شدن و هر کدوم از این اجسام هم از طرفین به یک تکیه گاه با فنر متصل شدن ، مثل شکل زیر :

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

m1 x1" + k1 x1 - k2 (x2 - x1)=0

 

m2 x2" + k3 x2 + k2 (x2 - x1)=0

تو این معادلات x1  و x2 جابجایی جسمهای m1  و m2  هستند . این کلی‌ترین حالت این معادلات هستش ،اما اغلب برای بررسی این نوع حرکت جسمها رو هم وزن (m1=m2) و ضریب سختی هارو هم هم‌اندازه (k1=k2=k3) میگیرن . من هم تو این برنامه به هر دو صورت این کارو کردم ، یعنی یه بار تمام پارامتر هارو مخالف و نامساوی هم در نظر گرفتم و یک بار هم بعضی از اونها رو مساوی  و متقارن قرار دادم ؛ این دو صورت رو با val1  و val2 مشخص کردم . برای حل معادلات هم یک بار از val1 و یک بار هم از val2 استفاده میکنیم . میتونستیم تنها یک بار معادله رو حل کنیم و val1  و val2 رو به صورت جداگونه با   . /  توی جوابها جایگزاری کنیم اما من که این کارو کردم حل این معادله به صورت پارامتری زمان زیادی گرفت و در آخر هم به نتیجه نرسید 

ابتدا حرکت نوسانی این اجسام رو نسبت به زمان نشون میدیم که انتظار هم داریم یک حرکت سینوسی رو ببینیم ،  یک بار این حرکت نوسانی رو با توجه به شرایط val1  و یک بار هم با val2  پلات میکنیم و برای نمایش حرکت نوسانی این دو جسم و مقایسه ی اونها هر دو رو با دستور Show در یک دستگاه مختصات نشون میدیم .

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

coord1[t_]={1+x1[t],0}/.ds1//Flatten

این دستور ، تابعی برای مختصات جسم اول تعریف میکنه که مختصه‌ی x اون 1+x1[t] و مختصه‌ی اون صفر هست . پس با این حساب این جسم رو فقط ما روی محور x نشون میدیم . به عبارتی که برای مختصه‌ی x هست توجه کنید ، همون طور که میبینید مکان اولیه‌ی این جسم در x=1 در نظر گرفته شده . حالا شما کافیه که به این تابع یک زمان بدید (t) تا اون مختصاتی رو که جسم در اون زمان مستقر هست رو تحویل بده . خروجی این تابع فقط یک زوج عدد است که ما باید یک تابع دیگه تعریف کنیم که این زوج عدد رو نمایش بده ؛ برای این کار از ListPlot استفاده میکنیم :

coordplot[t_]:= ListPlot[{coord1[t],coord2[t]}

 coord1[t] وcoord2[t]توابع تعین مختصات جسمهای m1 و m2 هستند ، که coord1[t] رو براتون توضیح دادم ، فرق coord2[t] با coord1[t] علاوه بر معادله ی حرکتش (x2[t]) توی مکان اولیه ش هست ، که مکان اولیه ی اون رو 2 دادیم . برنامه رو که ببینید میبینید که من 2 بار این تابع رو نوشتم ، یکی به همین شکلی که اینحا براتون نوشتم هست ، که نمیدونم چرا جواب نمیده و دیگری اومدم همون توبع تعین مختصات رو تو این دستور کپی پیست کردم (خب اینم یه راهشه دیگه).

اگه فکر کردید کار تموم شد بدونید که سخت در اشتباهید ! این تابع که تعریف کردیم فقط مکان دو جسم رو در زمانی مشخص با یک نقطه نشون میده اما ما میخایم حرکت این اجرام رو ببینیم ، برای این کار دوباره (یا بهتر بگم سه باره!) باید یک تابع تعریف کنیم ، البته این دیگه تابع نیستش ، دستوره . برای این منظور از دستور تیبل استفاده میکنیم که زمانها رو طبق اون بازه ای که مشخص کردیم توی تابع کردپلات  بزاره . خب با اجرای این تیبل نتیجه رو که تعدادی نمودار هست ،

با کمی خلاقیت میتونید برنامه ای بنویسید که حرکت چند فنر رو نمایش بده 

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
تجدید کد امنیتی