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

پرتره های فازی ابزاری ارزشمند در مطالعه سیستم های دینامیکی هستند. آنها از طرحی از مسیرهای معمولی در فضای حالت تشکیل شده اند. این اطلاعاتی مانند اینکه آیا یک جذب کننده، یک دفع کننده یا چرخه محدود برای مقدار پارامتر انتخاب شده وجود دارد یا خیر را نشان می دهد. مفهوم هم ارزی توپولوژیکی در طبقه بندی رفتار سیستم ها با مشخص کردن زمانی که دو پرتره فاز متفاوت رفتار دینامیکی کیفی یکسانی را نشان می دهند، مهم است. جاذبه نقطه ثابتی است که به آن «سینک» نیز می گویند. دفع کننده به عنوان یک نقطه ناپایدار در نظر گرفته می شود که به عنوان “منبع” نیز شناخته می شود.

نمودار پرتره فاز یک سیستم دینامیکی مسیرهای سیستم (با فلش) و حالت‌های پایدار پایدار (با نقطه) و حالت‌های پایدار ناپایدار (با دایره‌ها) را در فضای حالت نشان می‌دهد. محورها از متغیرهای حالت هستند.

معادلات حالت

اولین گام در نمایش پرتره های فازی یا همان phase portrait تشکیل معادلات حالت برای یک سیستم دینامیکی است.

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

معادلات حالت آونگ ساده در دو مدل بیان شده است در مدل اول بدون اتلاف و در حالت دوم اتلاف انرژی در نظر گرفته شده است .

لذا معادلات حالت برای صورت اول که بدون در نظر گرفتن اصطکاک و در نتیجه اتلاف توان خواهد بود بصورت زیر می باشد :

فرمول ۱ معادلات دینامیکی پاندول ساده پرتره های فاز یا phase portrait و معادلات حالت   شبیه سازی در متلب

فرمول ۱ ) معادلات دینامیکی پاندول ساده

با در نظر گرفتن  می توانیم این معادلات را به شکل مرسوم زیر بیان کنیم :

فرمول 2 معادلات حالت پاندول ساده به شکل مرسوم پرتره های فاز یا phase portrait و معادلات حالت   شبیه سازی در متلب

فرمول ۲ ) معادلات حالت پاندول ساده به شکل مرسوم

آنچه از صورت معادلات حالت مشخص است این سیستم دینامیکی دارای پایداری حاشیه ای خواهد بود برای نمایش این مسئله می توانیم از پرتره های فازی استفاده کنیم (نمایش phase portrait ) .

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

  • استفاده از ode45 و یا سایر روش های عددی حل معادلات دینامیکی در متلب (همچون ode23t) : به این منظور بایستی از m فایل نویسی در محیط متلب استفاده کرد که نیاز به تعریف option ، بیان معادلات دینامیکی سیستم در یک تابع جداگانه و نهایتا رسم نموداری می باشد که این راه مسلما ساده نخواهد بود و در پست های آتی در خصوص آن توضیح خواهم داد.
  • راه دوم که بیشتر مد نظرمان است استفاده از کدنویسی در محیط سیمولینک متلب است. با اینکار شما می توانید به سادگی معادلات دینامیکی مورد نظر را در یک Matlab function وارد کنید و با استفاده از عملگرهای انتگرالی نسبت به حل مسئله با هر کدام از روش های عددی نظیر ode45 ، ode23tb و … استفاده کنید.

در این پست از روش دوم برای حل مسئله پندول ساده و بدست آوردن پرتره های فاز برای آن استفاده می شود. برای این منظور بایستی از تب New در نرم افزار متلب روی Simulik model کلیک کنید تا یک فایل سیمولینک برای شما باز شود. در این فایل سیمولینک با کلیک بر روی Library browser که در شکل 1 بر روی آن فلش کشیده شده است نسبت به انتخاب بلوک های مورد نظر اقدام کنید.

بلوک های مورد نظر در این پروژه عبارت خواهند بود از : (در انتهای توصیف مکان بلوک ها در library browser نشان داده شده است)
  • Matlab function : که در آن معادلات حالت سیستم وارد خواهد شد (User defined fuctions)
  • Integrator : که همان انتگرال گیر مرسوم است و برای انتگرال گیری از سیگنال مشتق خروجی از بلوک دینامیکی استفاده می شود (commonly used blocks)
  • Scope : که برای نمایش سیگنال و همچنین ذخیره داده ها در محیط workspace متلب استفاده خواهد شد. (commonly used blocks)
  • XY graph : که از آن برای نمایش دو سیگنال نسبت به هم مستقل از زمان شبیه سازی در محیط سیمولینک استفاده می شود. (sinks)

