Nên dùng: S = SINGVALSVPAA thay cho S = SVDVPAA [U,S,V] = SINGVALSVPAA thay cho [U,S,V] = SVDVPAA SYM Tạo ra, truy cập hoặc sửa đổi một ma trận symbolic Một ma trận symbolic là một mảng
Trang 1Giải hệ phương trình đại số symbolic
Phương trình một biến:
SOLVE(S), S là phương trình symbolic hoặc là một biểu thức symbolic thì giải phương trình đã cho, hoặc phương trình S = 0, biến tự do của nó được xác định bởi SYMVAR
SOLVE(S,'v') giải theo biến 'v'
Hệ phương trình nhiều biến
SOLVE(S1,S2, ,SN) giải hệ N phương trình symbolic N biến xác định bởi SYMVAR
SOLVE(S1,S2, ,SN,'v1,v2, ,vn') giải hệ N phương trình symbolic N biến chỉ định bởi N đối số nhập cuối cùng
[X1,X2, ,XN] = SOLVE(S1,S2, ,SN), và
[X1,X2, ,XN] = SOLVE(S1,S2, ,SN,'v1,v2, ,vn') trả về N vectơ symbolic chứa các biểu thức theo các biến riêng biệt trong lời giải Trong tất cả các trường hợp thì trả về giá trị số nếu không tìm thấy lời giải symbolic
Ví dụ:
solve('log(x) = x/pi')
x = solve('a*x^2 + b*x + c')
b = solve('a*x^2 + b*x + c', 'b')
[x,y] = solve('x^2 + 2*x*y + y^2 = 4', 'x^3 + 4*y^3 = 1')
[u,v] = solve('a*u^2 + v^2', 'u - v = 1', 'u,v')
[a,u,v] = solve('a*u^2 + v^2', 'u - v = 1', 'a^2 - 5*a + 6')
SUBS
Thay thế ký hiệu trong một biểu thức hoặc ma trận symbolic
SUBS(S,NEW) Thay biến symbolic trong S bởi NEW
SUBS(S,NEW,OLD) Thay tất cả OLD trong S bởi NEW
Ví dụ:
subs sin(x) pi/3 = 'sin(1/3*pi)'
subs sin(z) x+i*y = 'sin(x+i*y)'
f = 'F(a*r^2)'
r = 'sqrt(x^2+y^2)'
subs(f,r,'r') = 'F(a*(x^2+y^2))'
Trang 2SVDVPA
Tách giá trị biến kỳ dị
SINGVALS cũng có thể tính các giá trị kỳ dị SVDVPA được thay bởi SINGVALS Nên dùng:
S = SINGVALS(VPA(A)) thay cho S = SVDVPA(A)
[U,S,V] = SINGVALS(VPA(A)) thay cho [U,S,V] = SVDVPA(A)
SYM
Tạo ra, truy cập hoặc sửa đổi một ma trận symbolic
Một ma trận symbolic là một mảng văn bản MATLAB có mỗi dòng bắt đầu với
'[', kết thúc với ']', và chứa các chuỗi con cách nhau bởi các dấu phẩy để biểu hiện các phần tử riêng biệt Có 3 cách tạo ra các ma trận symbolic :
SYM(X) chuyển ma trận số X sang dạng symbolic của nó với các phần tử được biểu hiện bằng phân số (nhận được từ SYMRAT)
SYM(m,n,'expr') tạo ra ma trận symbolic cỡ mxn, các phần tử của ma trận symbolic được ước lượng đối với i = 1:m và j = 1:n Biểu thức expr là một biểu thức symbolic thường chứa các ký tự 'i', 'j', và các biến tự do khác
SYM(m,n,'r','c','expr') dùng 'r' và 'c' là các biến dòng và cột thay cho 'i' và 'j'
SYM('[s11,s12, ,s1n; s21,s22, ; ,smn]') tạo
ra ma trận symbolic cỡ mxn bằng cách dùng các phần tử symbolic s11, s12, , smn Dạng này của symbolic giống hệt phát sinh ma trận số trong MATLAB Các dấu chấm phẩy kết thúc các dòng Có 2 cách để truy cập các phần tử riêng biệt của ma trận symbolic:
SYM(S,i,j,'expr') là phiên bản symbolic của S(i,j) = 'expr'
r = SYM(S,i,j) là phiên bản symbolic của r = S(i,j)
Ví dụ:
M = sym(hilb(3)) là một ma trận văn bản với 3 dòng,
[ 1, 1/2, 1/3]
[1/2, 1/3, 1/4]
[1/3, 1/4, 1/5]
M = sym(3,3,'1/(i+j-t)') phát sinh
[1/(2-t), 1/(3-t), 1/(4-t)]
[1/(3-t), 1/(4-t), 1/(5-t)]
[1/(4-t), 1/(5-t), 1/(6-t)]
M = sym(M,1,3,'1/t') thay đổi phần tử (1,3) của M thành '1/t'
M = sym('a, 2*b, 3*c; 0, 5*b, 6*c; 0, 0, 7*c') phát sinh ma trận symbolic tam giác trên có định thức determ(M) = 35*a*b*c Sau đó M, sym(M,1,3)= '3*c'
SYM2POLY
Trang 3Đổi đa thức symbolic sang vectơ hệ số của đa thức
SYM2POLY(p) trả về vectơ hệ số của đa thức symbolic p
Ví dụ:
sym2poly('x^3 - 2*x - 5') = [1 0 -2 -5]
SYMADD
Cộng symbolic
SYMADD(A,B) tính tổng symbolic A + B
Ví dụ:
symadd('cos(t)','t') = 'cos(t)+t'
SYMDIFF
Vi phân symbolic
Hàm này thường được gọi bởi DIFF để tính đạo hàm
SYMDIFF(S) vi phân S theo biến tự do của nó
SYMDIFF(S,'v') vi phân S theo biến 'v'
SYMDIFF(S,n) và SYMDIFF(S,'v',n) vi phân S n lần SYMDIFF, không tham số, vi phân biểu thức trước
SYMDIV
Chia symbolic
SYMDIV(A,B), với các biểu thức hoặc ma trận symbolic A và B, tính A / B
Ví dụ:
symdiv('2*cos(t)+6',3) trả vềs 2/3*cos(t)+2
Nếu
A =
[ 2, a + 3/2]
[ 7/6, a/2 + 1]
B =
[ 1, 1/2]
[ 1/2, 1/3]
thì symdiv(A,B) trả về
[ -1-6*a, 6+12*a]
[-4/3-3*a, 5+6*a]
SYMMUL
Nhân symbolic
SYMMUL(A,B), với các biểu thức hoặc ma trận symbolic A và B, tính tích đại số tuyến tính symbolic A * B
Ví dụ:
symmul('x','exp(x)') = 'x*exp(x)'
SYMOP
Tính toán symbolic
SYMOP(arg1,arg2,arg3, ) lấy đến 16 đối số Mỗi dối số có thể là một ma trận symbolic, một ma trận số, hoặc một trong các phép toán sau: '+', '-', '*', '/', '^', '(',')'
Trang 4SYMOP( ) nối các đối số và ước lượng biểu
thức kết quả
Ví dụ:
x = 'x'
f = symop(1,'+',x,'+',x,'^',2,'/',2);
symop(f,'-',int(diff(f)))
symop('exp(x)','/','(',f,'+',x,'^3','/',6,')')
G = sym('[c, s; -s, c]')
symop(G,'*',transpose(G))
Lưu ý: Việc hòa lẫn các đại lượng vô hướng và
các ma trận có thể có các kết quả không như ý
muốn Ví dụ, symop(A,'+',x) cộng x vào đường
chéo của A
SYMPOW
Tính lũy thừa của một biểu thức hoặc ma trận
symbolic
SYMPOW(S,p) tính S^p Nếu S là một biểu thức
symbolic thì p có thể là một biểu thức symbolic
vô hướng hoặc biểu thức số vô hướng Nếu S là
ma trận symbolic thì S phải vuông, và p phải là
một số nguyên
Ví dụ: sympow('exp(t)',2) = 'exp(t)^2'
SYMRAT
Xấp xỉ phân số symbolic
SYMRAT(X), với vô hướng X, là một chuỗi biểu
hiện một số nguyên, phân số, phân số nhân 'pi'
hoặc số nguyên mũ 2 Khi chuỗi được ước lượng
với số chấm động của MATLAB thì kết quả cho lại
đúng giá trị X
Ví dụ:
symrat(22/7) = '22/7' symrat(2*pi/3) = '2*pi/3'
symrat(1.e12) = '100000000000'
symrat(eps) = '2^(-52)'
SYMSIZE
Kích thước ma trận symbolic
D = SYMSIZE(S), với ma trận S cỡ MxN, trả về hai
vectơ dòng gồm 2 phần tử
D = [M, N] chứa số dòng và số cột trong ma trận
[M,N] = SYMSIZE(S) trả về số dòng và số cột
trong 2 biến xuất riêng biệt
M = SYMSIZE(S,1) trả về đúng số dòng
N = SYMSIZE(S,2) trả về đúng số cột
SYMSUB
Trừ symbolic
SYMSUB(A,B) với các biểu thức hoặc ma trận
symbolic A và B, tính A - B
SYMSUM
Tổng symbolic
Trang 5SYMSUM(S) là tổng vô hạn S theo biến symbolic của nó
SYMSUM(S,'v') là tổng vô hạn S theo biến v
SYMSUM, không đối số, là tổng vô hạn theo biến symbolic của của biểu thức trước
SYMSUM(S,a,b) là tổng vô hạn S theo biến symbolic của nó từ a đến b
SYMSUM(S,'v',a,b) là tổng vô hạn S theo biến v từ
a đến b
Ví du:
symsum k^2 1/3*k^3-1/2*k^2+1/6*k
symsum k^2 0 n-1
1/3*n^3-1/2*n^2+1/6*n
symsum k^2 0 10 385
symsum k^2 11 10 0
symsum 1/k^2 -Psi(1,k) symsum 1/k^2 1 Inf 1/6*pi^2
symsum x^k/k! k 0 Inf exp(x)
SYMVAR
Xác định các biến symbolic trong một biểu thức SYMVAR(S) tìm trong chuỗi s để lấy một ký tự chữ thường riêng biệt, khác 'i' hoặc 'j', đó là một phần của 1 từ tạo thành từ một số ký tự Nếu có ký tự đó và là duy nhất thì trả về ký tự đó Nếu không có thì trả về ‘x’
Nếu ký tự không duy nhất thì trả về một ký tự gần ‘x’
Nếu có ràng buộc thì một ký tự la tinh được chọn
SYMVAR(S,'t') chọn biến gần 't' thay cho 'x'
SYMVAR(S,N), với số nguyên vô hướng N, tìm N ký tự khác nhau trong, kể cả 'i' và 'j' Nếu có
N ký tự thì trả về danh sách chúng Ngược lại thi kết quả là một lỗi SYMVAR(S,N), với vectơ nguyên ít nhất 2 thành phần thì tìm một số ký tự khác nhau Khi N là một vectơ thì SYMVAR(S,N) không bao giờ thông báo lỗi Nếu số tìm thấy giữa min(N) và max(N), thì trả về một danh sách Nếu số tìm thấy ít hơn min(N), thì trả về một ma trận rỗng Nếu số tìm thấy lớn hơn max(N), thì trả về NaN
Ví dụ:
symvar('sin(x)') = 'x'
symvar('sin(pi*t)') = 't'
symvar('a+y') = 'y'
symvar('3*i+4*j') = 'x'
symvar('pi',[1 1]) = rỗng
f = '3*x+4*y';
symvar(f) = 'x'
symvar(f,2) = 'x, y'
g = 'Dx = y; Dy = -x + sin(t)';
symvar(g,2:3) = 't,x,y'
symvar(g,[1 1]) = NaN
Trang 6symvar(g,n) với vô hướng n ~= 3 là một lỗi
SYMVARS
Thay thế biến symbolic
F = SYMVARS(F,Y,X) thay đối biến symbolic trong F từ
Y sang X
Hàm này giôïng như SUBS(F,Y,SYMVAR(F)) không dùng Maple
TAYLOR
Khai triển chuỗi Taylor
TAYLOR(f) trả về khai triển chuỗi Taylor của f theo biến xác định bởi SYMVAR
TAYLOR(f,'v') dùng biến 'v'
TAYLOR(f,n) khai triển n hạng tử thay cho ngầm định n = 6
TRANSPOSE
Chuyển vị ma trận symbolic
TRANSPOSE(A) tính chuyển vị của ma trận symbolic hoặc ma trận số A
Ví dụ: transpose(sym('[cos(x), sin(x); -sin(x), cos(x)]'))
VECTORIZE
Vectơ hóa một biểu thức symbolic
VECTORIZE(F) chèn một '.' vào trước mỗi '^', '*' và '/' trong F
VPA
Chính xác số học
VPA(A) ước lượng số mỗi phần tử của A bằng cách dùng độ chính xác số học dấu chấm động với D chữ số thập phân , D là cài đặt hiện thời của DIGITS
VPA(A,D) dùng D chữ số, thay cho cài đặt hiện thời của DIGITS Mỗi phần tử của kết quả là một "số symbolic ", là một chuỗi chứa nhiều chữ số
VPA, không đối số, ước lượng biểu thức symbolic trước
Ví dụ, ma trận :
vpa(hilb(2),25) trả về
[1 , 5000000000000000000000000]
[.5000000000000000000000000,
.3333333333333333333333333]
vpa(hilb(2),5) trả về
[1 , 50000]
[.50000, 33333]
Ví dụ, dạng hàm:
phi = '(1+sqrt(5))/2' là "tỉ lệ vàng "
vpa(phi,75) là chuỗi chứa 75 chữ số của phi
Ví dụ, dạng lệnh:
Trang 7vpa pi 1919 là một màn hình đầy các số của pi
vpa exp(pi*sqrt(163)) 36 hiện một số
"gần nguyên"
ZETA
Hàm Zeta Riemann
ZETA(s) = sum(1/k^s,k=1 infinity)
ZTRANS
Biến đổi Z
F = ZTRANS(f) là biến đổi Z của biểu thức symbolic f,
F(z) = symsum(f(n)/z^n,'n',0,inf)
F = ZTRANS(f,'v') là hàm theo biến 'v' thay cho 'z'
F = ZTRANS(f,'v','x') giả thiết f là hàm theo biến 'x' thay cho 'n'
F = ZTRANS, không đối số, biến đổi kết quả trước
Ví dụ:
ztrans 1 z/(z-1)
ztrans a^n z/(z-a)
ztrans sin(n*pi/2) z/(1+z^2)
ztrans('x^k/k!','z','k') exp(1/z*x)
ztrans('f(n+1)')
z*ztrans(f(n),n,z)-f(0)*z
********************
Trang 8TÀI LIỆU THAM KHẢO [1] USER’S GUIDE - MATHWORKS
[2] WWW.MATHWORKS.COM
[3] ĐỒ HỌA VỚI MATLAB - ĐẶNG MINH HOÀNG
[4] CƠ SỞ MATLAB & ỨNG DỤNG - NGUYỄN HỮU TÌNH