Professional Documents
Culture Documents
Hoc Nhanh Matlab PDF
Hoc Nhanh Matlab PDF
Hoc Nhanh Matlab PDF
8/5/2009
Hoc MATLAB bang th du 1
Tai lieu nay c viet vi muc ch hng dan cac sinh vien hoc nhanh ve Matlab.
Phan au tai lieu la noi dung bai giang cua tac gia ve Matlab trong hoc phan "Giai
phng trnh bang may tnh". Mot so th du, chng trnh tnh toan so c lay t bai
giang "Giai tch so 1" cho lp c nhan tai nang, "C hoc chat long" cung cua tac gia.
Matlab la phan mem tr giup tnh toan so va ky hieu, do o tai lieu gom hai phan: (1)
tnh toan ky hieu, va (2) tnh toan so. Sau khi oc xong tai lieu nay, sinh vien co the:
- Dung Matlab giai cac bai toan giai tch, ai so va ai so tuyen tnh;
- Dung Matlab e viet chng trnh tnh toan cho cac mon nh Phng phap phan
t hu han, Giai tch so, C hoc vat ran bien dang, C hoc chat long . . .
tai lieu:
Getting Started with MATLAB, MathWorks, Inc., 1998.
Symbolic Math Toolbox User's Guide, MathWorks, Inc., 1998.
trong tu sach cua MathWorks e oc them ve Matlab khi can.
Hnh 1: Ca so Matlab.
e khi ong Matlab ta ch can nhap kep (double click) vao bieu tng cua
Hoc MATLAB bang th du 3
no, hoac vao menu start\All programs\Matlab 7.1 roi chon Matlab 7.11.
Mot ca so co ten Matlab (hay Matlab command) xuat hien cung vi dau nhac
lenh >>(hnh 1). Cac lenh cua Matlab c nhap vao t ay.
e thoat (quit) ch can nhap chuot vao dau X goc tren ben phai ca so
Matlab.
Tat ca cac oi tng a vao Matlab phai c "khai bao" bang cach xac
nh "noi dung" cua no.
Vect
e tao mot vect, th du a, trong ca so Matlab command ta nhap vao
>> a = [1 2 3 4 5 6 9 8 7 6 5]
sau khi nhan enter Matlab tra ve:
a =
1 2 3 4 5 6 9 8 7 6 5
Chu y: cac thanh phan cua vect nam gia hai dau ngoac vuong, cach nhau mot
khoang trang. Dien ng "Matlab tra ve" se c hieu ngam trong cac th du sau.
Tao vect b vi cac thanh phan lay gia tr nguyen t 0 en 10
>> b = 0:10
b =
0 1 2 3 4 5 6 7 8 9 10
Neu muon cac thanh phan lien tiep cach nhau 2 th nhap vao
>> c = 0:2:10
c =
0 2 4 6 8 10
Kch thc (chieu dai) cua vect c cho nh ham length,
>> dai=length(c)
dai=
6
Tnh toan tren vect cung rat n gian. Cong cac thanh phan cua vect a
vi 3
>> a + 3
ans =
4 5 6 7 8 9 12 11 10
Chu y: cac lenh, cac bien a vao c Matlab lu gi trong workspace (vung lam
viec). Co the hnh dung workspace nh la t giay nhap ta dung khi lam tnh, cac
phep tnh c viet tuan t t tren xuong di, ta co the xem lai nhng ket qua a
thc hien, xoa nhng bien hoac bieu thc c a vao (dung lenh clear tenbien
hoac clear all - xoa tat ca). Noi dung cua workspace c hien th tren ca
so Matlab ta co the dung thanh trt ben phai ca so Matlab e xem cac noi dung
cu(hnh 2).
Trong tnh toan tren, do ta khong ch nh phep gan, Matlab lu tr ket qua
1
Ten Matlab 7.1 co the khac tuy thuoc phien ban Matlab ma ban dung.
4 Trnh Anh Ngoc
>> B = [1 2 3 4; 5 6 7 8; 9 10 11 12]
hay
>> B = [1 2 3 4
5 6 7 8
9 10 11 12]
B =
1 2 3 4
5 6 7 8
9 10 11 12
Kch thc ma tran c cho bang ham size,
>> size(B)
ans=
3 4
Matlab co the thc hieu nhieu phep tnh ma tran, di ay la mot so phep
tnh thng dung (ban oc t a ra th du e th nghiem), danh sach cac lenh c
hien th khi dung lenh help. T danh sach nay ta co the tra cu cu phap lenh va
cac thong tin lien quan.
Phep cong (tr) hai ma tran tng t nh trng hp vect. ac biet, nhan ma
tran vi mot so co the viet theo th t nao cung c. Th du, neu A la ma tran s
la mot so th hai lenh s*A va A*s cho cung mot ket qua.
Chuyen v:
>> C = B
Neu B la ma tran phc th B cho chuyen v cua lien hp phc cua B. Trong
trng hp muon lay chuyen v cua B ta phai dung ".'"
>> D = B .
Nhan hai ma tran:
>> D = A * B
Neu muon nhan cac phan t tng ng cua hai ma tran co cung kch thc ta
dung ".*"
>> G = E .* F
Neu E la ma tran vuong th phep nhan ma tran E vi chnh no n lan co the
thc hien bang phep lay luy tha. Th du:
>> E 3
Neu muon luy tha tng phan t cua ma tran ta dung ".". Th du:
>> E .3
Nghch ao ma tran vuong:
>> inv(E)
Cac gia tr rieng:
>> eig(E)
a thc ac trng:
>> poly(E)
6 Trnh Anh Ngoc
Ham so
Matlab co mot th vien cac ham toan hoc rat phong phu
nh : sin, cos,
log, exp, sqrt, . . . Cac so thng dung nh : , i (hay j) = 1 cung c nh
ngha san trong Matlab.
>> sin(pi/4)
ans =
0.7071
oi so cua ham co the la mot ma tran. Th du, x=[1 2; 3 4], lenh exp(x)
tra ve
ans =
2.7183 7.3891
20.0855 54.5982
o chnh la ma tran
exp(1) exp(2)
.
exp(3) exp(4)
function r = rank(A,tol)
% RANK Matrix rank.
% RANK(A) provides an estimate of the number of linearly
% independent rows or columns of a matrix A.
% RANK(A,tol) is the number of singular values of A
% that are larger than tol.
% RANK(A) uses the default tol = max(size(A)) * norm(A) * eps.
s = svd(A);
if nargin = =1
tol = max(size(A)) * max(s) * eps;
end
r = sum(s > tol);
Chu y: function trong dong th nhat la t khoa. Dong nay cho ten function va
th t cac oi so. Tiep theo dong au la cac dong bnh luan, bat au bang %, dong
au tien trong chung se c Matlab hien th khi ta go lenh help rank. Phan con
lai cua file la cac dong kha thi.
subs(s,old,new) thay the old bang new trong bieu thc s. ay old
la bien ky hieu, chuoi bieu dien mot ten bien hay chuoi dien ta mot bieu thc; new
la mot bien ky hieu hoac bien so hoac bieu thc. Th du, subs(a+b,a,4) tra ve
4+b (a c thay the bang 4).
Lenh subs cung cho phep thay the nhieu bien cung mot luc. Th du,
subs(cos(a)+sin(b),{a,b},{sym(alpha),2})
tra ve cos(alpha)+sin(2) (a c thay the bang chuoi alpha, b c thay the
bang 2).
Neu old va new la cac vect hay mang co cung kch thc, th moi phan t
cua old c thay bi phan t tng ng cua new. Neu s va old la cac vo hng
con new la mang hay mang ma tran (cell array), th cac vo hng c m rong ra
e cho ket qua mang. Th du, subs(exp(a*t),a,-[1 3; 4 2]) tra ve
[ exp(-t), exp(-3*t)]
Hoc MATLAB bang th du 9
[ exp(-4*t), exp(-2*t)]
Trong th du nay a c m rong ra thanh mang roi thay the cac phan t tng ng
cua no bang cac phan t tng ng cua mang -[1 3; 4 2]. Ve mat toan hoc, cac
phep tnh c thc hien nh sau
1 3 t 3 t exp(t) exp(3 t)
exp t = exp =
4 2 4 t 2 t exp(4 t) exp(2 t)
Neu new la cac ma tran mang hay ma tran so, th s thay the c thc hien
tng phan t; ngha la subs(x*y,{x,y},{A,B}) tra ve A.*B khi A, B la ma tran
cac so). Th du, subs(x*y,{x,y},{[0 1;-1 0],[1 -1;-2 1]}) tra ve
[ 0, -1]
[ 2, 0]
EXPAND - khai trien bieu thc ky hieu.
expand(s) viet moi phan t cua bieu thc ky hieu s nh la tch cac tha so
cua no. expand hay c dung vi a thc, ngoai ra no cung c dung e khai
trien cac bieu thc lng giac, ham mu va ham logarit.
Th du:
1) ((x-2)*(x-4)) tra ve x2-6*x+8.
2) expand(cos(x+y)) tra ve cos(x)*cos(y)-sin(x)*sin(y).
3) expand(exp((a+b)2)) tra ve exp(a2)*exp(a*b)2*exp(b2).
4) expand([sin(2*t), cos(2*t)]) tra ve [2*sin(t)*cos(t), 2*cos(t)2-
1].
SIMPLIFY - n gian bieu thc ky hieu.
simplify(s) n gian moi phan t cua ma tran ky hieu s.
Th du:
1) simplify(sin(x)2 + cos(x)2) tra ve 1.
2) Vi rho la bien bieu dien t le vang (th du tren).
>> f = rho2-rho-1
f =
(1/2+1/2*5(1/2))2-3/2-1/2*5(1/2)
>> simplify(f)
f =
0
3) simplify(exp(c*log(sqrt(alpha+beta)))) tra ve (alpha+beta)(1/2*c).
Chu y, lenh gan bieu thc di ay
>> f = sym(a*x2 + b*x + c)
khong tao cac bien tng ng vi cac t a, b, c, va x cua bieu thc. e thiet lap
cac phep toan ky hieu (e.g., tch phan, vi phan, thay the, etc.) tren f, ta can phai tao
10 Trnh Anh Ngoc
>> x = sym(x,real);
>> y = sym(y,real);
hay hieu qua hn
>> syms x y real
tao cac bien ky hieu x va y co tnh chat toan hoc them vao la cac bien thc. ieu
nay co ngha la bieu thc
f = x2 + y 2
la khong am. Suy ra,
z = x + I*y
la mot (hnh thc) bien phc va co the tnh toan nh so phc. Cac lenh conj(x),
conj(z), expand(z*conj(z)) tra lai x, x - i*y, x 2 + y2 (lenh conj la
toan t lien hp phc). Neu conj(x) == x tra lai 1, th x la mot bien thc. e
xoa tnh chat "thc" cua x, ta dung lenh
>> syms x unreal
hay
>> x = sym(x,unreal)
>> clear x
khong lam x tr thanh bien khong thc!
c) Dung sym e truy xuat cac ham Maple. Ta co the truy xuat ham giai tha
k! cua Maple, bang cach dung sym,
>> kfac = sym(k!).
e tnh 6! hay n!, go
>> syms k n
>> subs(kfac,k,6)
ans =
720
>> subs(kfac,k,n)
ans =
n!
d) Tao cac ham tru tng. Lenh
>> f = sym(f(x))
tao bien ky hieu f tac ong giong nh f(x) va co the c tnh toan bang cac lenh
cua Symbolic Math Toolbox. Th du, xay dng t sai phan cap 1, lenh
>> df = (subs(f,x,x+h) - f)/h
hay
>> syms x h
>> df = (subs(f,x,x+h)-f)/h
tra ve
df =
(f(x+h)-f(x))/h
e) Tao cac ham toan hoc ky hieu
Cach 1 - dung cac bieu thc ky hieu. Day cac lenh
>> syms x y z
12 Trnh Anh Ngoc
Quy tac: Bien ky hieu mac nhien trong mot bieu thc ky hieu la ch cai gan x nhat.
Neu co hai ch cai gan x nh nhau, ch cai ng sau trong bang ch cai c chon.
x + 2y + 4z = 31
5x + y + 2z = 29
3x y + z = 10
0 1 2 14
0 0 3 15
Ban oc thc hien not phan con lai (phep the ngc).
x + 2y + 2z = 0
2x + (m 2)y + (m 5)z = 2
mx + y + (m + 1)z = 2
x =
-4/(m-1)
>> y=d2/d
y =
0
>> z=d3/d
z =
(2*m-6)/(m2-4*m+3)
>> z=simplify(z)
z =
2/(m-1)
Trng hp m = 1
>> subs(d1)
ans =
8
he vo nghiem. Trng hp m = 3 ta co d1 = d2 = d3 = 0 trng hp nay phai xet
cu the va dung phng phap Gauss, danh cho ban oc.
Chu thch 1. Lenh factor(s) tra ve vect cha cac tha so nguyen to cua s. Trong
th du nay ta thay factor co the phan tch a thc thanh tch.
Th du 3. Cho day
1 1 1 1
un = + + + ...+ .
n+1 n+2 n+3 n+n
2
Cong thc ong cua mot bieu thc la cong thc ma so phep tnh can thc hien la xac
nh. ay cong thc cua un co so phep tnh tang theo ch so n (khong xac nh).
3
T ay, ngoai mot vai trng hp, cu phap cua cac lenh Matlab se khong c phat bieu
tng minh, ban nen hoc (oan) cu phap cua no thong qua th du hien hanh, va ch nen
dung en help khi thay that can thiet.
Hoc MATLAB bang th du 17
1 1 1 1 1 1 1 1
un = + + +...+
1 + 1/n n 1 + 2/n n 1 + 3/n n 1+1n
suy ra
Z 1
dx
lim un = = ln(1 + x)|10 = ln(2).
n 0 1+x
Chu thch 2. ay ta gap lenh limit - lay gii han mot bieu thc. Lenh nay xuat
hien di nhieu dang thc:
limit(F,x,a) lay gii han cua bieu thc ky hieu F khi x a.
limit(F,a) dung findsym(F) nh la bien oc lap.
limit(F) dung a = 0 nh la iem gii han.
limit(F,x,a,right) hay limit(F,x,a,left) lay gii han mot pha.
Th du:
>> syms x a t h
Khi o:
limit(sin(x)/x) tra ve 1
limit((x-2)/(x2-4),2) tra ve 1/4
limit((1+2*t/x)(3*x),x,inf) tra ve exp(6*t)
limit(1/x,x,0,right) tra ve inf
limit(1/x,x,0,left) tra ve -inf
limit((sin(x+h)-sin(x))/h,h,0) tra ve cos(x)
v = [(1 + a/x)x, exp(-x)];
limit(v,x,inf,left) tra ve [exp(a), 0]
Th du 4. Khao sat s hoi tu cua day {xn } xac nh bi cong thc truy hoi
p
x1 = 2, xn = 2 xn1 (n 2).
Ket qua tra ve cho thay day khong n ieu. Nhng "hnh nh" day hoi tu ve
1 (dao ong quanh gia tr 1). ieu nay dan ta en y tng dung nguyen ly anh xa co.
De thay, vi moi n
0 xn 2 < 1.5.
Ky hieu f (t) = 2 t, ta co xn = f (xn1 ). Hn na,
xn xn1 = f 0 (x)(xn1 xn2 ) xn2 < x < xn1 hay xn1 < x < xn2 .
Dung Matlab khao sat ham so f 0 (t) tren oan [0, 1.5]
>> syms t
>> f=sqrt(2-t);
>> df=diff(f)
df =
-1/2/(2-t)(1/2)
>> ezplot(df,[0 1.5])
o th (hnh 6) cho thay max[0,1.5] |f 0(t)| < 1, f la anh xa co tren [0, 1.5]. Chng
minh chi tiet danh cho ban oc.
Th du 5. Giai phng trnh vi phan (x2 +1)dy +ydx = 0 vi ieu kien au y(1) = 1.
Ta co the giai ngay phng trnh tren bang cach goi ham dsolve. Muc ch
va cu phap cua ham nay c the hien neu ta goi help dsolve t dau nhac Matlab.
>> y=dsolve((1+x2)*Dy+y,y(1)=1,x)
y =
1/exp(-1/4*pi)*exp(-atan(x))
dy dx
+ 2 .
y x +1
>> tp1=int(1/y,y)
tp1 =
log(y)
>> tp2=int(1/(x2+1),x)
tp2 =
atan(x)
Nghiem tong quat cua phng trnh la
ln y + arctgx = C.
e tm nghiem rieng ta dung Matlab tr giup viec xac nh hang so tch phan C.
>> syms c
>> pt=subs(tp1+tp2+c,{x,y},{1,1})
pt =
1/4*pi+c
>> c=solve(pt,c)
c =
-1/4*pi
Vay nghiem can tm la
ln y + arctgx = .
4
Chu thch 3. Trong th du ta gap hai lenh mi cua Matlab: int va solve.
INT - tch phan ham so. Cu phap:
int(s) la tch phan bat nh cua s oi vi bien ky hieu nh c xac nh
bi findsym. Neu s la hang th tch phan c lay vi x.
20 Trnh Anh Ngoc
y
y0 = x cos x.
x
Hoc MATLAB bang th du 21
ay la phng trnh vi phan tuyen tnh cap mot. Nghiem tong quat:
y 0 + p(x)y = q(x).
Nhac lai, nghiem tong quat cua phng trnh vi phan tuyen tnh cap mot co dang:
y = yp + Cy1
vi Cy1 la nghiem tong quat cua phng trnh thuan nhat tng ng (y1 la nghiem
c s); yp la mot nghiem rieng cua phng trnh xac nh bi:
Z
yp = G1(x, s)q(s)ds
trong o
y1 (x)
G1(x, s) =
y1 (s)
la ham Green cap mot, va s c thay bang x sau khi lay tch phan.
Bay gi ta giai phng trnh. Phng trnh thuan nhat tng ng (phng trnh
co bien phan ly)
y dy dx
y0 = 0 hay = .
x y x
y 00 + a(x)y 0 + b(x)y = 0.
22 Trnh Anh Ngoc
2
d2 d d
y1(x) + a(x) y1(x) + b(x)y1(x) u(x) + u(x) y1(x)
dx2 dx dx2
d d d
+2 u(x) y1(x) + a(x) u(x) y1(x)
dx dx dx
d2 d d d
u(x) y1(x) + 2 u(x) y1(x) + a(x) u(x) y1(x)
dx2 dx dx dx
Hoc MATLAB bang th du 23
R
e ha bac at v = u0 hay u = vdx. Trc het a vao ham tru tng v
>> v=sym(v(x));
>> p=subs(p,u,int(v));
>> pretty(p)
d d
v(x) y1(x) + 2v(x) y1(x) + a(x)v(x)y1(x)
dx dx
Phng trnh nhan c la phng trnh vi phan cap mot co bien phan ly. Tach
bien. Ta thc hien lien tiep hai lan lenh collect; xem chu thch ben di ve lenh
collect va giai thch ly do phai thc hien hai lan.
>> p=collect(collect(p/v/y1,v),y1)
p =
diff(v(x),x)/v(x)+2*diff(y1(x),x)/y1(x)+a(x)
Lay tch phan. Ta can tnh tch phan tng so hang cua p. e ch nh so hang
trong mot bieu thc ta goi lenh op cua Maple. Cu phap cua lenh nay trong Maple
la op(i,s) - lay so hang th i trong bieu thc s. e goi mot lenh cua Maple. Neu
trong Maple lenh o c viet la
function(arg1, arg2, ...)
th trong Matlab e thc hien lenh o ta viet
maple(function,arg1,arg2,..,) .
>> p=int(maple(op,1,pp))+int(maple(op,2,pp))+ int(maple(op,3,pp))
Warning: Explicit integral could not be found.
In D:\MATLABR11\toolbox\symbolic\@sym\ int.m at line 58
p =
log(v(x))+2*log(y1(x))+int(a(x),x)
Xac nh v ta lam nh sau
>> p1=subs(p,v,m);
>> v=solve(p1,m)
v =
1/exp(int(a(x),x))/y1(x)2
Tai sao ta khong giai trc tiep ra v? V m cha c khai bao bien sym nen ta phai
at no gia hai dau nhay, ch nh chuoi.
>> u=int(v)
Warning: Explicit integral could not be found.
In D:\MATLABR11\toolbox\symbolic\@sym\ int.m at line 58
u =
int(1/exp(int(a(x),x))/y1(x)2,x)
Tom lai,
Z
dx
y2 = y1 R . (1)
y12 exp( adx)
24 Trnh Anh Ngoc
p
1a (1 a)2 4b
m12 = .
2
Cac nghiem c s:
1a (1a)2 4b
y1,2 = x 2 .
Hoc MATLAB bang th du 25
Z b
n (x)m (x)w(x)dx = mn .
a
Ta co the chuan hoa cac ham rieng bang cach chia no cho chuan (o dai) cua no
s
Z b
kn k = n (x)2w(x)dx.
a
26 Trnh Anh Ngoc
(2n + 1)2 2
n = ,
4
(2n + 1)x
n = cos ,
2
n = 0, 1, 2, . . .
Chuan hoa cac ham rieng
>> phi n=cos((pi/2+n*pi)*x);
>> norm=sqrt(int(phi n*phi n,0,1));
>> norm=simple(subs(norm,sin(n*pi),0));
>> phi n=phi n/norm
phi n=
cos((1/2*pi+n*pi)*x)*2(1/2)
Vay cac ham rieng chuan hoa:
(2n + 1)x
n = 2 cos n = 0, 1, 2, . . .
2
T 00 + T 0 X 00
= .
c2 T X
Hoc MATLAB bang th du 29
V ve trai la ham ch cua t con ve phai la ham ch cua x nen ch co the xay ra neu
ton tai hang so e cho
T 00 + T 0 + c2 T = 0 va X 00 + X = 0.
Phng trnh vi phan au tien la phng trnh vi phan tuyen tnh thuan nhat cap
hai he so hang. Tng t, phng trnh vi phan th hai cung la phng trnh vi phan
tuyen tnh thuan nhat cap hai. Ta de dang nhan ra chung thuoc loai Sturm-Liouville.
Vi ieu kien bien a cho bai toan Sturm-Liouville theo bien khong gian la
phng trnh Euler
X 00 + X = 0
X(0) = 0,
0
X (1) + X(1) = 0.
e tranh lap lai lap luan a lam trong th du trc, ta ch xet trng hp
= c2 > 0. Khi o nghiem c s cua phng trnh Euler: X1 = sin(cx), X2 = cos(cx).
>> clear all
>> syms x c c1 c2 real
>> X=c1*sin(c*x)+c2*cos(c*x);
>> eq1=subs(diff(X,x),x,0)
eq1 =
c2
>> eq2=subs(diff(X,x)+X,x,1)
eq2 =
c1*cos(c)*c-c2*sin(c)*c+c1*sin(c)+c2*cos(c)
>> delta=det([maple(coeff,eq1,c1) maple(coeff,eq1,c2);
maple(coeff,eq2,c1) maple(coeff,eq2,c2)])
delta=
-cos(c)*c-sin(c)
Nh vay cac gia tr rieng n la nghiem cua phng trnh
p p
tan( n ) = n ()
cos( n ) sin( n ) + n
norm2 n = .
n
e y rang, sin( n ) = n cos( n ) (do (*)), nen ta co the thu gon bieu thc cua
norm2 n va chuan hoa cac Xn nh sau
>> norm2 n=simplify(subs(ans,sin(sqrt(lambda n)),-sqrt(lambda n)
*cos(sqrt(lambda n))))
norm2 n=
1/2*cos(lambda n (1/2))2+1/2
>> X n=X n/sqrt(norm2 n)
X n=
2*sin(lambda n(1/2)*x)/(2*cos(lambda n(1/2))2+2)(1/2)
2 sin( n x)
Xn (x) = p
cos2 ( n ) + 1
vi n = 1, 2, . . .
Nghiem tong quat tng ng cua phng trnh vi phan theo bien thi gian la
trong o
1p
n = 4n c2 2.
2
t/2
X X e (An cos(n t) + Bn sin(n t)) 2 sin( n x)
u(x, t) = X n Tn = p .
n=1 n=1 cos2 ( n ) + 1
Bay gi ta xet cach a ieu kien au vao nghiem tong quat. Thay ieu kien
th nhat vao nghiem tong quat, tai thi iem x = 0,
X
f (x) = An Xn (x). ()
n=1
e dung ieu kien th hai ta lay ao ham nghiem tong quat theo t
X
t/2 An Bn
ut(x, t) = Xn e + Bn n cos(n t) An n + sin(n t) .
2 2
n=1
Nhac lai rang cac ham rieng cua bai toann Sturm-Liouville chnh quy lap thanh mot
tap ay u oi vi cac ham trn tng khuc tren khoang hu han I. Vay, ca hai
phng trnh tren la khai trien Fourier tong quat cua hai ham f (x) va g(x) theo cac
ham rieng cua he. Cac he so An va Bn co mat trong cac he so cua hai khai trien
nay. Bay gi ta tnh cac he so An va Bn .
Lay tch trong hai ve cac phng trnh (**), (***) vi cac ham rieng. Do tnh
trc chuan cua cac ham rieng, ta co:
Z b
An = f (x)Xn(x)dx,
a
Z b Z b
An 1 f (x)
Bn n = g(x)Xn(x)dx Bn = + g(x) Xn (x)dx.
2 a n a 2
Vay, ta co the viet nghiem hnh thc cua bai toan gia tr au cho phng trnh
song:
X Z b
t/2
u(x, t) = Xn (x)e f (x)Xn (x)dx cos(n t)
n=1 a
Z b
1 f (x)
+ + g(x) Xn (x)dx sin(n t) .
n a 2
32 Trnh Anh Ngoc
Tat ca cac phep toan c thc hien tren da tren gia thiet cac chuoi (**), (***)
hoi tu eu va s thay oi th t lay tong va thc hien phep toan la co hieu lc. Co
the chng to rang neu f (x) va g(x) thoa cac ieu kien bien nh cac ham rieng, th
ca hai chuoi hoi tu eu.
e cu the, ta tnh cac he so An va Bn cho trng hp c = 1/4, = 1/5, va
cac ham trong ieu kien au:
2x2
f (x) = x , g(x) = x.
3
25n 4
n = ,
20
4 2(cos( n ) 1)
An = 3/2
p ,
3n cos2( n ) + 1
8 2(15 cos( n )n + cos( n ) 1)
Bn = 3/2
p .
3 25n 4n cos2 ( n ) + 1
vi n = 1, 2, . . .
e hoan tat ta can tm cac gia tr rieng n la nghiem cua phng trnh (*).
Phng trnh nay ch co the giai xap x. e cu the ta giai tm ba gia tr rieng au
tien. Trc het ta ve o th ham y = tan(v) va ham y = v e xac nh tho nghiem
cua phng trnh
>> syms v real
>> hold on
(lenh hold on nham muc ch gi lai o th a co khi ve o th mi)
>> ezplot(tan(v),[0 20])
>> ezplot(-v,[0 20])
T o th (hnh 7), cac gia tr ban au cua nghiem xap x nen chon la 2, 5, 8.
>> lambda 1=fsolve(inline(tan(v)+v),2)2
Optimization terminated: first-order optimality is less than op-
tions.TolFun.
lambda 1 =
4.1159
>> lambda 2=fsolve(inline(tan(v)+v),5)2
Optimization terminated: first-order optimality is less than op-
tions.TolFun.
lambda 2 =
24.1393
>> lambda 3=fsolve(inline(tan(v)+v),2)3
Optimization terminated: first-order optimality is less than op-
tions.TolFun.
lambda 3 =
63.6591
Phan con lai, thay cac gia tr va tm vao chuoi chat cut gi ba so hang (ng
vi ba gia tr n va tm) c danh lai cho ban oc.
Chu thch 5. Lenh fsolve giai cac phng trnh phi tuyen dang F(X)=0 bang
phng phap bnh phng toi thieu. Cu phap n gian nhat: x=fsolve(fun,x0)
34 Trnh Anh Ngoc
bat au tai x0 va giai cac phng trnh mo ta trong fun. Ta co the ch nh fun
if bieu thc
cac lenh
elseif bieu thc
cac lenh
else
cac lenh
end
Cac lenh c thc hien neu phan thc cua bieu thc khac khong. Cac phan else
va elseif la tuy chon. 'bieu thc' trong lenh if thng co dang:
'bien' lay gia tr 'gia tr au', sau moi lan thc hien cac lenh c tang them mot
lng 'bc gia tang', neu 'bien' van con "nho hn" th cac lenh van c thc hien.
WHILE - lap lai cac mot so lan khong xac nh
Dang chung cua lenh while la
Cac lenh c thc hien khi phan thc cua 'bieu thc' khac khong. 'bieu thc' trong
lenh while thng co dang:
trong o R la ==, <, >, <=, >=, hay =. Lenh break co the c dung e dng vong
lap.
SWITCH - chuyen oi gia nhieu trng hp tren c s bieu thc
Dang chung cua lenh switch la
36 Trnh Anh Ngoc
(2) (2)
aij = aij mi1a1j , bi = bi mi1 b1, i = 2, . . . , n.
Hoc MATLAB bang th du 37
Neu a22 6= 0, tiep theo bang cach tng t ta kh x2 t (n 2) phng trnh cuoi
(2)
cua he phng trnh nay. Sau k 1 bc, k n, cua phep kh Gauss ma tran A tr
thanh ma tran co dang
trong o ta a at A(1) = A, b(1) = b. Cac phan t cheo a11 , a22 ,. . . , xuat hien trong
(1) (2)
a11 a12 . . . a1k
a21 a22 . . . a2k
Ak = .. .. .. .
. . .
ak1 ak2 . . . akk
Cac phan t tru aii , i = 1, . . . , n, trong phep kh Gauss la khac khong neu va ch
(i)
a(n) (n)
nn xn = bn
(n)
(ann 6= 0).
Cac an cua phng trnh co the tnh bang cong thc truy hoi
n
!
(i)
X (i) (i)
xn = bn(n)/a(n)
nn , xi = bi aik xk /aii , i = n 1, . . ., 1.
k=i+1
(k)
akk = 0.
Neu A khong suy bien, th k cot au cua ma tran A la oc lap tuyen tnh. ieu nay
cung ung vi ma tran a bien oi. Ngha la ton tai apk 6= 0 (k < p n). Bang cach
hoan v dong k va dong p th phan t nay co the lay lam phan t tru va phep kh
c tiep tuc. Tom lai, ma tran khong suy bien bat ky co the dan ve dang tam giac
tren bang phep kh Gauss neu phep hoan v dong c dung neu can.
Neu rank(A) < n th co the xay ra bc th k 1 nao o
(k)
aik = 0, i = k, . . . , n.
a(k)
pq ,
ta co the mang no en v tr tru bang cach hoan v dong k vi p, cot k vi q (khi cot
cua ma tran A b hoan v th ta cung phai hoan v cac phan t tng ng trong vect
x. Tien hanh theo cach nay moi ma tran A eu co the a ve dang hnh thang
(1)
... ...
(1) (1) (1) (1)
a11 a1r a1,r+1 a1n b1
.. .. .. .. .
0 . . . . ..
.. (r) (r)
. ... arn br
(r) (r)
A(r) = arr ar,r+1 , b(r) = (r) ,
0 ... 0 0 ... 0 br+1
.. .. .. .. ..
. . . . .
... ...
(r)
0 0 0 0 bn
bc r = rank(A).
Cac phan t tru nho co the dan en ket qua khong chnh xac. Co mot cach e
tranh phan t tru nho c goi la phep xoay cuc bo. Theo cach nay, khi kh xk , ta
chon he so ln nhat (ve gia tr tuyet oi) cua xk trong nk +1 phng trnh cuoi nh
la phan t tru. Ngha la, neu |alk | la ln nhat cua cac |ajk | vi j = k, k + 1, . . ., n
(k) (k)
ta hoan v dong k va l. Bang cach anh so lai ta co the gia s rang phan t tru akk
(k)
co o ln ln nhat.
Hoc MATLAB bang th du 39
x1 + x2 + x3 = 1
3x1 + x2 3x3 = 5
x1 2x2 5x3 = 10
end
x(n)=ad(n,n+1)/ad(n,n);
for i=n-1:-1:1
x(i)=ad(i,n+1);
for j=i+1:n
x(i)=x(i)-ad(i,j)*x(j);
end
x(i)=x(i)/ad(i,i);
end
disp(nghiem cua he:)
x
Neu ham lien tuc f (x) co dau oi nhau tai cac iem x = B va x = C, th no
co t nhat mot khong iem trong khoang gia B va C. Phng phap chia oi (hay
tm kiem nh phan) c at tren s kien nay. Neu f (B)f (C) < 0, ham f (x) c
anh gia tai iem gia M = (B + C)/2 cua khoang. Neu f (M ) = 0, mot khong
iem c tm thay. Neu khac, f (B)f (M ) < 0 hoac f (M )f (C) < 0. Trong trng
hp au co t nhat mot khong iem gia M va B, va trong trng hp th hai co
t nhat mot nghiem gia C va M . Theo cach nay mot khoang cha nghiem c
tm thay ma co chieu dai bang na chieu dai khoang ban au. Thu tuc c lap lai
cho en khi nh v c nghiem vi o chnh xac mong muon.
Hoc MATLAB bang th du 41
Chng trnh goi function f1 tra lai gia tr cua ham f (x)
function v=f1(x)
v=x^3-3*x^2+x+1;
Th du 13. Giai phng trnh f (x) = 0 - Thuat toan Newton va thuat toan day cung
Ca hai thuat toan eu xap x ng cong y = f (x) bang ng thang y = L(x)
roi sau o xap x nghiem phng trnh f (x) = 0 bang nghiem cua phng trnh
42 Trnh Anh Ngoc
L(x) = 0. Phng phap Newton lay y = L(x) la tiep tuyen vi ng cong y = f (x)
tai iem xap x trc o xi va lay iem xap x ke tiep xi+1 la nghiem cua phng
trnh L(x) = 0, theo cong thc taylor, ta co f (x) f (xi ) + f 0 (xi )(x xi ) = 0, suy ra
f (xi )
xi+1 = xi .
f 0 (xi )
Thuat toan day cung nhan c t thuat toan Newton bang cach xap x f 0(xi ) bang
t sai phan
f (xi ) f (xi1 )
f 0 (xi ) .
xi xi1
xi xi1
xi+1 = xi f (xi ) .
f (xi ) f (xi1 )
2). Ta ap dung thuat toan Newton vi iem xap x ban au lay bang 2. ieu
kien dng thuat toan la |xi+1 xi | < va e tranh trng hp xau - chng trnh
thc hien qua lau ta dung vong lap for ch nh so lan lap toi a.
Chng trnh goi function f2 tra lai gia tr cua ham f (x) va df2 tra lai gia tr cua
ham f 0(x)
function v=f2(x)
v=x^2-2;
function v=df2(x)
v=2*x;
so lan lap:
i =
4
nghiem xap xi:
xm =
44 Trnh Anh Ngoc
1.4142
Ap dung thuat toan day cung chng trnh viet cho thuat toan Newton c
bien oi mot chut
% chuong trinh 4 - giai phuong trinh bang phuong phap day cung
% chuong trinh goi function f2
clear all
x1=2;
xc=3; % hai diem xap xi ban dau
epsilon=10^(-4);
nmax=100; % so lan lap toi da
for i=1:nmax
xm=xc-f2(xc)*(xc-x1)/(f2(xc)-f2(x1));
if abs(xm-xc)<epsilon
break;
else
x1=xc;
xc=xm;
end
end
disp(so lan lap:)
i
disp(nghiem xap xi:)
xm
so lan lap:
i =
5
nghiem xap xi:
xm =
1.4142
Ban oc hay th nghiem vi cac th du so khac va neu nhan xet (da tren cac ket
qua so) ve ba thuat toan tm nghiem xap x cua phng trnh f (x) = 0.
Th du 14. Giai phng trnh vi phan - Phng phap Euler Trong th du nay ta xet
bai toan xac nh quy ao cua mot hat x0 = (a, b, c) biet trng van toc v: tm ham
Hoc MATLAB bang th du 45
dx
= v(x, t) ()
dt
x(t + t) x(t)
= vx (x, y, z, t),
t
y(t + t) y(t)
= vy (x, y, z, t),
t
z(t + t) z(t)
= vz (x, y, z, t).
t
e nhan c cac phng trnh nay ta a thay ao ham theo thi gian ben ve trai
phng trnh (*) bang sai phan tien cua x tai t.
Giai cac phng trnh tren, ta c
Ve mat vat ly, cac phng trnh tren phat bieu rang v tr cua mot hat tai thi iem
t + t bang v tr tai thi iem trc t cong them mot dch chuyen be trong khoang
thi gian t. Trong khoang thi gian nay hat xem nh co van toc khong oi bang
van toc cua hat tai thi iem t.
Thuat toan
5. Tnh ve phai cua (??), roi toa o cua hat tai thi iem t + t.
46 Trnh Anh Ngoc
Ap dung thuat toan, xac nh quy ao cua hat ban au v tr (1, 1, 1) co van toc:
v = xi + yj + cos tk.
KET LUAN
Tai lieu "Hoc Matlab bang th du" c trnh bay theo quan iem thc dung,
ch hoc nhng g can thiet va hoc chung tai ni chung xuat hien. ieu nay trc
Hoc MATLAB bang th du 47
tien nham at muc ch hoc nhanh ve Matlab, ngoai ra, cach hoc nay con co li
iem la ngi hoc de nh va biet ap dung ngay kien thc ang hoc. Tuy nhien, ay
cha phai la tat ca. Noi dung cua Matlab rat phong phu, kha nang tnh toan cua
Matlab rat a dang. Van con rat, rat nhieu nhng ieu can biet ve Matlab, va nhat
la cho en cuoi tai lieu nay chung ta van cha ban en nhng han che cua Matlab.
Ban oc trong nhng ng dung cua mnh se nhan thay nhng gii han o, se thay
can phai biet them nhng g ve Matlab - nhng noi dung cha c ban en ay.
Khi viet tai lieu nay chung toi ap u mot hy vong - vi tai lieu nay ban oc se cam
thay hng thu hoc va ap dung Matlab trong cong viec hoc tap va nghien cu cua
mnh.
Nh moi th thuoc ve con ngi, tai lieu nay at ham cha nhng ieu sai sot,
chung toi rat mong nhan c nhng ong gop giup hieu chnh nhng sai sot cua
tai lieu. Xin gi nhng y kien nhan xet, nhng ong gop giup hoan thien tai lieu
en cho chung toi theo a ch email: tangoc@hcmuns.edu.vn. Xin chan thanh cam
n.
Trnh Anh Ngoc
48 Trnh Anh Ngoc
Muc luc
1 Vai tro cua may tnh trong nghien cu va ng dung toan hoc . . . . . 1
2 Matlab - phan mem toan hoc . . . . . . . . . . . . . . . . . . . . . . . . . 1
3 Lt qua Matlab - cai nhn au . . . . . . . . . . . . . . . . . . . . . . . . 2
4 Gii thieu ve Symbolic Math Toolbox . . . . . . . . . . . . . . . . . . . . 7
4.1 oi tng ky hieu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.2 Cac phep tnh ky hieu thng dung . . . . . . . . . . . . . . . . . 8
4.3 Mot so cach dung khac cua ham sym . . . . . . . . . . . . . . . . 10
4.4 Bien ky hieu mac nhien . . . . . . . . . . . . . . . . . . . . . . . . 13
4.5 Cac th du tnh toan ky hieu . . . . . . . . . . . . . . . . . . . . . 14
5 Viet chng trnh bang Matlab . . . . . . . . . . . . . . . . . . . . . . . . 34
5.1 Cac cau truc trong ngon ng Matlab . . . . . . . . . . . . . . . . 34
5.2 Mot so chng trnh th du . . . . . . . . . . . . . . . . . . . . . . 36
49