حال با آوردن Matlab function به محیط سیمولینک و وارد شدن به این بلوک (با دابل کلیک) می توانیم نسبت به تعریف معادلات حالت در آن اقدام کنیم. در مدل دینامیکی پاندول ساده ما 2 متغیر حالت داریم که آنها در تابع بصورت x1d , x2d نمایش می دهیم که به ترتیب بیانگر مشتق x1 و مشتق x2 می باشند. عبارات مشتقی به عنوان خروجی تابع مطرح خواهند بود و همچنین ورودی های تابع به صورت x1 و x2 می باشند . در نتیجه فرمت تعریف تابع بصورت زیر خواهد شد :

function [x1d,x2d] = fcn(x1,x2)

در ادامه معادلات دینامیکی به همان شکلی که در رابطه مربوط به پاندول ساده در فرمول 2 آمده است وارد می شود که نتیجه زیر را برای کلیت تابع خواهد داد :

function [x1d,x2d] = fcn(x1,x2)

x1d = x2;

x2d = -sin(x1);

با این عملیات تابع را می بندیم و سپس در محیط سیمولینک نسبت به اتصال انتگرال گیر ها در خروجی تابع و فیدبک مقادیر x1 و x2 به عنوان ورودی به تابع کار سیمولینک در فاز اول اتمام می یابد. در این شرایط سیمولینک به شکل زیر خواهد بود :

شکل 1 نمایش فایل سیمولینک برای شبیه سازی پاندول ساده 300x181 پرتره های فاز یا phase portrait و معادلات حالت   شبیه سازی در متلب

شکل 1 ) نمایش فایل سیمولینک برای شبیه سازی پاندول ساده

همانطور که در گوشه سمت راست سیمولینک مشاهده می کنید عبارت ode45 نشان می دهد که از حل کننده ode45 نسبت به حل عددی این سیمولینک استفاده خواهد شد. ممکن است بخواهید از حلل های دیگری برای این کار استفاده کنید. به این منظور می توانید از نوار سیمولینک با انتخاب زیر پیش بروید :

Simulation / Model configuration parameters

با این انتخاب شکل زیر را خواهید داشت (در بخش solver) :

شکل 2 نمایش پنجره تنظیمات سیمولینک برای تغییر حل کننده سیمولینک و سایر پارامترهای خطا 300x186 پرتره های فاز یا phase portrait و معادلات حالت   شبیه سازی در متلب

شکل 2 ) نمایش پنجره تنظیمات سیمولینک برای تغییر حل کننده سیمولینک و سایر پارامترهای خطا

در بخش solver می توانید حل کننده را تغییر دهید در یک حالت کلی می توان گفت که ode23tb سریعترین حل کننده در محیط سیمولینک می باشد که البته این ویژگی در سیمولینک های پیچیده تر چشم گیر می باشد و در سیمولینک های با معادلات دینامیکی کمتر بهتر است از ode45 استفاده کرد. سایر تغییرات اعم از خطای مطلق (absolute error) ، خطای نسبی (relative error) و گام های حل از انتخاب هایی هستند که می توانند به طور مستقیم بر روی کیفیت حل سیمولینک تاثیرگذار باشند . انتخاب های کوچکتر برای خطاها می تواند سیمولینک را سریعتر کند ولی از طرفی دقت حل را کاهش داده و کیفیت گراف های بدست آمده از شبیه سازی مطلوب نخواهد بود.

زمان اجرای شبیه سازی متغیر دیگری است که در سیمولینک بایستی انتخاب شود این متغیر بطور معمول در سیمولینک متلب به گونه ای انتخاب می شود که حالت گذرای سیستم به طور کامل نمایش داده شده و حدالمقدور بخشی از حالت ماندگار نیز نمایش داده شود. این متغیر به صورت پیش فرض 10 می باشد.

مسئله مهم دیگر مقادیر اولیه متغیرهای حالت می باشد. در استفاده از m فایل نویسی این مقادیر اولیه را به عنوان آرگومان تابع (نظیر تابع ode45) و در بخش option آن وارد می کنیم ولی در سیمولینک کار ساده تر است و این مقادیر اولیه در انتگرال گیر های متناظر با هر کدام از متغیرهای حالت وارد می شود. با دال کلیک بر روی انتگرال گیر مورد نظر مقدار اولیه را جایگذاری کنید

حال می توانید سیمولینک مورد نظر را اجرا کنید من در این پروژه مقدار اولیه برای متغیر حالت تتا (متغیر حالت اول) را برابر 2 و مقدار اولیه متغیر حالت دوم را بر روی همان صفر قرار داده ام. زمان شبیه سازی برابر 10 ثانیه بوده و حل کننده همان ode45 می باشد. در نتیجه اجرا می توانید شکل موج ها را بر روی اسکوپ ملاحظه کنید. همچنین خروجی نمایشگر XY به صورت همزمان با شبیه سازی نمایش داده می شود.

با توجه به ماهیت پایداری حاشیه ای که برای پاندول ساده بدون در نظر گیری اصطکاک داریم متغیرهای حالت سیستم شکل کلی سینوسی خواهند داشت که این با حل ریاضیاتی معادلات دینامیکی نیز قابل اثبات است. شکل زیر نمایش متغیر حالت تتا را بر روی اسکوپ نمایش می دهد :

