info@matlabiran.ir

خانه » کتاب آموزشی » آموزش متلب – بخش 10

آموزش متلب – بخش 10

متلب ایران

متلب ایران

در این مجموعه به آموزش متلب از طریق متن نوشتاری می پردازیم. بدیهی است برای فهم توضیحات ارائه شده، اجرا کردن خط به خط دستورات در متلب می تواند بسیار کمک کننده باشد. لذا از دانشجویان عزیز خواهش می کنیم برای بالا بردن مهارت خود در استفاده از متلب؛ پا به پای این آموزش تمرینات خود را انجام دهند.

[divider]

 حل دستگاه معادلات ديفرانسيل خطی:

مثال:

t (1)

>> syms y1 y2

>> [y1,y2]=dsolve(‘Dy1=2*y1-5*y2′,’Dy2=5*y1-6*y2’)

  y1 = -(exp(-2*t)*(3*C2*cos(3*t) – 4*C1*cos(3*t) + 3*C1*sin(3*t) + 4*C2*sin(3*t)))/5

y2 = exp(-2*t)*(C1*cos(3*t) – C2*sin(3*t))

 روش اويلر در حل مسائل:

t (2)

h: طول گام حرکت

مثال:                                                                                                  Y(t+1)=2   ;    dy/dt+5y=6     ;    h=1/100

h=0.01;

t0=0;

tf=2;

t=t0:h:tf;

y(1)=2;

N=length(t)        →           .اين دستور بيشترين طول يک ماتريس/ بردار را نشان می دهد

for i=1:N-1

    y(i+1)=y(i)+h*(6-5*y(i));

end

plot(t,y)

