Hoc Nhanh Matlab PDF

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 50

HOC MATLAB BANG TH DU

Trnh Anh Ngoc

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 . . .

1 Vai tro cua may tnh trong nghien cu va ng


dung toan hoc
Cong cu tr giup tnh toan so va ky hieu.
Ve tnh toan so: giup mo phong cac bai toan thuoc lanh vc khoa hoc va ky
thuat, phan tch d lieu.
Ve tnh toan ky hieu: cho phep thc hien, kiem tra cac phep bien oi toan
hoc; d oan, th nghiem cac d oan toan hoc; anh gia thc hanh cac ket qua ly
thuyet.
Hien th cac ket qua bang o hoa.

2 Matlab - phan mem toan hoc


Matlab la mot ngon ng thc hien danh cho tnh toan, ac biet la cac tnh toan ky
thuat. Vi Matlab ta co the tnh toan, hnh dung, va lap trnh cho cac oi tng
toan hoc.
Matlab la mot he thong tng tac ma phan t d lieu c ban cua no la mang
(array). ieu nay, the hien trong ten goi cua no (Matlab la viet tat cua Matrix
laboratory), cho phep ta thc hien de dang cac tnh toan ma tran va vect thng
gap trong cac bai toan ky thuat.
He thong Matlab gom nam phan chnh:
1) Ngon ng Matlab
2) Moi trng lam viec Matlab
3) Quan ly o hoa
4) Th vien cac ham toan hoc Matlab
5) Giao dien chng trnh ng dung Matlab
Trong tai lieu nay ta se lam quen vi cac phan 1) - 4). Ban oc nen tm cac
2 Trnh Anh Ngoc

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.

3 Lt qua Matlab - cai nhn au


Trong muc nay ta se lt qua mot vong Matlab e co mot cai nhn khai quat ve tnh
nang va nhng ac iem ang lu y cua no. e hoc nhanh Matlab ban phai oc tai
lieu nay vi may tnh trc mat. Hay th thc hien cac th du c a ra trong tai
lieu. Quan sat "phan ng" cua Matlab khi x ly cac lenh a vao. T at ra cac th
du e th nghiem, oc ky cac dong canh bao, thong bao loi neu co.

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

Hnh 2: Noi dung workspace c hien th tren ca so Matlab.

tnh toan trong mot bien tam thi goi la "ans".


Ve mat toan hoc ta khong the cong vect vi mot so! Trong th du tren Matlab
a m rong 3 ra thanh ma tran [3 3 3 3 3 3 3 3 3] co cung o dai nh vect
a roi thc hien phep cong.
Neu can thc hien lai mot lenh a c a vao trc o ta co the tai hien
lai lenh nay bang cach nhan phm mot so lan thch hp ma khong can phai go lai
lenh.
Tnh vect d la tong cua hai vect a va b
>> d = a + b
d =
1 3 5 7 9 11 15 15 15 15 15
Chu y: muon cong hai vect th chung phai co cung o dai. Phep tr tren vect
cung c thc hien tng t.
Ma tran
Nhap ma tran vao Matlab giong nh nhap mot vect, ngoai tr moi dong
cach nhau bi dau cham phay hoac enter (return):
Hoc MATLAB bang th du 5

>> 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)

e tm hieu cach dung mot ham Matlab bat ky ch can go


>> help [ten ham]
Matlab cung cho phep ngi s dung tao cac ham rieng cho mnh bang lenh
function (se c gii thieu di ay).
o th
Trong Matlab e ve o th mot ham so ta dung ham plot. Th du e ve o
th ham sin(t), trc het ta tao vect thi gian t va roi tnh gia tr ham sin tai
moi thi iem
>> t = 0:0.25:7;
y =sin(t);
>> plot(t,y)
Chu y: ten ham (plot) viet bang ch thng, dau cham phay cuoi moi cau lenh ch
th Matlab khong the hien ket qua tnh toan ra man hnh.
M-file
M-file la cac file van ban (text) cha ma Matlab. Ten M-file co phan m rong
".m". Co hai loai M-file:
Script, khong co oi so nhap/xuat, giong nh mot "kch ban" ghi cac lenh
tnh toan tuan t ma ngi s dung yeu cau. Khi go ten file dau nhac lenh roi
nhan phm enter, Matlab se thc hien cac lenh ghi trong file, tren d lieu hien hanh
trong vung lam viec (workspace). Trong thc hanh, e kiem soat d lieu tnh toan,
script file thng bat au bang lenh clear all xoa tat ca cac bien lu tr trong
workspace, va khi tao lai cac bien ma script file can dung.
Function, co oi so nhap/xuat. Loai file nay thng c dung e nh ngha
ham (giong nh chng trnh con). Th du M-file rank.m
Hoc MATLAB bang th du 7

Hnh 3: o th ham y = sin(t) vi 0 t 7.

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.

4 Gii thieu ve Symbolic Math Toolbox


Muc nay gii thieu cac net chnh cua Symbolic Math Toolbox, mot thanh phan cua
Matlab am trach viec tnh toan ky hieu.
8 Trnh Anh Ngoc

4.1 oi tng ky hieu


oi tng ky hieu (symbolic object) hay sym la mot cau truc d lieu lu tr mot chuoi
(string) bieu dien cua ky hieu. oi tng ky hieu c dung e bieu dien cac bien,
cac bieu thc va cac ma tran ky hieu. e tao cac bien va bieu thc ky hieu ta dung
ham sym. Th du,
>> x = sym(x)
tao mot bien ky hieu x lu tr ky t x va
>> a = sym(alpha)
tao mot bien ky hieu a lu tr chuoi cac ky t alpha. Th du khac,
>> rho = sym((1 + sqrt(5))/2)
tao mot bien ky hieu bieu dien t le vang (golden ratio).

4.2 Cac phep tnh ky hieu thng dung


Ta co the thc hien nhieu phep tnh tren cac bien ky hieu. Di ay la mot vai
phep tnh thng dung.
SUBS - thay the ky hieu.
subs(s) thay the tat ca cac bien trong bieu thc ky hieu s bang cac gia tr
nhan c t ham goi, hay vung lam viec. Th du, gia s a=980, C1=3 a ton tai
trong vung lam viec.
>> y=exp(-a*t)*C1;
>> subs(y)
tra ve ans=3*exp(-980*t)
subs(s,new) thay the cac bien ky hieu t do trong s bang new. Th du, s
la bieu thc f=x2
>> subs(s,2)
tra ve ans=4 (x c thay bang 2 trong bieu thc s).

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

cac bien mot cach tng minh


>> a = sym(a)
>> b = sym(b)
>> c = sym(c)
>> x = sym(x)
hay n gian
>> syms a b c x
SIMPLE - tm dang n gian nhat cua bieu thc ky hieu hay ma tran.
simple(s) co gang th nhieu bien oi ai so khac nhau e n gian s, roi
tra ve bieu thc ngan nhat.
Di ay la ket qua tra ve cua simple(s) kem theo ch nh phep bien oi
c dung.

s ket qua phng phap


cos(x)2+sin(x)2 1 simplify
2*cos(x)2-sin(x)2 3*cos(x)2-1 simplify
cos(x)2-sin(x)2 cos(2*x) combine(trig)
cos(x)+(-sin(x)2)(1/2) cos(x)+i*sin(x) radsimp
cos(x)+i*sin(x) exp(i*x) convert(exp)
(x+1)*x*(x-1) x3-x combine(trig)
x3+3*x2+3*x+1 (x+1)3 factor
cos(3*acos(x)) 4*x3-3*x expand
log(x) + log(y) log(x*y) combine

4.3 Mot so cach dung khac cua ham sym


a) Chuyen oi mot ma tran t dang so sang dang ky hieu. Lenh A = hilb(3)
sinh ra ma tran Hilbert 3x3
A =
1.0000 0.5000 0.3333
0.5000 0.3333 0.2500
0.3333 0.2500 0.2000
Ap dung sym cho A
>> A = sym(A)
ta c (chnh xac vo cung) dang ky hieu cua ma tran Hilbert 3x3
A =
[ 1, 1/2, 1/3 ]
[ 1/2, 1/3, 1/4 ]
[ 1/3, 1/4, 1/5 ]
b) Xay dng cac bien thc va phc. Lenh sym cho phep ch nh cac tnh chat
toan hoc cua bien ky hieu bang cach dung tuy chon real. Ngha la, cac lenh
Hoc MATLAB bang th du 11

>> 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

>> r = sqrt(x2 + y2 + z2)


>> t = atan(y/x)
>> f = sin(x*y)/(x*y)
sinh ra cac bieu thc ky hieu r, t, va f. Ta co the dung diff (ao ham), int (tch
phan), subs, va cac ham Symbolic Math Toolbox khac e tnh toan nhng bieu thc
nh vay.
Cach 2 - tao mot M-File. Muon tao ham sinc (=sin(x)/x), ta tao mot M-
file trong th muc @sym.
function z = sinc(x)
% SINC The symbolic sinc function
% sin(x)/x. This function
% accepts a sym as the input argumen.
if is equal(x,sym(0))
z = 1;
else
z = sin(x)/x;
end
Ham plot c dung e ve o th cua cac ham c cho di dang "so", trong
th du ve o th tren, ham y=sin(t) ham c cho di dang "so" nh la day cac
iem hnh hoc (t(i),y(i)) (i=1,2,...,29) c xac nh bi hai vect t va y.
Ham plot ve o th nay bang cach noi cac iem bi cac oan thang. Vi cac ham
toan hoc c nh ngha bang ky hieu Matlab cung cap ham ezplot e ve o th
cua chung,
>> syms x real
>> ezplot(sin(x))
cho ta o th cua ham sin trong khoang mac nhien [2, 2]. Neu muon ve o th

Hnh 4: o th ham sin(x) dung lenh ezplot(sin(x)).

trong khoang [0, 7] th ta phai ch nh ro


Hoc MATLAB bang th du 13

>> ezplot(sin(x),[0 7])

Hnh 5: o th ham sin(x) dung lenh ezplot(sin(x),[0 7]).

4.4 Bien ky hieu mac nhien


Khi ta a vao mot ham toan hoc bang bieu thc cua no, th du
>> clear all
>> syms x n a t b
>> f = xn
>> g = sin(a*t+b)
Matlab se t ong nhan dang au la bien ky hieu. Va khi c yeu cau tnh ao
ham cua cac ham nay, khong ch nh bien oc lap, th Matlab se tnh theo cac bien
ky hieu mac nhien. Vi cac ham tren chung ta nhan c
n*x(n-1)
a*cos(a*t+b)
Lam the nao e biet bien ma Symbolic Math Toolbox lay ao ham? Cau tra
li la lenh findsym.
>> findsym(f,1)
tra ve
ans =
x
Neu trong findsym vang mat oi so th hai th Matlab tra ve mot danh sach tat ca
cac bien
>> findsym(g)
ans =
a, b, t
14 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.

4.5 Cac th du tnh toan ky hieu


Bay gi chung ta bat au hoc cach dung Matlab, cu the la Symbolic Math Toolbox,
e tnh toan ky hieu thong qua cac th du.

Th du 1. Dung phng phap kh Gauss giai he phng trnh ai so tuyen tnh

x + 2y + 4z = 31
5x + y + 2z = 29
3x y + z = 10

a vao ma tran cac he so ni rong


>> clear all >> a=[1 2 4 31; 5 1 2 29; 3 -1 1 10]
a =
1 2 4 31
5 1 2 29
3 -1 1 10
Dung dong 1 kh cac so hang ben di a11
>> a(2,:)=a(2,:)-5*a(1,:)
a =
1 2 4 31
0 -9 -18 -126
3 -1 1 10
>> a(3,:)=a(3,:)-3*a(1,:)
a =
1 2 4 31
0 -9 -18 -126
0 -7 -11 -83
Dung dong 2 kh cac so hang ben di a22
>> a(2,:)=a(2,:)/(-9)
a =
1 2 4 31
0 1 2 14
0 -7 -11 -83
>> a(3,:)=a(3,:)+7*a(2,:)
a =
1 2 4 31
Hoc MATLAB bang th du 15

0 1 2 14
0 0 3 15
Ban oc thc hien not phan con lai (phep the ngc).

Th du 2. Giai va bien luan he phng trnh ai so tuyen tnh

x + 2y + 2z = 0
2x + (m 2)y + (m 5)z = 2
mx + y + (m + 1)z = 2

Dung quy tac Cramer


>> clear all
>> syms m
>> a=[1 2 2; -2 m-2 m-5; m 1 m+1];
>> b=[0; 2; -2];
Tnh cac nh thc c ban
>> d1=det(a)
d =
m2-4*m+3
d=factor(d1)
d =
(m-1)*(m-3)
Thay cot 1 cua a bang b. e tranh thay oi ta a vao ma tran ad=a
>> ad=a;
>> ad(:,1)=b;
>> d1=det(ad)
d1 =
-4*m+12
Lam tng t
>> ad=a;
>> ad(:,2)=b;
>> d2=det(ad)
d2 =
0
>> ad=a;
>> ad(:,3)=b;
>> d3=det(ad)
d3 =
2*m-6
Khi m 6= 1 va m 6= 3 he co nghiem duy nhat
>> x=d1/d
x =
(-4*m+12)/(m2-4*m+3)
>> x=simplify(x)
16 Trnh Anh Ngoc

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

Chng minh day {un } hoi tu va tm gii han cua no.


Thong thng, e tm gii han cua cac day so ma so hang tong quat cua day la
mot tong, trc het ta tnh tong e xac nh un di dang cong thc ong2 . Trong
Matlab lenh symsum cho ta cong cu tnh tong rat tien li3.
>> clear all
>> syms n,i
>> un=symsum(1/(i+n),i,1,n)
un =
Psi(2*n+1)-Psi(n+1)
en ay ta gap mot ham ac biet, ham digamma (ban co the dung help Psi e
biet them ve ham nay). Tuy nhien, neu tiep tuc dung lenh limit ta se c gii

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

han cua day


>> limit(un,n,inf)
ans =
log(2)
Ket qua tra ve cung bieu thc xac nh un gi y cho ta, un la tong tch phan cua
ham f (x) = 1/(1 + x) tren oan [0, 1] vi phan hoach eu xi = 1/n va cac iem
i la iem cuoi cua cac oan con. Ta co

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).

Y tng au tien en vi ta la ap dung nh ly hoi tu cho day n ieu. Tuy


nhien, dung Matlab tnh 20 so hang au cua day
18 Trnh Anh Ngoc

>> clear all


>> x(1)=sqrt(2);
>> for i=2:20, x(i)=sqrt(2-x(i-1)); end
>> x
x =
Columns 1 through 15
1.4142 0.7654 1.1111 0.9428 1.0282 0.9858 1.0071 0.9965 1.0018 0.9991
1.0004 0.9998 1.0001 0.9999 1.0000
Columns 16 through 20
1.0000 1.0000 1.0000 1.0000 1.0000 1.4142 0.7654 1.1111 0.9428 1.0282
0.9858 1.0071 0.9965 1.0018

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))

ay ta ch dung Matlab tr giup khi tnh toan. ay la phng trnh vi phan co


bien phan ly, tach bien ta c:

dy dx
+ 2 .
y x +1

>> clear all


>> syms x y
Hoc MATLAB bang th du 19

Hnh 6: o th ham f 0 (t), th du 4.

>> 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

int(s,v) la tch phan bat nh cua s lay oi vi v. v la bien ky hieu vo


hng.
int(s,a,b) la tch phan xac nh cua s oi vi bien ky hieu cua no t a
en b. a, b la cac so hay bien ky hieu vo hng.
int(s,v,a,b) la tch phan xac nh cua s oi vi v t a en b.
SOLVE - giai phng trnh ai so. Cu phap:
solve(eqn 1,eqn 2,...,eqn N)
solve(eqn 1,eqn 2,...,eqn N,var 1,var 2,...,var N)
solve(eqn 1,eqn 2,...,eqn N,var 1,var 2,...var N)
Cac eqn i la cac bieu thc ky hieu hay chuoi cac phng trnh ch nh. Cac
var j la cac bien ky hieu hay chuoi ch nh cac bien cha biet. Neu cac var j
khong c ch nh th cac an c xac nh bi findsym.
Neu khong co nghiem giai tch c tm thay va so phng trnh bang so an
th nghiem so c tm.
e biet cach xuat ket qua cua solve xem cac th du sau.
1) solve(p*sin(x) = r) chon 'x' nh la an, tra ve ans = asin(r/p).
Chu y, thay v viet p*sin(x) = r ta co the viet p*sin(x) - r; Matlab mac
nhien hieu ve hai la 0.
2) [x,y] = solve(x2 + x*y + y = 3,x2 - 4*x + 3 = 0) tra ve
x =
[ 1]
[ 3]
y =
[ 1]
[ -3/2]
3) s = solve(x2*y2 - 2*x - 1 = 0,x2 - y 2 - 1 = 0) tra ve
nghiem dang cau truc
s =
x: [8x1 sym]
y: [8x1 sym]
4) [u,v] = solve(a*u2 + v2 = 0,u - v = 1) xem a nh la tham
so va giai hai phng trnh tm u,v. So sanh vi th du ben di 5).
5) s = solve(a*u2 + v2,u - v = 1,a,u) xem v nh la tham
so, giai hai phng trnh, va tra ve s.a, s.u.

Th du 6. Giai phng trnh vi phan xy 0 y = x2 cos x.


Phng trnh co the viet lai di dang chuan,

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

Dung Matlab tr giup lay tch phan


>> clear all
>> syms x
>> int(1/x,x)
ans =
log(x)
V ln y = ln x nen nghiem c s: y1 = x.
Ham Green cap mot: G1(x, s) = x/s. Dung Matlab tr giup tm nghiem rieng
>> y1=x;
>> syms s
>> yp=subs(int(y1/subs(y1,x,s)*s*cos(s),s),s,x)
yp =
x*sin(x)
Vay nghiem tong quat cua phng trnh: y = (C + sin x)x.
Th du 7. Cho phng trnh vi phan tuyen tnh cap hai thuan nhat

y 00 + a(x)y 0 + b(x)y = 0.
22 Trnh Anh Ngoc

Gia s phng trnh co nghiem c s y1 , tm nghiem c s con lai.


Nghiem c s th hai c tm di dang:

y2 (x) = u(x)y1 (x).

Dung Matlab e xac nh u(x)


>> syms x
a vao cac ham tru tng
>> a=sym(a(x));
>> b=sym(b(x));
>> y1=sym(y1(x));
>> u=sym(u(x));
>> y2=u*y1;
Thay y2 vao phng trnh vi phan
>> p=simple(diff(y,2)+a*diff(y)+b*y)
p =
diff(u(x),$(x,2))*y1(x)+2*diff(u(x),x)*diff(y1(x),x)+
u(x)* diff(y1(x),$(x,2))+a(x)*(diff(u(x),x)*y1(x)+
u(x)*diff(y1(x),x))+b(x)*u(x)*y1(x)
Nhom cac so hang co cha u
>> p=collect(p,u)
p =
(diff(y1(x),$(x,2))+diff(y1(x),x)*a(x)+b(x)*y1(x))*
u(x)+diff(u(x),$(x,2))*y1(x)+2*diff(u(x),x)*
diff(y1(x),x)+a(x)*diff(u(x),x)*y1(x)
e thay ro ket qua nhom ta dung lenh pretty
>> pretty(pp)

      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

He so cua u bang khong do y1 la nghiem c s. Matlab khong phat hien c ieu


nay. Ta phai giup!
>> p=subs(p,diff(y1,2)+diff(y1)*a+b*y1,0);
>> pretty(p)

      
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

Chu thch 4. Cu phap cua lenh collect la collect(s,v) trong o s, v la cac


bieu thc ky hieu. Vi lenh nay Matlab tra ve bieu dien mi cua s nh la mot a
thc theo v.
Lenh pretty, co cu phap: pretty(s) - xuat s di dang thc toan hoc, de
oc hn.
Canh bao cua Matlab "Explicit integral could not be found" va cho
biet "van e" nay sinh au la hien nhien v cac ham cho trc khong co bieu
thc toan hoc cu the.

Th du 8. Tm nghiem c s cua phng trnh Cauchy - Euler

x2y 00 + axy 0 + by = f (x),

trong o a, b la cac hang so.


