Bài giảng Lập trình tính toán trong Matlab
* Tên biến: Tên biến là một dãy kí tự đượcbắt đầu bằng chữ
cái, có độdài tối đa là 31 kí tự, bao gồmcácchữcái, chữsốvà
dấu gạch dưới ( _ ), có phân biệtchữhoa và chữthường.
Ví dụ: x ; a12 ; b_a
Có thểgán giá trị cho tên biến bằng cách viết:
Tên_biến = biểuthức
Ví dụ:
>> x=20
>>a12=4
>>A12= ‘ABCD’
inv (A) Giải thích: inv (A): Cho ma trận nghịch đảo ma trận symbolic A Ví dụ: cho ma trận symbolic: A = Ta viết: A = sym([2, -1, 0;-1, 2, -1; 0, -1, 2]); inv(A) [3/4, 1/2, 1/4] [1/2, 1, 1/2] [1/4, 1/2, 3/4] ⎥⎥ ⎥ ⎦ ⎤ ⎢⎢ ⎢ ⎣ ⎡ − −− − 210 121 012 64 * jordan: Tìm dạng chính tắc ma trận Cho ma trận A, tìm ma trận V không suy biến sao cho inv(V)*A*V hay J =V\A*V là chéo hoá. Hầu hết tất cả các ma trận, dạng chính tắc jordan cho ta ma trận chéo có các phần tử trên đường chéo chính là các giá trị riêng và các cột của ma trận đã biến đổi là các vectơ riêng. Điều này luôn xảy ra nếu ma trận đã cho là ma trận đối xứng hoặc nếu nó có các giá trị riêng phân biệt Cú pháp: J = jordan(A) [V, J] = jordan(A) Giải thích: - jordan(A): Tính dạng chính tắc ma trận jordan A với A là ma trận symbolic hay số. Ma trận phải được biết một cách chính xác. Như vậy, các phần tử của nó phải là các số nguyên hay tỉ số của các số nguyên bé. - [V, J] = jordan(A): Tính cả ma trận jordan J và vectơ riêng V của nó, sao cho V\A*V = J Ví dụ: A = [1-3 –2; -1 1 –1; 2 4 5] [V, J] = jordan(A) cho ta kết quả: A = ⎥⎥ ⎥ ⎦ ⎤ ⎢⎢ ⎢ ⎣ ⎡ −− −− 542 111 231 , V = ⎥⎥ ⎥ ⎦ ⎤ ⎢⎢ ⎢ ⎣ ⎡ − −− 040 020 221 , J = ⎥⎥ ⎥ ⎦ ⎤ ⎢⎢ ⎢ ⎣ ⎡ 200 120 003 Các giá trị riêng của ma trận A là: ⎪⎭ ⎪⎬ ⎫ ⎪⎩ ⎪⎨ ⎧ 2 2 3 và các vectơ riêng là ⎪⎭ ⎪⎬ ⎫ ⎪⎩ ⎪⎨ ⎧ 0 0 1 ; ⎪⎭ ⎪⎬ ⎫ ⎪⎩ ⎪⎨ ⎧ − − 4 2 2 ; ⎪⎭ ⎪⎬ ⎫ ⎪⎩ ⎪⎨ ⎧ 0 0 2 65 * null: Cho giá trị rỗng của ma trận hay phần tử ma trận Cú pháp: z = null(A) Giải thích: null: cho ma trận rỗng A Ví dụ: syms a b c A = [a* b b+c; a*c c*b-1]; A(:, 1) = [ ] * poly: Biến đổi ma trận thành dạng đa thức Cú pháp: p = poly(A) p = poly(A,v) Giải thích: poly(A): Nếu A là mảng số thì poly(A) cho ta các hệ số đặc trưng của đa thức của ma trận A, nếu A là symbolic, poly(A) cho ta đa thức đặc trưng của A theo cấp luỹ thừa giảm của biến mặc định x. Biến v được xác định là biến thứ 2 thay thế biến mặc định x. Ví dụ: syms z A = [1 -1 2;1 3 4;2 -1 1] p = poly(A) q = poly(sym(A)) s = poly(sym(A),z) *rank: Hạng của ma trận Cú pháp: rank(A) Giải thích: rank(A): hạng của ma trận symbolic A Ví dụ: syms a b c A = [1 -1 2;1 3 4;2 -1 1] rank(A) B = [1 2;1 2] rank (B) C = [a -a b;a c b;a a a] 66 * svd: tách các phần tử suy biến của ma trận Cú pháp: sigma = svd(A) [U, S, V] = svd (A) Giải thích: sigma = svd(A): vectơ symbolic chứa các giá trị suy biến của một ma trận symbolic A [U, S, V]=svd(A): Cho ta các ma trận U và V là các cột là các vectơ suy biến và một ma trận chéo S chứa các giá trị suy biến. Sao cho A = U*S*V. Như vậy vectơ suy biến symbolic không có giá trị. Ví dụ: A = [1 -1 2;1 3 4;2 -1 1] sdv(A) [U, S, V] = sdv(A) * tril, triu: Ma trận tam giác dưới và ma trận tam giác trên Cú pháp: tril(X) triu (X) tril(X, k) triu (X,k) Giải thích: tril(X): Cho ma trận tam giác dưới của ma trận X tril(X,k): Cho ma trận tam giác dưới (k=0 là đường chéo chính; k>0 đường chéo lớn hơn đường chéo thứ k là 0, k<0 ở trên đường chéo thứ k thì bằng 0) triu(X) và triu(X,k) cho ma trận tam giác trên Ví dụ: syms a b c A = [a –a b;1 3 4;a+1 b-1 c+1] tril (A) tril (A,1) tril (A,-1) triu (A) triu (A,1) triu (A,-1) 67 4. Các hàm làm đơn giản hoá các biểu thức * collect: gom số hạng, biến Cú pháp: R = collect(S) R = collect (S,v) Giải thích: collect(S) là đa thức, gom các số hạng chứa biến x hay collect(S,v) gồm các biến v trong đa thức S Ví dụ: syms x y R1 = colect((exp(x)+x)*(x+2)) R2 = collect((x+y)*(x^2+y^2+1),y) R3 = collect([(x+1)*(y+1),x+y]) * expand: khai triển biểu thức Cú pháp: R = expand (S) Giải thích: expand(S): khai triển biểu thức symbolic Ví dụ: expand((x-2)*(x-4)) kết quả x^2 – 6*x +8 expand(cos(x+y)) kết quả cos(x) * cos(y) – sin(x) * sin(y) * factor: Phân tích biểu thức thành thừa số Cú pháp: factor(X) Giảit thích: factor(X) phân tích biểu thức mảng symbolic X thành thừa số Ví dụ: factor(x^3- y^3) → (x-y)*(x^2 + x*y + y^2) * horner: biến đổi đa thức dưới dạng thừa số Cú pháp: R = horner (P) 68 Giải thích: Giả sử P là ma trận của các đa thức symbolic. horner(P) biến đổi mỗi phần tử của P vào đa thức Horner của nó hay lồng vào nó dưới dạng thừa số. Ví dụ: horner(x^3-6*x^2+11*x-6) → -6 + (11+(-6+x)*x)*x * numden: Lấy tử và mẫu số Cú pháp: [N, D] = numden(A) Giải thích: [N, D] = numden(A); chuyển mỗi phần tử của A có dạng phân số. A có thể là ma trận, đa thức, con số…, thành tử số N và mẫu số D Ví dụ: sym n d [n, d] = numden(4/5) → n = 4, d = 5 sym x y [n, d] = numden(x/y + y/x) → n = x^2 + y^2; d = y*x *simple, simplify: Tìm dạng tối giản của đa thức Cú pháp: r = simple (S) r = simplify (S) Giải thích: simple (S), simplify (S): Tối giản hoá biểu thức symbolic S Ví dụ: simple (cos(x)^2 + sin(x)^2) → 1 simplify (2*cos(x)^2 – sin (x)^2) → 3* cos(x)^2 – 1 * subs: thay thế tất cả các biến thành biến mới hay giá trị Cú pháp: R =subs (S) R = subs(S, old, new) Giải thích: subs(S): thay thế tất cả các biến trong biểu thức hay ma trận symbolic S subs(S, old, new): thay thế tất cả các biến old trong biểu thức S thành biến new 69 Ví dụ: a = 980; Cl =3; y = dsolve (‘Dy = -a *y’) → y = exp (-at)*Cl subs(y) → 3*exp (-980*t) subs (a+b, a, 4) → 4+b % b phải là biến số subs(cos(a) + sin(b),{a, b},{sym(1,2}→ cos(1) + sin (2) 5. Giải phương trình * compose: Hợp của hàm Cú pháp: compose(f,g) compose(f, g, z) compose(f, g, x, z) compose(f, g, x, y, z) Giải thích: - compose(f,g): f(g(y)) với f=f(x), g=g(y), ở đây x là biến symbolic của f và y là biến symbolic của g, dùng findsym để tìm các biến này - compose(f, g, z): f(g(z) với f = f(x), g = g(y), ở đây x là biến symbolic của f và y là biến symbolic của y.dùng findsym để tìm các biến này - compose(f, g, x, z): f(g(z)), x là biến độc lập đối với f. Nếu f = cos(x/t) thì compose(f, g, x, z) → cos(g(z)/t) và compose(f, g, t, z) → cos(x/g(z)). 70 - compose(f, g, x, y, z): x là biến độc lập của f và y là biến độc lập của g. - Nếu: f = cos(x/t) và g = sin (y/u) thì - compose(f, g, x, y, z) → cos(sin(x/u)/t), - mặt khác compose (f, g, x, u, z) → cos (sin(y/z)/t) Ví dụ: syms x y z t u f = 1/(1+x^2); g = sin(y); h = x^t; p = exp(-y/u); Thì: compose(f, g) → 1/(1+sin(x)^2 compose(f, g, t) → 1/(1+sin(t)^2 compose(h, g, x, z) → sin(z)^t * dsolve: giải hệ phương trình vi phân thường Cú pháp: r = dsolve(‘eq1, eq2,…,’,’cond1, cond2, …,’v’) Giải thích: Giải hệ phương trình vi phân thường xác định bởi eq1, eq2, .., biến độc lập v và các điều kiện biến hay điều kiện ban đầu xác định bởi cond1, cond2,…Biến độc lập mặc nhiên là t. Nếu như không giải được bằng giải tích như trên ta dùng phương pháp số như phương pháp Runge – Kutta chẳng hạn. Ví dụ: dsolve(‘Dy=a*y’) → exp(a*t)*C1 dsolve (‘Df = f + sin(t)’) → -1/2 * cos(t) – ½* sin(t) + exp(t) * C1 71 * finverse: Tìm hàm ngược Cú pháp: g = finverse (f) g = finverse(f,u) Giải thích: - g = finverse (f): hàm ngược của hàm f, f là hàm symbolic với biến x, kết quả tính f-1 g(f(x)) = x - g = finverse(f,u): hàm ngược của hàm f, f là hàm symbolic với biến u, kết quả tính f-1 g(f(u)) = u. Dạng này hàm f có thể chứa nhiều biến symbolic Ví dụ: sym x finverse(1/tan(x)) → atan(1/x) sym u v finverse(exp(u-2)*v,u) → 2*v +log(u) * solve: Giải hệ phương trình Cú pháp: g = solve(eq) g = solve(eq1, eq2, …,eqn) g = solve(eq, var)g = solve(eq1, eq2, …,eqn, var1, var2, …, varn) Giải thích: solve(eq): giải phương trình eq=0 với nghiệm lấy ra là biến mặc nhiên. solve(eq, var): giải phương trình eq=0 với nghiệm lấy ra có tên tương ứng với biến var 72 solve(eq1, eq2,…): giải phương trình eq1=0, eq2=0,… với nghiệm lấy ra là biến mặc nhiên. (dùng lệnh findsym để tìm các biến này) solve(eq1,eq2,… ,var1, var2,…): giải phương trình eq1=0, eq2=0,… với nghiệm lấy ra có tên tương ứng với biến var1, var2,… Ví dụ: solve(‘2*x+y) → -1/2 *y solve(‘a*x^2+b*x+c’,’b’) → -(a*x^2+c)/x L=solve(‘x+y = 1’, ‘x-11*y = 5’) → L.y = -1/3, L.x= 4/3 6. Biến đổi tích phân * fourier: Biến đổi Fourier Cú pháp: F = fourier(f) F = fourier(f, v) F = fourier(f, u, v) Giải thích: - F = fourier(f): Biến đổi Fourier của hàm vô hướng symbolic f với biến độc lập mặc nhiên f và cho ta hàm mặc nhiên qua phép biến đổi này là w. Nghĩa là: f = f(x) → F =F(w). Nếu f = f(w) thì Fourie của nó cho ta một hàm 73 của t là F = F(t) bởi định nghĩa sau: F(w) = ∫∞ ∞− − dxexf iwx)( với x là biến symbolic của f - F = fourier (f,v): F là hàm của biến symbolic v thay thế biến mặc nhiên w. F(v) = ∫∞ ∞− − dxexf ivx)( - F = fourier (f,u,v): f là hàm của u và F là hàm của biến symbolic v chúng thay thế các biến mặc nhiên x và w tương ứng. F(v) = ∫∞ ∞− − dueuf ivx)( Fourier Lệnh MatLab f(x) = 2xe− → F[f](w) = ∫ ∞ ∞− − dueuf ivx)( = 4/2w eπ f = exp(-x^2) →fourier(f)→pi^(12)*exp(-1/4*w^2) * laplace: biến đổi Laplace Cú pháp: laplace(F) laplace(F,t) laplace(F, w, z) Giải thích: - L = laplace(F): biến đổi Laplace của hàm symbolic F với biến mặc nhiên độc lập t. Nó cho ta một hàm của s. F = F(t) → L = L(s). Nếu F = F(s) biến đổi Laplace cho ta một hàm theo t. F = F(s) → L = L(t). Theo định nghĩa L(s) = ∫∞ − 0 )( dtetF st 74 - L = laplace(F,t): L là một hàm của t thay thế biến mặc nhiên s L(t) = ∫∞ − 0 )( dxexF tx - L = laplace(F,w, z): L là một hàm của z và F là hàm của w, nó thay thế các biến symbolic mặc nhiên s và t tương ứng L(z) = ∫∞ − 0 )( dwewF zw * ilaplace: Biến đổi Laplace ngược Cú pháp: F = ilaplace(L) F = ilaplace(L, y) F = ilaplace(L, y, x) Giải thích: - F = ilaplace(L): Biến đổi Laplace ngược của hàm symbolic với biến mặc nhiên độc lập s. Nó cho ta một hàm của t, L = L(s) → F = F(t) biến đổi ilaplace cho ta một hàm theo x.L = L(f) → F = F(x). Theo định nghĩa: F(t) = ∫∞+ ∞− ic ic stdsesL )( - F = ilaplace(L,y): F là một hàm của y thay thế biến mặc nhiên t. F(y) = ∫∞+ ∞− ic ic sydseyL )(
File đính kèm:
- Bài giảng Lập trình tính toán trong Matlab.pdf