t (3)

    روش رانگه کوتا: (runge-kutta)

  • دقت اين روش از روش اويلر بيشتر می باشد
  • الگوريتم محاسباتی اين روش ode45 و ode23 و خطا از مرتبه (o(h3 يا order 3

yi+1=yi+h/b(k1+2k2+2k3+k4)

k1= f(ti+yi)

k2= f(ti+   , yi+ *k1)

k3= f(ti+  , yi+ *k2)

k4= f(ti+h1 , yi – h*k2)

  •  قانون هوکt (5)فرکانس حرکت زاويه ای

حل مسئله به روش اويلر:

t (6)

معادله مکان

در scrip می نويسيم:

%d^2(x)/dt^2=-w^2*x

%w=sqrt(k/m)

%i,cxo=x(t,0)=1,r(0)=r(t,0)=0

%simple harmonic oscilator-euter’s method colsall

k=1;

m=1;

w=sqrt(k/m);

h=0.1;

t=0:h:20;

n=length(t);

x=zeros(1,n);

r=zeros(1,n);

x(1)=1;

r(1)=0;

for i=1:n-1;

    x(i+1)=x(i)+h*r(i);        معادله مکان

    r(i+1)=r(i)-h*w^2*x(i);   معادله سرعت

end

subplot(2,1,1)

plot(t,x)

subplot(2,1,2)

plot(r,t)

t (7)

حل مسئله با روش رانگه – کوتا:

%harkate arang

%runge-kua o(h3)

g=9.8;

l=1;

n=200;

w=sqrt(g/l);

t=linspace(0,5,n);  %time between 0-5 second

h=t(2)-t(1);          %time stop

f=@(alpha)alpha;

g=@(theta)-w^2*sin(theta);

theta=zeros(1,n);

alpha=zeros(1,n);

theta(1)=10*pi/180;    %initial angle

alpha(1)=0;               %initial angle speed

for i=1:n-1;

     k1=f(alpha(i));

     kp1=g(theta(i));

     k2=f(alpha(i)+h/2*kp1);

     kp2=g(theta(i)+h/2*k1);

     k3=f(alpha(i)+h/2*kp2);

     kp3=g(theta(i)+h/2*k2);

     k4=f(alpha(i)+h*kp2);

     kp4=g(theta(i)+h*k2);

     theta(i+1)=theta(i)+h/6*(k1+2*k2+2*k3+k4);

     alpha(i+1)=alpha(i)+h/6*(kp1+2*kp2+2*kp3+kp4);

end

plot(t,theta)

t (8)

محاسبات عددی

روش نيوتن 

F(x)=0                                     x0=1     ريشه حدسی

t (9)

اين رابطه تکرار می شود پس حلقه داريم و شرط خروج از حلقه xn+1 – xn| < ε | می باشد.

File    →    new   →    script

function [xn,k,err]=newton (f,x0,e)

syms x h

g=inline(limit(((f(x+h)-f(x))/h),h,0));

k=1;

xn=x0-(f(x0)/g(x0));

while abs(xn-x0)>e

     disp(xn)

     x0=xn;

    xn=x0-(f(x0)./g(x0));

     k=k+1;

end

err=abs(xn-x0);

disp(xn)

  : command در پنجره

>> f=inline(‘sin(x)-x+0.5’);

>> [xn,k,err]=newton(f,pi/2,0.0001)

xn=1.49

K=3

روش تصنيف (وتری): 

t (11)

File    →    new   →    script

function [x2,k,err]=vatari(f,x0,x1,e)

k=1;

x2=((x0*f(x1)-x1*f(x0))/(f(x1)-f(x0)));

while abs(x2-x1)>e

     disp(x2);

     x0=x1;

     x1=x2;

    x2=((x0*f(x1)-x1*f(x0))/(f(x1)-f(x0)));

     k=k+1;

end

disp(x2)

err=abs(x2-x1)

اين روش را برای تابعی با شرايط زير در پنجره command اجرا می کنيم.

 f(x)=x2-2           [1,2]         err=10-3

>> f=inline(‘x^2-2’)

>> [x2,k,err]=vatari(f,1,2,0.001)

x2 =    1.4142

k =     4

err =   4.2271e-04

  : (simulink) سيمولينک

ابتدا بر روی آيکن t (12) کليک می کنيم تا پنجره ی Simulink Library Browser باز شود.

t (13)

 سپس از مسير file/ new/ model پنجره ی سفيدی برای ايجاد مدل باز می شود.

t (14)

 حال می توانيم بلوک های مورد نياز را از قسمت Simulink Library Browser يافته ودر اين صفحه درگ کنيم.

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

Simulink/ sources/ sine wave

Simulink/ sinks/ scope

t (15)
نکته: برای تغيير تنظيمات هرکدام از بلوک ها بر روی آن دابل کليک می کنيم تا پنجره ی ميانبر properties مربوط به آنها باز شود و سپس می توانيم برخی از تنظيمات را تغيير دهيم.

برای اجرای مدل طراحی شده از نوار بالای صفحه ی model بر روی آیکن t (16) (run) کلیک می کنیم. سپس روی scope دابل کلیک کرده و بدین ترتیب موج ایجاد شده مشاهده می شود.

t (17)

نکته: با کلیک روی آیکن t (18) (autoscale) واقع بر روی صفحه ی scope می توان موج ظاهر شده را واضح تر مشاهده کرد.

t (19)

برخی از ويژگيهای سيمولينک: 

  • برای انتخاب اسيلوسکوپ (scope) در سيمولينک از بلوک sinks استفاده می شود.
  • برای انتخاب صفحه نمايش (display) سيمولينک از بلوک sinks استفاده می شود.
  • برای انتخاب يک مقدار ثابت (constant) در سيمولينک به بلوک commonly Used Blocks مراجعه می شود.
  • برای کار با اعداد مختلط از بلوک math operations در سيمولينک استفاده می شود.
  • مدهای STL  – Accelerator – Normal : simulations 
  • پسوند فايل های simulink برای ذخيره سازی mdl می باشد.
  • زمان شبيه سازی به صورت پيش فرض 10 ثانيه می باشد.
  • برای رفتن به تنظيمات مدل در سيمولينک از دستور ميانبر ctrl + E استفاده می شود.
  • برای تحليل معادلات حالت در سيمولينک از بلوک Stateflow استفاده می شود.
  • برای ايست دادن به شبيه سازی در سيمولينک به بلوک sinks مراجعه می شود.
  • برای ايجاد يک زيرسيستم در سيمولينک (subsystem) از گزينه های منو Edit انتخاب می شود.
  • برای ايجاد يک مدل جديد در سيمولينک از دستور ميانبر ctrl + N استفاده می شود.

مثال: 

می خواهيم مدار زير را در simulink طراحی و اجرا کنيم.

t (20)

 

بلوک های مورد نياز را از مسيرهای زير می يابيم.

Simulink/ Sources/ Sine Wave

Simulink/ Continuous/ Integrator

Simulink/ Continuous/ Derivative

Simulink/ Signal Routing/ Mux

Simulink/ Sinks/ Scope

توجه: Mux دارای دو ورودی است. برای ايجاد ورودی های بيشتر٬ در اينجا ۳ ورودی٬ بر روی آن دابل کليک کرده و در پنجره ی باز شده پارامتر Number of inputs را از عدد ۲ به عدد ۳ تغيير می دهيم.

t (21)

سپس با کليک روی آيکون t (16) آن را اجرا کرده و بر روی اسکوپ دابل کليک می کنيم تا هر سه موج ظاهر شود.

برای مشاهده بهتر روی گزينه Atouscale کليک می کنيم.

t (22)

می توان فرکانس و دامنه منبع را تغيير داده و تغييرات نمودار را مشاهده و بررسی کنيم. برای اين منظور روی منبع سينوسی دابل کليک کرده و دامنه (Amplitude) و فاز (Frequency) آن را تغيير می دهيم.

t (23)

t (24)

نکته: با فعال کردن تيک legend در تنظيمات scope ٬ راهنمای legend بر روی صفحه scope نمايش داده ميشود.

 مثال: برای رابطه ی (y=A sin(ωt) + B tan(ωt مداری طراحی کرده و آن را حل کنيد.

به عنوان مثال رابطه ی (y=2 sin(50t) + tan(50t  را در نظر می گيريم. برای حل چنين مسائلی ابتدا ضرب و تقسيم را طراحی و ايجاد کرده و سپس به جمع و تفريق می پردازيم.

t (25)

بلوک های مورد نياز را می توان از مسيرهای زير انتخاب کرد.

Simulink/ Sources/ Clock

Simulink/ Sources/ Constant

Simulink/ Math Operations/ Product

Simulink/ Math Operations/ Trigonometric Function

Simulink/ Math Operations/ Gain

Simulink/ Math Operations/ Sum

Simulink/ Sinks/ Scope

  • برای ايجاد tan بر روی Trigonometric function دابل کليک کرده و در قسمت function تابع tan را انتخاب می کنيم.
  • می توان با دابل کليک بر روی sum برخی از تنظيمات آن را به صورت زير تغيير داد:

t (26)

  • برای ايجاد کردن ۲ روی Gain متصل به sin دابل کليک کرده و در قسمت Gain عدد ۲ را وارد می کنيم.
  • برای وارد کردن مقدار ω که برابر با ۵۰ است بر روی constant دابل کليک کرده و در قسمت constant value عدد ۵۰ را وارد می کنيم.

حال می توانيم اين مدار را Run کنيم.

t (27)

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد.