CM Soft 70 NCT F2 Q10
Trang 1
Chơng 6
ứng dụng tính toán trong matlab
6.1 Lệnh sym, syms:
Mục đích: Biến đổi các số, biến, đối tợng thnh Symbolics.
Ví dụ:
>> sym x y
>> x = sym(x); y = sym(y);
% x,y l các biến symbolic.
>> syms x y real
>> x = sym(x, real);y =sym(y,real)
%x,y l biến kiểu thực symbolics
syms x real y
x = sym(x, real);y = sym(y)
% x l biến kiểu thực, y l biến bất kỳ kiểu symbolic
syms x y unreal
% x, y không phảil l biến thực
syms t
Q = sym(Q(t));
% t biến symbolic v Q l hm symbolic.
6.2 Nhân 2 đa thức: ( Dùng lệnh conv)
y1 = a
n
x
n
+ a
n-1
x
n-1
+...+a
0
y 2 = b
n
x
n
+ b
n-1
x
n-1
+...+b
0
Bớc1: Lập 2 ma trận hng tên y1, y2 có các phần tử l các hệ số từ a
n
đến a
0
v
b
n
đến b
0
giảm dần theo bậc của phơng trình ( Nếu hệ số no không có ghi 0 )
Bớc 2: dùng lệnh conv để nhân 2 đa thức.
>>y3= conv(y1,y2)
VD: y1 = 2x
2
+ 3x+1
y2 = 3x
2
+ 4x
>> y1 = [2 3 1]
CM Soft 70 NCT F2 Q10
Trang 2
>> y2 = [3 4 0]
>> y3 = conv(y1,y2)
>> y3 = 6 17 15 4 0
Chú ý: hm conv chỉ thực hiện nhân 2 đa thức. Muốn nhân nhiều đa thức với nhau ta phải
thực hiện nhiều lần hm conv.
6.3 Các tình toán cho phơng trình:
6.3.1 Giải phơng trình bậc cao: ( Lệnh Roots)
y = a
n
x
n
+ a
n-1
x
n-1
+...+a
0
Bớc1: Lập 1 ma trận hng có các phần tử l các hệ số từ a
n
đến a
0
giảm dần theo
bậc của phơng trình ( Nếu hệ số no không có ghi 0 )
Bớc 2: Dùng lệnh Roots để giải ma trận vừa tạo đợc.
VD giải phơng trình sau: y = x
5
-2x
4
+ 5x
2
-1
>> y = [ 1 -2 0 5 0 -1]
y =
1 -2 0 5 0 -1
>> kq=roots(y)
kq =
1.5862 + 1.1870i
1.5862 - 1.1870i
-1.1606
-0.4744
0.4627
6.3.2 Biết nghiệm tìm lại phơng trình: ( lệnh poly )
Lấy kết quả của ví dụ trên
>>A = [1 1 2;1 3 4;2 1 1];
>>poly(A)
ans =
1 -5 8 14
6.3.3 Chuyển từ phơng trình hệ số sang phơng trình có chứa cả tham số: (
poly2sym)
CM Soft 70 NCT F2 Q10
Trang 3
>> poly2sym([1 0 -2 -5])
ans =
x^3-2*x-5
>> y = [1 2 3 0 1]
y = 1 2 3 0 1
>> poly2sym(y)
ans = x^4+2*x^3+3*x^2+1
6.3.4 Gi¶i hÖ ph−¬ng tr×nh tuyÕn tÝnh:
Vd gi¶i hÖ ph−¬ng tr×nh tuyÕn tÝnh sau:
⎪
⎩
⎪
⎨
⎧
=++
=−+
=++
2
19463
732
zyx
zyx
zyx
Thùc chÊt hÖ ph−¬ng tr×nh trªn cã thÓ ®−a vÒ phÐp to¸n ma trËn sau:
2
19
7
111
463
132
=⋅−
z
y
x
Nh− vËy viÖc gi¶i hÖ PT tuyÕn tÝnh thùc chÊt lμ thùc hiÖn phÐp to¸n vÒ ma trËn.
>> A=[2 3 1;3 6 -4;1 1 1]
A =
2 3 1
3 6 -4
1 1 1
>> B=[7;19;2]
B =
7
19
2
>> C=inv(A)
C =
-2.5000 0.5000 4.5000
1.7500 -0.2500 -2.7500
CM Soft 70 NCT F2 Q10
Trang 4
0.7500 -0.2500 -0.7500
>> kq=C*B
kq =
1.0000
2.0000
-1.0000
VD2:
>>A=[1+i 2i;3+i 1]
A = 1.0000 + 1.0000i 0 + 2.0000i
3.0000 + 1.0000i 1.0000
>> C=inv(A)
C =
0.0882 + 0.1471i 0.2941 - 0.1765i
-0.1176 - 0.5294i -0.0588 + 0.2353i
>> B=[1; 2+i]
B =
1.0000
2.0000 + 1.0000i
>> KQ=C*B
KQ =
0.8529 + 0.0882i
-0.4706 - 0.1176i
VD3
>>syms a1 a2 b1 b2 c1 c2
>>A=[a1 a2;b1 b2]
A =
[ a1, a2]
[ b1, b2]
>> B=[c1;c2]
B =
[ c1]
[ c2]
CM Soft 70 NCT F2 Q10
Trang 5
>> C=inv(A)
C =
[ -b2/(-a1*b2+b1*a2), a2/(-a1*b2+b1*a2)]
[ b1/(-a1*b2+b1*a2), -a1/(-a1*b2+b1*a2)]
>> KQ=C*B
KQ =
[ -b2/(-a1*b2+b1*a2)*c1+a2/(-a1*b2+b1*a2)*c2]
[ b1/(-a1*b2+b1*a2)*c1-a1/(-a1*b2+b1*a2)*c2]
6.3.5 Gi¶i hÖ ph−¬ng tr×nh phi tuyÕn:( LÖnh solve)
VÝ dô:
sin(x)+y^2+log(z)=7
3*x+2^y+z^3=4
x+y+z=2
>>[x,y,z]=solve('sin(x)+y^2+log(z)=7','3*x+2^y+z^3=4','x+y+z=2')
x = -2.3495756224572032187410536400368
y = 2.6835269194785219427270239079010
z = 1.666048702978681276014029732135
VÝ dô:
x^2 + x*y + y = 3
x^2 - 4*x + 3 = 0
>>[x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0')
x =
[ 1]
[ 3]
y =
[ 1]
[ -3/2]
6.3.6 Gi¶i hÖ ph−¬ng tr×nh tham sè:
>>[a,u] = solve('a*u^2 + v^2= 0','u - v = 1','a,u')
a =
-v^2/(v^2+2*v+1)
u =
CM Soft 70 NCT F2 Q10
Trang 6
v+1
>>[a,v] = solve('a*u^2 + v^2','u - v = 1','a,v')
a = -(u^2-2*u+1)/u^2
v = u-1
6.3.7 Gi¶i hÖ ph−¬ng tr×nh vi ph©n th−êng: ( lÖnh dsolve)
>>y = dsolve('(D2y) =1','y(0) = 1')
y = 1/2*t^2+C1*t+1
>>[x,y]=
dsolve('Dx = y', 'Dy = -x')
x= cos(t)*C1+sin(t)*C2
y = -sin(t)*C1+cos(t)*C2
6.3.8 Gi¶i hÖ ph−¬ng tr×nh vi phÇn theo hμm cã s½n cña Matlab:
VÝ dô: Cho hÖ ph−êng tr×nh vi ph©n
Ch−¬ng tr×nh m« t¶ ph−¬ng tr×nh vi ph©n d¹ng M-file:
function dy = rigid(t,y)
dy = zeros(3,1);
dy(1) = y(2) * y(3);
dy(2) = -y(1) * y(3);
dy(3) = -0.51 * y(1) * y(2);
Thêi gian gi¶i ph−¬ng tr×nh vi ph©n Tspan =[0 12], vector ®iÒu kiÖn ®Çu [0 1 1]
>>options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-
5]);
>>[t,y] = ode45('rigid',[0 12],[0 1 1],options);
>>plot(t,y(:,1),'-',t,y(:,2),'-.',t,y(:,3),'.')
CM Soft 70 NCT F2 Q10
Trang 7
6.4 Lệnh v hm trong symbolic Matlab:
Symbolics Matlab l th viện các phép tính toán kiểu ký tự đợc đa vo môi trờng
tính
học của Matlab.
Ta cần chú ý rằng, khi viết một lệnh hay một hm trong Matlab phải viết bằng chữ
thờng.
6.4.1 Tính toán (Calculus):
Tính đạo hm (diff):
ắ diff(S): Đạo hm biểu thức symbolic S với biến của đạo hm tự do.
ắ diff(S,v) hay diff(S,sym(v)): Đạo hm biểu thức symbolic S với biến lấy
đạo hm l biến symbolic v.
ắ diff(S,n) : Đạo hm cấp n biểu thức S, n l số nguyên dơng.
Ví dụ:
>>syms x t
>> y = sin(x^2);
>>z = diff(y);
z = 2*cos(x^2)*x
pretty(z)% hiển thị dạng quen thuộc
2.cos
2
x.x
0 2 4 6 8 10 12
-1.5
-1
-0.5
0
0.5
1
1.5