Khi dùng phép chia trái ta nh n đ c:y=a\b Warning: Matrix is singular to working precision... TÍCH PHÂN VÀ PH NG TRÌNH VI PHÂN 1.. Tích phân: Đ tính tích phân ta dùng hàm quadtính tích p
Trang 1CH NG 2: Đ I S TUY N TÍNH
§1 CÁC PH NG TRÌNH Đ I S TUY N TÍNH
1 H ph ng trình đ y đ :Ta xét h ph ng trình Ax = B Đ tìm nghi m c a
h ta dùng l nh MATLAB:
x= inv(A)*B
hay:
x = A\B
2 H ph ng trình có ít ph ng trình h n s n(underdetermined): Khi gi i
h trên ta đã dùng ngh ch đ o ma tr n Nh v y ta ch nh n đ c k t qu khi
ma tr n A vuông(s ph ng trình b ng s n s vàđ nh th c c a A ph i khác không) H có s ph ng trình ít h n s n hay đ nh th c c a ma tr n A c a
h đ y đ b ng 0 g i là h underdetermined M t h nh v y có th có vô s nghi m v i m t hay nhi u bi n ph thu c vào các bi n còn l i V i m t h nh
v y ph ng pháp Cramer hay ph ng pháp ma tr n ngh ch đ o không dùng
đ c Khi s ph ng trình nhi u h n s n ph ng pháp chia trái cũng cho nghi m v i m t vài n s đ c cho b ng 0 M t ví d đ n gi n là ph ng trình x + 3y = 6 Ph ng trình này có r t nhi u nghi m trongđó có m t nghi m
là x = 6 và y = 0:
a = [ 1 3];
b = 6;
x = a\b
x =
6 0
S nghi m vô h n có th t n t i ngay c khi s ph ng trình b ng s n Đi u này x y ra khi det(A) = 0 V i h này ta không dùng đ c ph ng pháp Cramer và ph ng pháp ma tr n ngh ch đ o và ph ng pháp chia trái cho thông báo là ma tr n A suy bi n Trong tr ng h p nh v y ta có th dùng
ph ng pháp gi ngh ch đ o đ tìm đ c m t nghi m g i là nghi m chu n minimum
Ví d : Cho h ph ng trình
x + 2y + z = 8
0x + y + 0z = 2
x + y + z = 6
Trang 2Khi dùng phép chia trái ta nh n đ c:
y=a\b
Warning: Matrix is singular to working precision.
y =
Inf Inf Inf
N u ta dùng ph ng pháp gi ngh chđ o thì có:
a = [1 2 1;0 1 0;1 1 1]
b = [8;2;6]
x = pinv(a)*b
x =
2.00000000000000 2.00000000000000 2.00000000000000
M t h cũng có th có vô s nghi m khi có đ s ph ng trình Ví d ta
có h :
2x 4y + 5z = 4
4x 2y +3z = 4
2x + 6y 8z = 0
Trong h này ph ng trình th 3 là t ng c a hai ph ng trình trên nên h th t
s ch có 2 ph ng trình
Tóm l i m t h mu n có nghi m duy nh t ph i có các ph ng trình đ c
l p Vi c xác đ nh các ph ng trình trong h có đ c l p hay không khá khó,
nh t là đ i v i h có nhi u ph ng trình Ta đ a ra m t ph ng pháp cho phép xác đ nh h ph ng trình có nghi m và li u nghi m đó có duy nh t hay không Ph ng pháp nàyđòi h i s hi u bi t v h ng c a ma tr n
Ta xem xét đ nh th c c a ma tr n sau:
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
−
3 7 9
2 10 6
1 4 3
N u ta lo i tr m t hàng và m t c t c a ma tr n chúng ta còn l i ma tr n 2×2
Tu theo hàng và c t b lo i ta có 9 ma tr n con Đ nh th c c a các ma tr n này
g i là đ nh th c con Ví d n u ta b hàng 1 và c t 1 ta có:
44 3 7
2 10
=
−
Trang 3Các đ nh th c con có th dùng đ xác đ nh h ng c a ma tr n H ng c a ma
tr n đ c đ nh nghĩa nh sau: M t ma tr n A m×n có h ng r ≥ 1 n u và ch n u
đ nh th c c a A ch a m t đ nh th c r × r và m i đ nh th c con vuông có r+1 hàng hay h n b ng 0.
Đ xác đ nh h ng c a ma tr n ta có l nh rank
Ví d :
a = [ 3 4 1;6 10 2;9 7 3];
rank(a)
ans =
2
H ph ng trình Ax = B có m ph ng trình và n n có nghi m n u và ch n u rank(A) = rank([A B]) G i h ng c a A là r, n u r = n thì nghi m là duy nh t
N u r<n thì h có vô s nghi m và r n có th bi u di n nh là t h p tuy n tính c a n r n còn l i mà giá tr có th ch n b t kì
Ví d : Gi i h ph ng trình
3x 2y + 8z = 48
6x + 5y + z = 12
9x + 4y + 2z = 24
Ta vi t:
a = [ 3 2 8; 6 5 1;9 4 2];
b = [ 48; 12;24];
rank(a)
ans =
3 rank([a b])
ans =
3
V y h có nghi m duy nh t:
x = a\b
x =
2 1 5
Ví d : Gi i h
2x 4y + 5z = 4
6x 2y + 3z = 4
2x + 6y 8z = 0
Trang 4Ta vi t:
a = [ 2 4 5; 6 2 3;2 6 8];
b = [ 4;4;0];
rank(a)
ans =
2 rank([a b])
ans =
2
V y h có vô s nghi m M t trong các nghi m là:
x=pinv(a)*b
x =
1.21481481481481
0.20740740740741
0.14814814814815
3 H ph ng trình overdetermined: H ph ng trình trong đó s ph ng trình đ c l p nhi u h n s n g i là h overdetermined Đ i v i h này
ph ng pháp Cramer và ph ng pháp ngh chđ o ma tr n không dùng đ c Tuy nhiên m t s h cho nghi m đúng xác đ nh b ng phép chia trái Đ i v i các h khác không có nghi m chính xác Khi r = rank(a) = rank([a b]) h có nghi m và n u r = n nghi m là duy nh t Khi rank(a) ≠ rank([a b]) h không có nghi m
Ví d : Gi i m ch đi n g m 3 nhánh n i song song: nhánh 1 có t ng tr Z1 = 5+2j và ngu n e = 100 sin(314t + 300), nhánh 2 có t ng tr Z2 = 3+4j và nhánh 3
có t ng tr 5+6j Ta vi t ph ng trình c a m ch đi n theo dòng nhánh Sau đó rút ra ma tr n A và B Các l nh MATLAB:
a = [1 1 1;5+2*i 3+4*i 0;0 (3+4*i) 5+6*i]
e =100*exp(i*(30*pi/180))
b=[0;e;0];
i=a\b
i =
25.25569272231586 +19.27124163998603i
15.63482777750950 11.44276084484129i
9.62086494480636 7.82848079514474i
Trang 5§2 N I SUY
1 N i suy hàm m t bi n :MATLAB dùng 2 ki u n i suy : n i suy đa th c và
n i suy trên c s bi n đ i Fourrier nhanh,
a N i suy đa th c : MATLAB dùng hàm interp1(x,y,xi,< ph ng pháp>)
v i x, là giá tr c a hàm t i nh ng đi m đã cho và xi là giá tr mà t i đó ta c n
n i suy ra giá tr yi <ph ng pháp> có th là m t trong các giá tr sau :
‘nearest’ ph ng pháp này đ t giá tr n i suy vào giá tr đã cho g n
nh t, Ph ng pháp này nhanh nh ng k t qu kém chính xác nh t
Ví d : x = [ 1 2 3 4 5 ];
y = [ 5.5 43.1 128 290.7 498.4 ];
yi = interp1(x,y,1.6, nearest )
yi =
43.1000
‘linear’ ph ng pháp này coi đ ng cong đi qua 2 đi m cho tr c là
đ ng th ng
Ví d : yi = interp1(x,y,1.6, linear )
yi =
28.0600
‘spline” dùng ph ng pháp n i suy spline
Ví d : yi = interp1(x,y,1.6, spline )
yi =
24.9782
‘cubic’ ph ng pháp này coi đ ng cong qua 2 đi m là đ ng cong b c 3
Ví d : yi = interp1(x,y,1.6, cubic )
yi =
22.3840
b N i suy FTT: Hàm interpft th c hi n n i suy hàm m t bi n s d ng
ph ng pháp FFT(Fast Fourrier Transform) Ph ng pháp này tính toán bi n
đ i Fourrier m t vec t ch a các giá tr c a m t hàm chu kì Nh v y ph ng pháp này tính bi nđ i Fourrier ng c s d ng nhi u đi m D ng hàm là :
y = interpft(x,n)
Ví d : y = interpft(x,4)
y =
1.0000 2.6236 3.0000 5.3764
Trang 62 N i suy hàm hai bi n : Hàm interp2 th c hi n n i suy hàm 2 bi n.D ng hàm t ng quát :
ZI = interp2(X,Y,Z,XI,YI,<ph ng pháp>)
Z – ma tr n ch nh t ch a giá tr c a hàm 2 bi n
X,Y – m ng có cùng kích th c,ch a giá tr x,yđã cho
XI,YI m ng ch a giá tr c n n i suy
Các <ph ng pháp> g m : ‘nearest’,’linear’,’cubic’
3 N i suy và m ng nhi u chi u :
interp3 n i suy hàm 3 bi n
interpn n i suy hàm nhi u bi n
§3 TÍCH PHÂN VÀ PH NG TRÌNH VI PHÂN
1 Tích phân: Đ tính tích phân ta dùng hàm quad(tính tích phân theo ph ng pháp Simpson) và hàm quadl(tính tích phân b ng ph ng pháp Lobatto)
Ví d (l u trong ct2_1.m):
f = inline( 1./((x 0.3).^2+0.01)+1./((x 0.9).^2+0.04) 6 );
q = quad(f,0,1)
q =
29.8583
r = quadl(f,0,1)
r =
29.8583
Ví d (l u trong ct2_2.m)
y = sin(x)
quad(‘sin’,0,pi)
ans =
2.00001659104794
quadl( sin ,0,pi)
ans =
1.99999999999989
Ta cũng có th dùng ph ng pháp hình thanh đ tính tích phân:
Ví d (l u trong ct2_3.m):
y = sin(x)
x = [0:pi/100:pi]];
y = sin(x);
Trang 7ans =
1.99983550388744
2 Vi phân s :Đ tính vi phân ta dùng diff
Ví d :
a = [ 1 4 2 5 7 4 8];
diff(a)
ans =
3 Ph ng trình vi phân: Ph ng trình vi phân c p cao y(n)= f(t,y,y’, , y(n 1))
có th đ a v h ph ng trình vi phân c p 1 b ng cách đ t y1 = y ; y2 = y’ , ,
yn = y(n 1) Nh v y:
) y , ,
y , y , t f y
y y
y y
n 2 1 n
3 2
2 1
=
′
=
′
=
′
là h có n ph ng trình vi phân c p 1
Ví d :
y’’’ 3y” y’y = 0 v i y(0) = 0 y’(0) = 1 y” = 1
đ c bi n đ i thành
1 2 3 3
3 2
2 1
y y y 3
y
y
y
y
y
+
=
′
=
′
=
′
v i đi u ki n đ u : y1(0) = 0 y2(0) = 1 y3(0) = 1
Đ nh p ph ng trình này vào MATLAB ta dùng M file f.m nh sau :
function dy = f(t,y);
dy = [ y(2) ; y(3) ; 3*y(3)+y(3)*y(1)];
và gi i ph ng trình b ng l nh :
[ t , f] = solver (‘file’,tspan,y0)
v i “file” là M file ch a ODE
tspan là vec t [ t0 tfinal] xacđ nh kho ng tìm nghi m
y0 là vec t giá tr đi u ki n đ u
solver là cách gi i, th ng dùng ph ng pháp Runge Kutta b c 2/3(ode23) hay 4/5(ode45)
Trang 8[ t , y] = ode45(‘f’,[ 0 1],[0 ; 1 ; 1])
M i hàng trong vec t nghi m t ng ng v i m t th i đi m trong vec t c t t
Nh v y trong ví d trên, y(:,1) là nghi m, y(:,1) là đ o hàm b c nh t c a nghi m và y(:,2) là đ o hàm b c hai c a nghi m
Ví d : Tìm dòng qua đ khi đóng m ch RC n i ti p vào ngu n m t chi u bi t tích s RC = 0.1,đi n áp ngu n là 10V và đi n áp ban đ u trên t là 2V
Ph ng trình c a m ch là:
e(t) = RC C uC
dt
du + Thay s vào ta có:
0.1u′ + u = 10
u′ = 10u + 100
Ta có các l nh MATLABđ t o hàm:
function uc = rc(t,u)
uc = 10*u + 100;
và gi i bài toán:
[t,u] = ode45( rc ,[0 4],2);
plot(t,u, o )
§4 Đ I S MA TR N
1 Phân tích Cholesky : Ph ng pháp Cholesky phân tích ma tr n A xác đ nh
d ng thành tích c a hai ma tr n A = R’*R v i R là ma tr n tam giác trên
Mu n nh nđ c ma tr n R ta dùng hàm chol(A)
Ví d :
n = 5;
X = pascal(n)
X =
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70
R = chol(X)
2 Phân tích LU : Ta phân tích ma tr n A= L*U trong đó L là ma tr n tam giác
d i và U là ma tr n tam giác trên Ta vi t [L,U]= lu(A)
Ví d (l u trong ct2_4.m):
Trang 9A = [
1 2 3
4 5 6
7 8 0]
[L,U] = lu(A)
3.Phân tích QR: Ta phân tích ma tr n A =Q*R v i Q là ma tr n tr c giao và R
là ma tr n tam giác trên
Ví d (l u trong ct2_5.m):
A = [
10 11 12]
[Q,R] = qr(A)
4 Lu th a: N u có ma tr n A vuông và s p>0 thì A^p là tích p l n c a A :
Y= A^2
5 Giá tr riêng và vec t riêng: eig(A)
[d,r] = eig(A)
6 Quay ma tr n: b = rot90(a)
a = [2 1 0; 2 5 1;3 4 6]
a =
b = rot90(a)
b =
7 Đ o ma tr n: fliplr(a) đ o ma tr n t trái sang ph i
c = fliplr(a)
c =
Trang 100 1 2
flipud(a)đ o ma tr n t trên xu ng d i
d = flipud(a)
d =
8 Các hàm x lí ma tr n khác:
n
a = [1 2 3 ;5 6 7;8 9 1];
reshape(a,1,9)
ans =
m t vec t
diag(a,k) ch n đ ng chéo tu theo giá tr c a k
k = 0 ch nđ ng chéo chính
k > 0 ch nđ ng chéo th k trên đ ng chéo chính
k < 0 ch nđ ng chéo th k d i đ ng chéo chính
a =
v = diag(a,1)
v =
2 7
a = diag(v) n u v là vec t thì a là ma tr n vuông v i v là đ ng chéo chính
b = triu(a) t o ra ma tr n b cùng c v i ma tr n a, ch a các ph n t c a
ma tr n a n m trên đ ng chéo chính và phía trên đ ng chéo chính Các
ph n t khác b ng 0
a = [1 2 3;4 5 6;7 8 9]
Trang 11a =
b = triu(a)
b =
b = triu(a, k) t o ra ma tr n b cùng c v i ma tr n a, ch a các ph n t c a
ma tr n a ngay trên đ ng chéo và phía trên đ ng chéo chính Các ph n t khác b ng 0
b = tril(a) t o ra ma tr n b cùng c v i ma tr n a, ch a các ph n t c a
ma tr n a n m d i đ ng chéo chính Các ph n t khác b ng 0
b = tril(a, k) t o ra ma tr n b cùng c v i ma tr n a, ch a các ph n t c a
ma tr n a ngay trên đ ng chéo và phía d i đ ng chéo th k Các ph n t khác b ng 0
b = tril(a, 1)
b =
§5 ĐA TH C
1 Các hàm x lí đa th c :
deconv chia đa th c poly tìm đa th c có nghi m đã cho polyder đ o hàm đa th c
polyfit x p x b ng đa th c polyval tính tr c ađa th c polyvalm tính tr ma tr n đa th c roots tìm nghi m c a đa th c
2 Bi u di n đa th c: MATLAB bi u di n đa th c nh là m t vec t hàng ch a
các h s c ađa th c theo th t s mũ gi m d n
Ví d : P(x) = x3– 2x – 5
Trang 12Đ nh p đa th c này vào MATLAB ta vi t :
p = [ 1 0 – 2 –5 ]
3 Nghi m c a đa th c : Đ tìm nghi m c a đa th c ta dùng hàm roots
Ví d : roots(p)
ans =
2.0946 1.0473 + 1.1359i 1.0473 1.1359i
4 Đa th c đ c tính: Cho ma tr n A, hàm poly xác đ nh đa th c đ c tính c a
ma tr n A
Ví d : a = [ 1 2 3 ; 3 4 5 ; 4 5 6 ]
a =
poly(a) ans =
1.0000 11.0000 9.0000 0.0000
5 Tính tr đa th c: Đ tính tr c a đa th c t i x = x0ta dùng hàm polyval(p)
Ví d : polyval(p,0.2)
ans =
5.3920
Ta có th tính tr c a ma tr n đa th c Trong tr ng h p đó đa th c
P(x) = x3– 2x – 5
tr thành : P(X) = X3– 2X – 5I v i X là ma tr n vuông và I là ma tr nđ n v
Ví d : X = [2 4 5; 1 0 3;7 1 5]
X =
Y = polyvalm(p,X)
Y =
377 179 439
111 81 136
490 253 639
Trang 136 Nhân và chia đa th c : Cho đa th c a = x2 + 2x + 3 và đa th c b = 4x2 + 5x + 6.
Đ tính tích 2 đa th c ta vi t :
a = [ 1 2 3 ] ; b = [ 4 5 6 ] ;
c = conv(a,b)
c =
4 13 28 27 18
Đ tính th ng hai đa th c ta vi t
[ q , r ] = deconv(c,a)
q =
r =
Trong đó q là th ng nguyên còn r là ph n d
7 Đ o hàm đa th c: Tính đ o hàm đa th c b ng hàm polyder
q = polyder(p)
q =
Đ tính đ o hàm c a tích hai đa th c a và b ta vi t
c = polyder(a,b)
c =
16 39 56 27
8 X p x b ng đa th c: Gi s ta có m t lo t s li u nh n đ c t th c nghi m
và mu n x p x chúng b ng m t hàm d ng đa th c theo ph ng pháp bình
ph ng bé nh t thì ta dùng hàm polyfit(x,y,n) v i x,y là các vec t ch a các giá tr đo đ c và n là b c c a đa th c x p x
Ví d : x = [ 1 2 3 4 5 ];
y = [ 5.5 43.1 128 290.7 498.4 ];
p = polyfit(x,y,3)
p =
0.1917 31.5821 60.3262 35.3400