Tải bản đầy đủ (.pdf) (19 trang)

Ứng dụng tính toán trong Matlab

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (151.2 KB, 19 trang )

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]
Trang 1
>> 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)


>> poly2sym([1 0 -2 -5])
Trang 2
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
0.7500 -0.2500 -0.7500
Trang 3
>> 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]
>> C=inv(A)
Trang 4
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 =

v+1
Trang 5
>>[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),'.')
Trang 6

0 2 4 6 8 10 12
-1.5
-1
-0.5
0
0.5
1
1.5











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
>>y = diff(t^6,6) % đạo hm bậc 6 của hm t
6
.
Trang 7

×