İM 205-İnşaat Mühendisleri için MATLAB Irfan Turk Fatih Üniversitesi, 2013-14 Başlangıç Matlab double-precision ve single precision sayısal veri tipleride dahil olmak üzere sayısal veri tipi, karakter veri tipi, mantıksal veri tipi, ve sembolik veri tipi gıbı farklı veri tiplerini barındırır. Bütün veri tipileri farklı arraylerde kaydedilir. Sembolik Değişken Oluşturma x gibi bir sembolik değişkeni oluşturmak için 2 yol vardır. x=sym(‘x’) 2) syms x Yukarıdakilerin birini yazarak x karakyerini x sembolik verisi olarak oluştururuz. Mesela:EDU>> syms x; EDU>> y=(3*x^2-5*x)/(x^2-4*x+4) y= -(5*x - 3*x^2)/(x^2 - 4*x + 4) EDU>> 1) Mupad Matlab’ın sembolik özelliği MuPad yazılımına dayanır. Mupad yazılımı 2008 yılında Mathworks şirketi tarafından satın alınıp, Matlab’a katılmıştır. Mupad motoru, Matlab ın öğrenci versiyonuyla gelmesine rağmen, profesyonel versiyonunda yoktur(Parayla satin alınır). Denklemler İçin Kullanılan Fonksiyonlar Fonksiyon Yapılan İş expand(S) Bütün ifadeleri çarpar factor(S) İfadeyi çarpanlarına ayırır collect(S) Aynı olan terimleri toplar simplify(S) Denklemi sadeleştirir simple(S) En kısa şekilde sadeleştirir [num,den]= numden(S) Kesri pay ve payda olarak ayırır Örnek syms x; expand((x-3)*(x+3); ans=x^2-9 syms x; factor(x^3-1);ans=(x 1)*(x^2 + x + 1) S=2*(x+3)^2+x^2+6*x+9;collect(S)= 27+3x^2+18*x syms u; w=exp(log(u)); w=u syms x;simple(sin(x)^2+cos(x)^2);ans=1 syms x;[num,den]=numden((x5)/(x+5));num=(x-5;den=x+5 Denlem Çözme Alıştırma 11.1: Aşağıdaki denklemi çözünüz. (‘a*x^2+b*x+c’) Çözüm 11.1: EDU>> EQ1=solve('a*x^2+b*x+c') EQ1 = -(b + (b^2 - 4*a*c)^(1/2))/(2*a) -(b - (b^2 - 4*a*c)^(1/2))/(2*a) Alıştırma 11.2: Aşağıdaki denklemi çözünüz. EQ2=solve('5*x^2+6*x+3') Çözüm 11.2: EDU>> EQ2=solve('5*x^2+6*x+3') EQ2 = - (6^(1/2)*i)/5 - 3/5 (6^(1/2)*i)/5 - 3/5 EDU>> Denlem Sistemi Çözme Alıştırma 11.3: Aşağıdaki denklem sistemini çözünüz EDU>> one=sym('3*x+2*y-z=10'); EDU>> two=sym('-x+3*y+2*z=5'); EDU>> three=sym('x-y-z'); Çözüm 11.3: EDU>> solve(one,two,three) ans = x: [1x1 sym] y: [1x1 sym] z: [1x1 sym] EDU>> [x,y,z]=solve(one,two,three) x =5; y =0; z =5 Sembolik Çizim EDU>> y=sym('x^2-2'); EDU>> ezplot(y) x 2-2 40 35 30 25 20 15 10 5 0 -5 -6 -4 -2 0 x 2 4 6 Sembolik Çizim Alıştırma 11.4: x^2+y^2=1 denkleminin [-1.5 1.5] aralığında grafiğini çiziniz. Çözüm 11.4: EDU>> syms x y EDU>> ezplot('x^2+y^2=1',[-1.5,1.5]) x 2+y 2=1 1.5 1 y 0.5 0 -0.5 -1 -1.5 -1.5 -1 -0.5 0 x 0.5 1 1.5 Sembolik Çizim >> y1=sym('sin(x)'); >> y2=sym('sin(2*x)'); >> y3=sym('sin(3*x)'); >> ezplot(y1) >> hold on >> ezplot(y2) >> ezplot(y3) >> hold off Ok u seçerek, grafiği modifiye edebilirsiniz. sin(3 x) 1 0.5 0 -0.5 -1 -6 -4 -2 0 x 2 4 6 Diğer Sembolik Çizimler z1=sym('3*(1-x)^2*exp(-(x^2)-(y^2))'); z2=sym('-10*(x/5-x^3-y^5)*exp(-(x^2)-(y^2))'); z3=sym('-1/3*exp(-(x^2)-(y^2))'); z=z1+z2+z3; subplot(2,2,1); ezmesh(z) title('ezmesh') subplot(2,2,2); ezmeshc(z) title('ezmeshc') subplot(2,2,3); ezsurf(z) title('ezsurf') subplot(2,2,4); ezsurfc(z) title('ezsurfc') ezmesh ezmeshc 10 10 0 0 -10 -10 2 0 y -2 -2 0 2 2 0 y x -2 ezsurf 10 0 0 -10 -10 0 y -2 -2 0 2 x ezsurfc 10 2 -2 0 x 2 2 0 y -2 -2 0 x 2 Türev / İntegral / Diferansiyel Denklemler yol=sym('20+20*sin(pi*(t-10)/20)'); subplot(1,2,1) ezplot(yol,[0,20]) title(‘arabanin yeri') xlabel(‘zaman,s') ylabel(‘bastan uzaklik') arabanin yeri Arabanin hizi 40 3 35 2.5 hiz=diff(yol); 25 hiz, yol/zaman bastan uzaklik subplot(1,2,2) ezplot(hiz,[0,20]) title(‘Arabanin hizi') xlabel('time,s') ylabel(‘hiz, yol/zaman') 30 20 15 2 1.5 1 10 0.5 5 0 0 0 5 10 zaman,s 15 20 0 5 10 time,s 15 20 Türev EDU>> dist=sym('20+20*sin(pi*(x-10)/20)') dist = 20+20*sin(pi*(x-10)/20) EDU>> Vel=diff(dist) EDU>> Nu=sym('x^2-3*y^5'); EDU>> N=diff(Nu,'y',4) Vel = N= pi*cos((pi*(x - 10))/20) (-360)*y EDU>> Accel=diff(dist,2) Accel = EDU>> -(pi^2*sin((pi*(x - 10))/20))/20 İntegral EDU>> y=sym('x^3+sin(x)') y= x^3+sin(x) EDU>> y2=sym('x^3+z^2') y2 = x^3+z^2 EDU>> N2=int(y2,'z') N2 = x^3*z + z^3/3 EDU>> N2=int(y2,'z',2,3) N2 = x^3 + 19/3 Diferansiyel Denklemler dsolve fonksiyonu diferansiyel denklemi, y’yi t’ye bağlı olarak çözer. EDU>> dsolve('Dy=y') ans = C2*exp(t) EDU>> Diferansiyel Denklemler EDU>> dsolve('Dy=y','y(o)=1') ans = exp(t)/exp(o) EDU>> [x,y]=dsolve('Dx=y','Dy=x') x= C5*exp(t) - C6/exp(t) y= C5*exp(t) + C6/exp(t) EDU>> Sembolik Denklemleri MATLAB Fonksiyonuna Dönüştürme syms x y=cos(x); dy=diff(y); %dy yi bir anonimous fonksiyonuna dönüştürür f=matlabFunction(dy); %matlabFunction komutu M=f(pi/2); disp(M)