Ta tm nghiem di dang y = xm . Dung Matlab e xac nh m.
>> clear all
>> syms a b x m
>> y=xm
y =
xm
Thay y vao phng trnh vi phan
>> p=simple(x2*diff(y,2)+a*x*diff(y)+b*y)
p =
xm*(m2-m+a*m+b)
Goi lenh coeff cua Maple e lay he so cua x trong bieu thc p
>> p=maple(coeff,p,xm)
p =
m2-m+a*m+b
Giai phng trnh xac nh m. Chu y, ay khong can ch nh an (tai sao?)
>> m=simple(solve(p))
m =
[1/2-1/2*a+1/2*(1-2*a+a2-4*b)(1/2)]
[ 1/2-1/2*a-1/2*(1-2*a+a2-4*b)(1/2)]
Nh vay, noi chung, co hai gia tr m

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

Th du 9. Bai toan gia tr rieng Sturm-Liouville chnh quy


Toan t vi phan L, tac ong len cac ham y(x) xac nh tren I = [a, b], nh
bi:
 
d dy
Ly = p(x) + q(x)y
dx dx

c goi la toan t vi phan Sturm-Liouville tong quat.


Bai toan tm nghiem khong tam thng cua phng trnh vi phan tuyen tnh
thuan nhat:
L + w(x) = 0,
thoa ieu kien bien thuan nhat dang:
1(a) + 2 0(a) = 0, 3 (b) + 4 0(b) = 0
c goi la bai toan gia tr rieng Sturm-Liouville chnh quy vi w la ham trong lng.
Cac ieu kien han che at len he la, tren khoang hu han I, cac ham p(x),
q(x) va w(x) la cac ham thc lien tuc, p(x) va q(x) la dng tren khoang nay. Cac
ieu kien bien c cho tach biet theo tng iem.
Tai mot iem bien, th du a, ieu kien bien chnh quy c phan thanh ba
loai:
1) Loai 1 -- ieu kien Dirichlet y(a) = 0.
2) Loai 2 -- ieu kien Neumann y 0 (a) = 0.
3) Loai 3 -- ieu kien Robin y 0 (a) + hy(a) = 0.
Cac gia tr n lam cho bai toan gia tr rieng Sturm-Liouville co nghiem khong
tam thng c goi la gia tr rieng, nghiem tng ng n c goi la ham rieng.
Ta co cac tnh chat sau:
(i) Ton tai vo so cac gia tr rieng co the sap theo th t o ln tang dan n
vi n = 0, 1, 2, . . .
(ii) Tat ca cac gia tr rieng la thc.
(iii) Vi moi gia tr rieng tng ng vi mot ham rieng duy nhat.
(iv) Cac ham rieng tng ng vi cac gia tr rieng khac nhau trc giao oi vi
ham trong lng w tren I. Neu cac ham rieng c chuan hoa th

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

Mot trng hp ac biet cua phng trnh Sturm -- Liouville vi p(x) = 1,


q(x) = 0 va w(x) = 1 la phng trnh Euler
y 00 + y = 0
Tm gia tr rieng va ham rieng tng ng cho phng trnh Euler tren khoang
I = (0, 1) vi cac ieu kien bien y 0 (0) = 0, y(1) = 0.
>> clear all
>> syms x c k c1 c2 real
a) Trng hp = c2 6= 0
Nghiem ac trng
>> solve(k2-c2,k);
Phng trnh bac hai co hai nghiem. e truy xuat ta viet k(1), k(2).
Nghiem c s, nghiem tong quat
>> y1=exp(k(1)*x);
>> y2=exp(k(2)*x);
>> y=c1*y1+c2*y2;
Dung ieu kien bien
>> eq1=subs(y,x,1);
>> eq2=subs(diff(y),x,0);
Ta xac nh c e he gom eq1 va eq2 co nghiem khong tam thng, ngha la tm c
e nh thc c s cua he bang khong
>> delta=det([maple(coeff,eq1,c1) maple(coeff, eq1, c2);
maple(coeff, eq2, c1) maple(coeff, eq2, c2)])
delta =
-exp(c)*c-exp(-c)*c
>> delta=simplify(delta)
delta =
-c*(1+exp(-2*c))*exp(c)
luon khac khong ( 6= 0), bai toan ch co nghiem tam thng.
b) Trng hp = 0
>> clear all
>> syms x c k c1 c2 real
>> k=solve(k2)
k =
[ 0]
[ 0]
phng trnh ac trng co nghiem kep k = 0.
>> y1=exp(k(1)*x); y2=x*y1; y=c1*y1+c2*y2;
>> eq1=subs(y,x,1); eq2=subs(diff(y),x,0);
>> delta=det([maple(coeff,eq1,c1) maple(coeff, eq1, c2);
maple(coeff, eq2, c1) maple(coeff, eq2, c2)])
delta =
1
Hoc MATLAB bang th du 27

bai toan ch co nghiem tam thng.


