İM 205-İnşaat Mühendisleri için MATLAB

advertisement
İ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)
Download