Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 12 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
12
Dung lượng
620,62 KB
Nội dung
Giáo trình MatLabSymbolic CHƯƠNG 4: SYMBOLIC Chương giới thiệu cách thức dùng Symbolic để giải phương trình tốn học SymbolicSymbolic cơng cụ thực tính tốn biểu thức tốn học dạng ký tự Khi tính tốn, phải thực thơng qua chuỗi biểu thức biểu diễn hàm toán học Như vậy, cần phải định nghĩa hàm dạng ký hiệu Để định nghĩa ký hiệu sử dụng biểu thức, MatLab khai báo sau: >>syms bien_1 bien_2 Một số hàm sử dụng symbolic: Chức Tên hàm Tên hàm Chức syms Khai báo biến findsyms Tìm biến biểu thức sym Khai báo mảng pretty Sắp xếp biểu thức diff Đạo hàm vi phân collect Tách hệ số simplify Rút gọn biểu thức solve Giải phương trình int Tích phân dsolve Giải phương trình vi phân subs Thay ký hiệu giá trị laplace Biến đổi Laplace factor Phân tích thừa số nguyên tố ilaplace Biến đổi Laplace ngược expand Khai triển biểu thức fourier Biến đổi Fourier ezplot Vẽ biểu thức ifourier Biến đổi Fourier ngược limit Tìm giới hạn finverse Tính hàm ngược 1.1 Đạo hàm vi phân Dùng hàm diff để xác định đạo hàm hàm số >>syms x >> y=diff(cos(x)) y = Phạm Hùng Kim Khánh Trang 81 Giáo trình MatLabSymbolic -sin(x) >>diff('x^3+3*x^2+2*x-1',2) %Đạo hàm cấp ans = 6*x + >>y = diff('x/(1+x^3)') y = 1/(x^3 + 1) - (3*x^3)/(x^3 + 1)^2 >> simplify(y) ans = -(2*x^3 - 1)/(x^3 + 1)^2 1.2 Tích phân Dùng hàm int để tính tích phân >>y = int('1/(1+x^2)') %Tích phân bất định y = atan(x) >> y = int(log(x)/exp(x^2)) %Không thực hàm phức tạp Warning: Explicit integral could not be found y = int(log(x)/exp(x^2), x) >> y = int(x*log(1+x),0,1) %Tích phân xác định y = 1/4 1.3 Hàm ngược Dùng hàm finverse để tìm hàm ngược >> finverse(1/x) Phạm Hùng Kim Khánh Trang 82 Giáo trình MatLabSymbolic ans = 1/x >> finverse(a*x+b) ans = -(b - x)/a >> finverse(x^2) %Warning có kết khác Warning: finverse(x^2) is not unique ans = x^(1/2) 1.4 Vẽ đồ thị Dùng hàm ezplot vẽ đồ thị hàm số >> syms x >> ezplot(sin(x)/x) >> ezplot(sin(x)/x,0,4*pi) Dùng hàm ezsurf vẽ đồ thị 3D >>ezsurf('x*exp(-x^2 - y^2)') 1.5 Định dạng biểu thức >> syms s >> y=int('sin(s+2*x)','s',pi/2,pi) y = cos(2*x) - sin(2*x) >> pretty(y) cos(2 x) - sin(2 x) Khai triển đẳng thức: >> f = sym('x^2-1'); >> factor(f) Phạm Hùng Kim Khánh Trang 83 Giáo trình MatLabSymbolic ans = (x - 1)*(x + 1) >> y=expand((x+1)^3-2*(x-1)^2) y = x^3 + x^2 + 7*x - Đơn giản biểu thức: >> y=simplify(sin(x)^2+cos(x)^2) y = >> y=simplify((1-x^2)/(1-x)) y = x + >> simple((1/x^3+6/x^2+12/x+8)^(1/3)) simplify: ((2*x + 1)^3/x^3)^(1/3) radsimp: (12/x + 6/x^2 + 1/x^3 + 8)^(1/3) simplify(100): ((2*x + 1)^3/x^3)^(1/3) combine(sincos): (12/x + 6/x^2 + 1/x^3 + 8)^(1/3) combine(sinhcosh): (12/x + 6/x^2 + 1/x^3 + 8)^(1/3) combine(ln): (12/x + 6/x^2 + 1/x^3 + 8)^(1/3) factor: Phạm Hùng Kim Khánh Trang 84 Giáo trình MatLabSymbolic (12/x + 6/x^2 + 1/x^3 + 8)^(1/3) expand: (12/x + 6/x^2 + 1/x^3 + 8)^(1/3) combine: (12/x + 6/x^2 + 1/x^3 + 8)^(1/3) rewrite(exp): (12/x + 6/x^2 + 1/x^3 + 8)^(1/3) rewrite(sincos): (12/x + 6/x^2 + 1/x^3 + 8)^(1/3) rewrite(sinhcosh): (12/x + 6/x^2 + 1/x^3 + 8)^(1/3) rewrite(tan): (12/x + 6/x^2 + 1/x^3 + 8)^(1/3) mwcos2sin: (12/x + 6/x^2 + 1/x^3 + 8)^(1/3) collect(x): FAIL ans = ((2*x + 1)^3/x^3)^(1/3) 1.6 Giải phương trình hệ phương trình Dùng hàm solve giải phương trình hệ phương trình, dsolve để giải phương trình vi phân Giải phương trình bậc n: >> y=solve('x^3+2*x^2+1') y = Phạm Hùng Kim Khánh Trang 85 Giáo trình MatLabSymbolic - 4/(9*(43/54 - (59^(1/2)*108^(1/2))/108)^(1/3)) (43/54 - 1/108*59^(1/2)*108^(1/2))^(1/3) - 2/3 - 2/(9*(43/54 (59^(1/2)*108^(1/2))/108)^(1/3)) + (43/54 (59^(1/2)*108^(1/2))/108)^(1/3)/2 (3^(1/2)*i*(4/(9*(43/54 - (59^(1/2)*108^(1/2))/108)^(1/3)) - (43/54 - 1/108*59^(1/2)*108^(1/2))^(1/3)))/2 - 2/3 2/(9*(43/54 (59^(1/2)*108^(1/2))/108)^(1/3)) + (43/54 (59^(1/2)*108^(1/2))/108)^(1/3)/2 + (3^(1/2)*i*(4/(9*(43/54 - (59^(1/2)*108^(1/2))/108)^(1/3)) - (43/54 - 1/108*59^(1/2)*108^(1/2))^(1/3)))/2 - 2/3 >> eval(y) ans = -2.2056 0.1028 - 0.6655i 0.1028 + 0.6655i >> [x,y]=solve('x^2+x*y+y=1','x^2-4*y=3') x = -1 - 11^(1/2) - 11^(1/2) - y = -1/2 11^(1/2) + 3 - 11^(1/2) >> eval(x) ans = -1.0000 Phạm Hùng Kim Khánh Trang 86 Giáo trình MatLabSymbolic -5.3166 1.3166 >> eval(y) ans = -0.5000 6.3166 -0.3166 Giải phương trình lượng giác: >> solve('2*cos(x)+2') ans = pi >> solve('2*cos(x)') ans = pi/2 >> solve('cos(x)=sin(x)') ans = pi/4 >> y=solve('exp(x)=tan(x)') y = matrix([[-226.19467105846511316931032359612]]) >> eval(y) ans = -226.1947 Phạm Hùng Kim Khánh Trang 87 Giáo trình MatLabSymbolic Giải hệ phương trình: >> y1=sym('2*x1+3*x2-2*x3=1'); >> y2=sym('x1-x2+3*x3=2'); >> y3=sym('x2-2*x3=4'); >> [x1,x2,x3]=solve(y1,y2,y3,'x1,x2,x3') x1 = 35/2 x2 = -19 x3 = -23/2 >> y3=sym('x2^2-2*x3=4'); >> [x1,x2,x3]=solve(y1,y2,y3,'x1,x2,x3') x1 = 21/64 - (7*329^(1/2))/64 (7*329^(1/2))/64 + 21/64 x2 = 329^(1/2)/8 + 5/8 5/8 - 329^(1/2)/8 x3 = (5*329^(1/2))/64 + 49/64 49/64 - (5*329^(1/2))/64 >> eval([x1,x2,x3]) ans = -1.6558 2.8923 2.1827 2.3120 -1.6423 -0.6514 Phạm Hùng Kim Khánh Trang 88 Giáo trình MatLabSymbolic Giải phương trình vi phân: >> y=dsolve('Dy=y*tan(x)+cos(x)','x') kiện đầu %Khơng có điều Điều kiện y = (x/2 + sin(2*x)/4)/cos(x) + C5/cos(x) >> simplify(y) ans = (4*C5 + 2*x + sin(2*x))/(4*cos(x)) >> pretty(y) x sin(2 x) - + -2 C5 + -cos(x) >> y(0)=1 cos(x) y=dsolve('Dy=1+y^2','y(0)=1','x') % đầu y = tan(pi/4 + x) >> y=dsolve('D2y=cos(2*x)-y','Dy(0)=1','y(0)=1','x') Giải phương trình vi phân cấp % y = Phạm Hùng Kim Khánh Trang 89 Giáo trình MatLabSymbolic (5*cos(x))/3 + sin(x) + (8*tan(x/2)^2*sin(x))/(3*(tan(x/2)^2 (2*cos(x)*(3*tan(x/2)^4 + 1))/(3*(tan(x/2)^2 + 1)^3) sin(x)*(sin(x) + 1)^2)) 6*tan(x/2)^2 + >>y= simplify(y) y = (2*tan(x/2)^3 + (16*tan(x/2)^2)/3 8/3)/(tan(x/2)^2 + 1)^2 - 5/3 + 2*tan(x/2) + >> pretty(y) / x \2 16 tan| - | / x \3 tan| - | \ / / x \ + + tan| - | + - \ / \ / - - / / x \2 | tan| - | \ \ / \2 + | / >> y=dsolve('D2y-2*Dy-3*y=0','y(0)=0','y(1)=1','x') y = 1/(exp(x)*(1/exp(1) - exp(3))) - exp(3*x)/(1/exp(1) exp(3)) >> y=simple(y) y = Phạm Hùng Kim Khánh Trang 90 Giáo trình MatLabSymbolic (1/exp(x) - exp(3*x))/(1/exp(1) - exp(3)) >> pretty(y) - exp(3 x) exp(x) - exp(3) exp(1) >> [f,s] = dsolve ('Dz=3*z+4*y', 'Dy=-4*z+3*y' 'z(0)=0','y(0)=1','x') %Giải hệ phương trình vi phân , f = cos(4*x)*exp(3*x) s = sin(4*x)*exp(3*x) 1.7 Tìm giới hạn Dùng hàm limit tìm giới hạn hàm >> syms x a t h >> y=limit(sin(x)/x) % x y = >> y=limit(sin(x)/x,inf) % x y = >> limit(1/x,x,0,'right') % Giới hạn phải Phạm Hùng Kim Khánh Trang 91 Giáo trình MatLabSymbolic ans = Inf >> limit(1/x,x,0,'left') % Giới hạn trái ans = -Inf >> limit((sin(x+h)-sin(x))/h,h,0) ans = cos(x) Phần thực hành - Tính vẽ đạo hàm hàm số y = sinx3 Tính tích phân: ∫ - Giải hệ phương trình: { - Vẽ mặt có phương trình sau: - Tính đạo hàm cấp hàm số sau: - Giải toán chương cách dùng Symbolic Phạm Hùng Kim Khánh Trang 92 ...Giáo trình MatLab Symbolic -sin(x) >>diff('x^3+3*x^2+2*x-1',2) %Đạo hàm cấp ans = 6*x + >>y = diff('x/(1+x^3)')... Dùng hàm finverse để tìm hàm ngược >> finverse(1/x) Phạm Hùng Kim Khánh Trang 82 Giáo trình MatLab Symbolic ans = 1/x >> finverse(a*x+b) ans = -(b - x)/a >> finverse(x^2) %Warning có kết khác... Khai triển đẳng thức: >> f = sym('x^2-1'); >> factor(f) Phạm Hùng Kim Khánh Trang 83 Giáo trình MatLab Symbolic ans = (x - 1)*(x + 1) >> y=expand((x+1)^3-2*(x-1)^2) y = x^3 + x^2 + 7*x - Đơn giản