c) Trng hp = c2
>> clear all
>> syms x c k c1 c2 n real
>> k=solve(k2+c2,k)
k =
[ i*c]
[ -i*c]
Trng hp nghiem ac trng phc
>> y1=cos(c*x); y2=sin(c*x); y=c1*y1+c2*y2;
>> eq1=subs(y,x,1); eq2=subs(diff(y),x,0);
>> delta=det([maple(coeff, eq1, c1), maple(coeff, eq1, c2);
maple(coeff, eq2, c1), maple(coeff, eq2, c2)])
delta =
cos(c)*c
>> solve(ans,c)
ans=
[ 1/2*pi]
[ 0]
Chu y, oi vi phng trnh cos(c)*c (=0) ch cho nghiem acos(0). Loai nghiem
c=0.
>> cn=pi/2+n*pi;
>> eq1=subs(eq1,c,cn)
eq1 =
-c1*sin(n*pi)+c2*cos(n*pi)
Matlab khong phan biet c n la so nguyen nen khong anh gia c sin(n*pi)
va cos(n*pi) ta phai giup!
>> eq1=subs(eq1,sin(n*pi),0); eq1=subs(eq1, cos (n*pi), (-1)n)
eq1=
c2*(-1)n
>> eq2=subs(eq2,c,cn(1))
eq2 =
c2*(1/2*pi+n*pi)
Nh vay c2=0 con c1 tuy y. Ta chon c1=1
>> phi n=subs(y,{ c,c1,c2},{cn,1,0})
phi n=
cos((1/2*pi+n*pi)*x)
28 Trnh Anh Ngoc

Cac gia tr rieng va cac ham rieng tng ng:

(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

Th du 10. Phng trnh song 1-chieu - Phng phap tach bien


Xet phng trnh ao ham rieng, mo ta phan bo song u(x, t) cho dao ong doc
trong thanh,
utt = c2 uxx ut 0 < x < 1; t > 0.
ieu kien bien:
u(0, t) = 0,
ux (1, t) + u(1, t) = 0.
ieu kien au:
u(x, 0) = f (x),
ut (x, 0) = g(x).

Ta tm nghiem di dang tach bien,


u(x, t) = X(x)T (t).
Thay vao phng trnh ao ham rieng, roi chia hai ve phng trnh cho c2XT ta
c

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

vi cac ieu kien bien

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 ()

va cac ham rieng tng ng la (do c2=0)


p
Xn (x) = sin( n x).

Chuan hoa ham rieng:


>> syms lambda n
>> X n=sin(sqrt(lambda n)*x);
30 Trnh Anh Ngoc

>> norm2 n=int(X n2,x,0,1)


norm2 n=
1/2*(-cos(lambda n(1/2))*sin(lambda n(1/2))+lambda n(1/2))
/lambda n(1/2)
Ket qua tnh bang Matlab cho


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

Tn (t) = et/2 (An cos(n t) + Bn sin(n t)) n = 1, 2, . . .,

trong o

1p
n = 4n c2 2.
2

Ban hay t tm ket qua nay bang Matlab.


Nghiem tong quat cua phng trnh, bang phep chong chap nghiem

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

trong o cac hang so An , Bn c xac nh nh ieu kien au cua bai toan.


Hoc MATLAB bang th du 31

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

Tai thi iem t = 0,



X  
An
g(x) = Xn B n n . ( )
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

Trc het ta thiet lap cong thc tnh A n, B n


>> clear all
>> syms n lambda n x real
>> c=1/4; gamma=1/5;
>> f=x-2*x2/3; g=x;
>> omega n=sqrt(4*lambda n*c2-gamma2)/2;
omega n=
1/20*(25*lambda n-4)(1/2)
>> A n=int(f*sqrt(2)*sin(sqrt(lambda n)*x)/sqrt(cos(sqrt(lambda n))2+1),
x,0,1)
A n=
-1/3*2(1/2)*(sin(lambda n(1/2))*lambda n(3/2)+4*cos(lambda n(1/2))
*lambda n+cos(lambda n(1/2))*lambda n2-4*lambda n)/lambda n(5/2)
/(cos(lambda n(1/2))2+1)(1/2)
>> A n=simplify(subs(A n,sin(sqrt(lambda n)),-sqrt(lambda n)
*cos(sqrt(lambda n))))
A n=
-4/3*2(1/2)*(cos(lambda n(1/2))-1)/lambda n(3/2)
/(cos(lambda n(1/2))2+1)(1/2)
>> B n=int(g*sqrt(2)*sin(sqrt(lambda n)*x)/sqrt(cos(sqrt(lambda n))2+1),
x,0,1)/omega n;
>> B n=simplify(subs(B n,sin(sqrt(lambda n)),-sqrt(lambda n)
*cos(sqrt(lambda n))))
B n=
-40*2(1/2)*cos(lambda n (1/2))/lambda n (1/2)
/(cos(lambda n(1/2))2+1)(1/2)/(25*lambda n-4)(1/2)
Hoc MATLAB bang th du 33

e tien theo doi ta viet lai cac cong thc va tm:


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

Hnh 7: o th ham y = tan(v) va y = v.

bat au tai x0 va giai cac phng trnh mo ta trong fun. Ta co the ch nh fun

la mot oi tng ham inline, th du, x = fsolve(inline(sin(x.*x)),x0).


ay lenh inline(bieuthuc) tao mot oi tng ham inline t mot bieu thc cha
trong chuoi bieuthuc. fun cung co the la mot chuoi cha ten mot ham (mot M-file
hay mot ham nh san) cho phep tnh gia tr cua cac phng trnh vi moi gia tr cu
the cua x, F=fun(x).

5 Viet chng trnh bang Matlab


Chng trnh viet bang ngon ng Matlab gan giong cac ngon ng cap cao quen thuoc
nh Pascal, C. Di ay ta se hoc cach viet chng trnh thong qua cac th du cu the.
Nhng trc het ta can biet cac cau truc thng dung trong ngon ng Matlab.

5.1 Cac cau truc trong ngon ng Matlab


IF - thc hien cac lenh co ieu kien
Dang chung cua lenh if la
Hoc MATLAB bang th du 35

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:

bieu thc 1 R bieu thc 2

trong o R la ==, <, >, <=, >=, hay =.


FOR - lap lai cac lenh mot so lan c ch nh
Dang chung cua lenh for la

for bien = gia tr au : bc gia tang : gia tr cuoi


cac lenh
end

'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

while bieu thc


cac lenh
end

Cac lenh c thc hien khi phan thc cua 'bieu thc' khac khong. 'bieu thc' trong
lenh while thng co dang:

bieu thc 1 R bieu thc 2

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

switch bieu thc


case trng hp 1,
cac lenh
case trng hp 2
cac lenh
...
otherwise
cac lenh
end
Cac lenh theo sau case th i c thc hien khi 'bieu thc' co gia tr 'trng hp i'.
Ngoai cac trng hp c liet ke th cac lenh theo sau otherwise c thc hien.

5.2 Mot so chng trnh th du


Muc nay cha ng mot so chng trnh n gian viet bang ngon ng Matlab. Moi
th du bat au bang c s thuat toan va cuoi cung la chng trnh tnh. Ban oc nen
oc ky phan thuat toan e hieu muc ch va noi dung cua chng trnh. Hay chay
th va tm cach sa oi no neu c.
Th du 11. Giai phng trnh ai so tuyen tnh AX = B - Phep kh Gauss
Nhac lai, he phng trnh ai so tuyen tnh co dang

a11 x1 + a12 x2 + . . . + a1n xn = b1


a21 x1 + a22 x2 + . . . + a2n xn = b2
.. .. .. ..
. . . .
an1 x1 + an2 x2 + . . . + ann xn = bn ,

trong o ve phai bi , i = 1, . . . , n, va cac he so aij , i, j = 1, . . . , n la cac d lieu cho


trc; x1 , . . ., xn la an.
Y tng ang sau phng phap kh Gauss la dung cac phep bien oi s cap e
kh cac an cua he. He phng trnh tng ng, sau khi bien oi, co dang tam giac
tren, c giai bang phep the ngc.
Neu a11 6= 0, th bc au tien ta kh x1 khoi (n 1) phng trnh cuoi
bang cach tr phng trnh th i vi nhan t
mi1 = ai1/a11, i = 2, . . . , n
lan phng trnh au. ieu nay sinh ra mot he rut gon gom (n 1) phng trnh
vi cac an x2 , . . ., xn , trong o cac he so mi c cho bi

(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

(1) (1) (1) (1) (1)


a11 a12 . . . a1k . . . a1n b1
(2) (2) (2) (2)
0 a22 . . . a2k . . . a2n b2
.. .. .. .. ..

. . . . .
A(k) = (k) (k) , b (k)
= (k) ,
0 0 . . . akk . . . akn b
k
.. .. .. .. ..
. . . . .
(k) (k) (k)
0 0 . . . ank . . . ann bn

trong o ta a at A(1) = A, b(1) = b. Cac phan t cheo a11 , a22 ,. . . , xuat hien trong
(1) (2)

qua trnh kh c goi la cac phan t tru.


Ky hieu Ak la ma tran con chnh cua A,


a11 a12 . . . a1k
a21 a22 . . . a2k

Ak = .. .. .. .
. . .
ak1 ak2 . . . akk

V nh thc cua ma tran khong thay oi di phep bien oi s cap th ba nen

(1) (2) (k)


det(Ak ) = a11 a22 akk , k = 1, . . ., n.

Cac phan t tru aii , i = 1, . . . , n, trong phep kh Gauss la khac khong neu va ch
(i)

neu det(Ak ) 6= 0, k = 1, . . ., n. Trong trng hp nay ta co the kh cho en sau bc


th (n 1), con lai mot phng trnh duy nhat

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

Qua trnh nay goi la the ngc.


38 Trnh Anh Ngoc

Gia s bc th k cua phep kh Gauss ta co

(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.

Neu toan bo cac phan t aij = 0, i, j = k, . . . , n th rank(A) = k 1 va ta dng lai.


(k)

Ngc lai, neu co phan t khac khong, chang han

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

Ap dung giai he phng trnh

x1 + x2 + x3 = 1
3x1 + x2 3x3 = 5
x1 2x2 5x3 = 10

e lu gi ma tran cac he so a va ve phai b, trong chng trnh ta a vao ma tran


cac he so ni rong ad. Lenh [v,index]=max(ad(k:n,k)) tra ve hai gia tr: v la
phan t ln nhat cua vect ad(k:n,k) con index la v tr cua phan t o.

% chuong trinh 1 - giai he phuong dstt


clear all
a=[1 1 1; 3 1 -3; 1 -2 -5];
b=[1;5;10];
n=size(a,1);
% ma tran noi rong
ad=a;
ad(:,n+1)=b;
for k=1:n-1
% tim phan tu tru
[v,index]=max(ad(k:n,k));
if v==0
disp(he phuong trinh suy bien)
return
end
% dong chua phan tu tru
index=index+k-1;
% hoan vi dong k va dong index
tam=ad(index,:);
ad(index,:)=ad(k,:);
ad(k,:)=tam;
% dung dong k khu cac dong duoi
for i=k+1:n
for j=k:n+1
ad(i,k:n+1)=ad(i,k:n+1)-(ad(i,k)/ad(k,k))*ad(k,k:n+1);
end
end
end
% phep the nguoc
if ad(n,n)==0
disp(he phuong trinh suy bien)
return
40 Trnh Anh Ngoc

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

Ket qua tnh toan

nghiem cua he:


x =
6.0000 -7.0000 2.0000
Th du 12. Giai phng trnh f (x) = 0 - Thuat toan chia oi khoang

Hnh 8: o th ham so f (x) = x3 3x2 + x + 1.

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

Ap dung giai phng trnh x3 3x2 + x + 1 = 0 (phng trnh nay co nghiem


chnh xac: 1, 1 2). e co cai nhn s bo ve phng trnh cho ta dung Matlab ve
o th cua ham f (x) = x3 3x2 + x + 1. T o th (hnh 8) ta thay phng trnh co
ba nghiem n, lan lt nam trong cac khoang [0.5, 0], [0.5, 1.5], [2, 3]. Nh mot th
du ap dung ta viet chng trnh tm nghiem xap x cua phng trnh trong khoang
[0.5, 0].

% chuong trinh 2 - giai phuong trinh bang phuong phap chia


% doi khoang
% chuong trinh goi function f1
clear all
b=-0.5;
c=0;
epsilon=10^(-4);
m=b; % m duoc khoi tao bang b
while (abs(c-b)>=epsilon)&(f1(m)~=0)
m=(b+c)/2;
if f1(b)*f1(m)<0
c=m;
else
b=m;
end
end
disp(nghiem xap xi:)
m

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;

Ket qua tnh toan

nghiem xap xi:


m =
-0.4142

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

Hnh 9: Thuat toan Newton.

t sai phan

f (xi ) f (xi1 )
f 0 (xi ) .
xi xi1

T ay ta suy ra cong thc lap cua thuat toan day cung

xi xi1
xi+1 = xi f (xi ) .
f (xi ) f (xi1 )

Ap dung giai phng trnh x 2 = 0 (phng trnh co nghiem chnh xac la


2

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.

% chuong trinh 3 - giai phuong trinh bang phuong phap Newton


% chuong trinh goi function f2 va df2
clear all
xc=2; % diem xap xi ban dau
epsilon=10^(-4);
Hoc MATLAB bang th du 43

Hnh 10: Thuat toan day cung.

nmax=100; % so lan lap toi da


for i=1:nmax
xm=xc-f2(xc)/df2(xc);
if abs(xm-xc)<epsilon
break;
else
xc=xm;
end
end
disp(so lan lap:)
i
disp(nghiem xap xi:)
xm

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;

Ket qua tnh toan

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

Ket qua tnh toan

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

vect x = (x(t), y(t), z(t)) thoa phng trnh vi phan

dx
= v(x, t) ()
dt

va ieu kien au x(0) = x0 .


Mot thuat toan n gian giai bai toan nay la xet s thay oi v tr cua hat
trong khoang thi gian t, va thay phng trnh vi phan (??) bang cac phng trnh
ai so

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

x(t + t) = x(t) + tvx (x, y, z, t),


y(t + t) = y(t) + tvy (x, y, z, t),
z(t + t) = z(t) + tvz (x, y, z, t).

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

1. Ch nh thi iem au (t = 0).

2. Chon bc li thi gian.

3. Ch nh toa o au x(0), y(0), z(0).

4. Tnh cac van toc vx (x, y, z, t), vy (x, y, z, t) va vz (x, y, z, t).

5. Tnh ve phai cua (??), roi toa o cua hat tai thi iem t + t.
46 Trnh Anh Ngoc

6. Dng hoac tr ve tnh t bc 4 en bc 6.

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.

(Nghiem giai tch trong trng hp k = a = = 1: x = et , y = et , z = sin t + 1)).


% Chuong trinh 5 - xac dinh quy dao cua diem bang phuong phap
% Euler
clear all
tmax=2; % thoi gian khao sat
N = 100; % so nut thoi gian
dt=tmax/(N-1);
t=0:dt:tmax; % cac nut thoi gian
% vi tri ban dau cua diem
x(1) = 1;
y(1) = 1;
z(1) = 1;
for i = 2:N
x(i) = x(i-1) + dt*f(x(i-1),y(i-1),z(i-1),t(i-1));
y(i) = y(i-1) + dt*g(x(i-1),y(i-1),z(i-1),t(i-1));
z(i) = z(i-1) + dt*h(x(i-1),y(i-1),z(i-1),t(i-1));
end
% ve quy dao
plot3(x,y,z)
Chng trnh goi cac ham f.m, g.m, h.m
function v=f(x,y,z,t)
v=-x;
function v=g(x,y,z,t)
v=y;
function v=h(x,y,z,t)
v=cos(t);
Ban oc nen so sanh nghiem xap x thu c t chng trnh nay vi nghiem
chnh xac cua bai toan.
Nh a biet, phng trnh vi phan cap hai tng ng vi he hai phng
trnh vi phan cap mot. Ban hay t a ra thuat toan giai so phng trnh vi phan
cap hai da tren thuat toan a ra ay.

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

Hnh 11: Quy ao cua hat (1, 1, 1), th du 14.

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

You might also like