شکل 3 نمایش متغیر حالت تتا از پاندول ساده بر روی اسکوپ سیمولینک 300x237 پرتره های فاز یا phase portrait و معادلات حالت   شبیه سازی در متلب

شکل 3 ) نمایش متغیر حالت تتا از پاندول ساده بر روی اسکوپ سیمولینک

اما نمودار پرتره فاز (phase portrait) به مفهوم کارامد نمایش نموداری x1/x2 به ازای مقادیر مختلف از مقدارهای اولیه برای متغیرهای حالت در شبیه سازی می باشد. نمونه ای از این گراف بر روی XY قابل مشاهده است که به ازای (x10,x20)=(2,0) به دست آمده است. به منظور رسم کامل پرتره فاز نیاز است تا مقادیر اولیه مختلف برای این منظور قرار داده شوند.

رسم پرتره فاز برای پاندول ساده

با توضیحاتی که داده شد ابتدا نیاز است تا یک script file برای کنترل سیمولینک و مقدار دهی مقادیر اولیه ایجاد کنیم. برنامه نوشته شده در این mfile‌ از نوع اسکریپت به صورت زیر می باشد :

clc

clear

close

%%

figure

for x10=0:0.2:1

    for x20=0:0.2:1

       

        sim(‘Simple_pendulum’)

        hold on

        plot(x1.signals.values(:,1),x2.signals.values(:,1))

       

    end

end

xlabel(‘X_1’)

ylabel(‘X_2’)

title(‘Phase portrait of simple pendulum’)

 در توضیح این برنامه بایستی گفت که پس از پاک کردن متغیرهای قبلی از workspace متلب و بستن نمودارهای قبلی با دستور figure یک شکل باز می شود که سپس در یک حلقه تو در تو که از دو دستور for تشکیل شده برای تغییر متوالی مقادیر اولیه استفاده شده است و در هر بار تغییر نمودار x1 نسبت به x2 رسم می شود . گفتنی است که دستور hold on باعث می شود تا نمودارهای قبلی در حین ترسیم نمودار جدید بر روی شکل حفظ شوند. در نهایت نامگذاری محورها و شکل در سایر دستورات خارج از حلقه های تو در تو آورده شده است.

نکته مهمی که باید در نظر گرفت این است که این بار بایستی در سیمولینک مورد نظر نکاتی را در نظر گرفت :

  • دستور sim نسبت به اجرای سیمولینک اقدام می کند که بایستی نام سیمولینک مورد نظر عینا در بین دو علامت ‘’ قرار داده شود. در اینجا سیمولینک با نام Simple_pendulum ذخیره شده است.
  • فایل های برنامه بایستی در یک فولدر قرار داده شوند یعنی فایل main که همان اسکریپت بالا می باشد و سیمولینک در یک فولدر که همان current folder متلب است قرار دارند
  • در سیمولینک مورد نظر نسبت به متغیر قرار دادن مقادیر اولیه اقدام شود که در اینجا به جای مقدار عددی مقدار اولیه برای متغیر حالت اول x10 و برای دومی x20 قرار داده شده است.

شکل زیر نتیجه کار را به ازای تغییر مقادیر اولیه از صفر تا یک برای هر دو متغیر حالت نمایش داده شده است :

نمایش پرتره فازی به ازای مقدار اولیه های از صفر تا 1 300x225 پرتره های فاز یا phase portrait و معادلات حالت   شبیه سازی در متلب

شکل 4 ) نمایش پرتره فازی به ازای مقدار اولیه های از صفر تا 1

همانطور که ملاحظه می شود نتیجه کار به صورت اشکال شبه دایره ای می باشد که نشان از پایداری حاشیه ای به ازای این مقادیر است .

حال اگر مقدار اولیه برای متغیرهای حالت فراتر رفته و مقادیر ویژه مثبت پدیدار شوند بالتبع سیستم به سمت ناپایداری خواهد رفت . برای ملاحظه پرتره فاز در سیستم های دینامیکی بایستی این حالت نیز افزوده شود. شکل زیر نتیجه کار را به ازای تغییر مقادیر اولیه تا مقدار 2 (تغییر مقادیر انتهایی در حلقه های for از 1 به 2 در دستور فایل اسکریپت ) نمایش می دهد :

نمایش پرتره فازی به ازای مقدارهای اولیه از صفر تا دو 300x225 پرتره های فاز یا phase portrait و معادلات حالت   شبیه سازی در متلب

شکل 5 ) نمایش پرتره فازی به ازای مقدارهای اولیه از صفر تا دو

از این شکل می توان به عنوان پرتره فاز برای پاندول ساده استفاده کرد که در مراحل بدست آوردن به طور کامل توضیح داده شد. برای دانلود فایل های شبیه سازی کامل می توانید بر روی لینک کلیک کنید. (تغییر مقادیر اولیه به مقدارهای منفی نتایج مشابه خواهد داشت)

منبع : برق تِک

About برق تِک

Leave a Reply

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *