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

Part 9 TÍNH TOÁN ỨNG DỤNG TRONG KTDK

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 (1.4 MB, 50 trang )

M-FILE, or SCRIPT (tt)
‰ Giải PTB2 bằng M-FILE

©Copyright 2007
MATLAB

111


M-FILE, or SCRIPT (tt)
>> ptb2
Nhap a = 1
Nhap b = -2
Nhap c = 1
Nghiem cua phuong trinh bac 2:
1
1

©Copyright 2007
MATLAB

112


M-FILE, or SCRIPT (tt)
‰ SỬ DỤNG FILE SCRIPT

ƒ Chúng ta có thể soạn một script file theo cấu
trúc đề nghị như sau:
a. Phần chú thích (comments section): Viết
các dịng chú thích cho chương trình.


9

Dịng 1: Tên của chương trình và các từ
khóa mơ tả chương trình (dịng này được
MATLAB gọi là dịng H1 và lệnh lookfor
của MATLAB sẽ tìm thơng tin ở dịng H1
này khi có u cầu)

©Copyright 2007
MATLAB

113


M-FILE, or SCRIPT (tt)
9

Dịng 2: Tên người viết chương trình, ngày viết.

9

Định nghĩa các tên biến đầu vào và đầu ra. Có
thể thêm vào định nghĩa tên các biến trung
gian. Lưu ý là phải xác định rõ đơn vị đo lường.
Cho tất cả các biến đầu vào và đầu ra.

9

Tên của từng hàm tự tạo được sử dụng trong
chương trình.


b. Phần đưa vào các giá trị đầu vào (input section)
c. Phần tính tốn (calculation section)

©Copyright 2007

d. Phần trình bày kết quả: Dùng một số hàm của
MATLAB để trình bày kết quả.
MATLAB

114


M-FILE, or SCRIPT (tt)
ƒ Thí dụ:

ƒ Soạn Script file tính diện tích hình tam giác
ABC, khi biết tọa độ ba điểm trong khơng gian
R3. Diện tích tam giác được tính bằng cơng
thức:

1
S = AB ∧ AC
2

ƒ Trong đó, ký hiệu (^) chỉ tích có hướng của hai
vectơ AB và AC.

©Copyright 2007
MATLAB


115


M-FILE, or SCRIPT (tt)
Trong cửa sổ Editor/Debugger, ta soạn các dịng lệnh như sau:

©Copyright 2007
MATLAB

116


M-FILE, or SCRIPT (tt)
ƒ

Trong chương trình trên hàm cross(u,v) sẽ trả về một vectơ
là vectơ tích có hướng của 2 vectơ u và v.
Lưu ý: vectơ u (hoặc v) được xác định bởi các thành phần
số của nó.

Thí dụ:
u = [1,-2,4], v = [-4,2,0]
ƒ

Hàm norm(p) sẽ tính module của vectơ p. Lệnh clear xuất
hiện trong đầu chương trình sẽ xóa toàn bộ các biến mà
WORKSPACE đang quản lý và dành vùng nhớ để quản lý
các biến của chương trình.


ƒ

Dịng lệnh disp(S) sẽ hiện thị giá trị biến S ra cửa sổ lệnhcommand windows(so sánh với lệnh disp(‘text’), hiển thị
chuỗi ký tự).

©Copyright 2007
MATLAB

117


M-FILE, or SCRIPT (tt)
THỰC HIỆN
% File dt_tamgiac.m: Chương trình tính diện tích hình tam giác,
% Tên người lập trình
% Dữ liệu đầu vào: Tọa ba điểm A,B,C
% Dữ liệu đầu ra: Diện tích S của ΔABC
% Biến trung gian p chỉ vectơ tích có hướng của hai vectơ AB x AC
clear
disp(‘CHUONG TRINH TINH DIEN TICH HINH TAM GIAC’)
disp(‘KHI BIET TOA DO BA DIEM’)
disp(‘=========================================’)
a = input(‘Tọa điểm A = ‘);
b = input(‘Tọa điểm B = ‘);
c = input(‘Tọa điểm C = ‘);
p = cross(b-a,c-a); % Tích có hướng của hai vectơ AB x AC

©Copyright 2007

S = 0.5*norm(p); % Diện tích ΔABC

disp(‘Dien tich tam giac ABC:’)
disp(S)
MATLAB

118


M-FILE, or SCRIPT (tt)
‰ Khi chạy chương trình cho kết quả:

>> DT_Tamgiac
CT TINH DIEN TICH HINH TAM GIAC
KHI BIET TOA DO BA DIEM
==================================
Toa do diem A = [2,0,0]
Toa do diem B = [4,0,0]
Toa do diem C = [3,2,0]
Dien tich tam giac ABC:
2
©Copyright 2007
MATLAB

119


Toolbox Symbolic
‰ MATLAB dùng các biểu thức ở dạng biểu tượng (symbolic)

như các chuỗi kí tự để phân biệt với các biến hay phép
tốn dạng số học (numberic)

‰ Xem Thí dụ dưới đây:

>> x = sym('x'); %Tao bien symbolic x
>> eq = 'x^2+2*x+a=0'; %Dinh nghia PT voi bien symbolic x
>> solve(eq) %Ham dung de giai PT tren
ans =
-1+(1-a)^(1/2)
-1-(1-a)^(1/2)

©Copyright 2007
MATLAB

120


Toolbox Symbolic
‰ Định nghĩa biểu thức symbolic
Biểu thức

Trong MATLAB

1
2.x n

⎡a
M =⎢
⎣c
b

f =∫

a

‘1/(2*x^n)’

b⎤

d⎦

M = sym(‘[a,b;c,d]’)

x3
dx
1− x

f = int(‘x^3/sqrt(1-x)’,’a’,’b’)

©Copyright 2007
MATLAB

121


Toolbox Symbolic
ƒ Hàm symbolic cho phép tính tốn với các biểu
thức, Thí dụ:
>>diff(‘cos(x)’) % Tính đạo hàm của cos(x)
ans =
-sin(x)
>>M=sym(‘[a,b;c,d]’)
ans =

[a

b]

[c

d]

©Copyright 2007
MATLAB

122


Toolbox Symbolic
ƒ Ở đây, ‘cos(x)’ là một chuỗi, diff(‘cos(x)’) là một
biểu thức symbolic chứ không phải là một hàm số
học. Ở Thí dụ 2, M=sym(‘[a,b;c,d]’) là một biểu
thức symbolic.
ƒ Sử dụng symbolic để xây dựng các hàm toán học
dạng symbolic.
ƒ Khai báo biến (như đã trình bày các slide trước)


sym(x)



sym x




syms x

©Copyright 2007
MATLAB

123


Toolbox Symbolic

ƒ Các lệnh toán học sử dụng symbolic
ƒ f và g là hai hàm symbolic
− f+g

symadd(f,g)

− f-g

symsub(f,g)

− f*g

symmul(f,g)

− f/g

symdiv(f,g)


− f^g

sympow(f,g)

©Copyright 2007
MATLAB

124


Toolbox Symbolic
diff(f)

Đạo hàm bậc nhất theo biến x

diff(f,’a’)

Đạo hàm bậc nhất theo biến a

diff(f,’a’,n)

Đạo hàm bậc n theo biến n

int(f)

Tính tích phân theo biến x

int(f,’a’)

Tính tích phân theo biến a


int(f,1,2)

Tính tích phân theo biến x từ 1 đến 2.

int(f,’a’,1,2) Tính tích phân theo biến a từ 1 đến 2.
int(f,’n’,’m’)

Tính tích phân theo biến x từ n đến m

solve(f)

Giải phương trình f = 0

dsolve(f)

Giải phương trình vi phân

dsolve(f,’a’) Giải PT vi phân với ĐK ban đầu
ezplot(f)

Vẽ đồ thị hàm mà không cần giá trị của biến.

©Copyright 2007
MATLAB

125


Toolbox Symbolic

F=fourier(f)

Biến đổi Fourier f(x)->F(w)

f=ifourier(F)

Biến đổi Fourier ngược F(w)->f(x)

F=fourier(f,v)

Biến đổi Fourier f(x)->F(v)

F=fourier(f,t,v)

Biến đổi Fourier ngược f(t)->F(v)

F=ztrans(f)

Biến đổi z f(n)->F(z)

f=ztrans(F)

Biến đổi z ngược F(z)->f(n)

F=ztrans(f,w)

Biến đổi z f(n)->F(w)

F=ztrans(F,k,w)


Biến đổi z ngược f(k)->F(w)

F=laplace(f)

Biến đổi Laplace f(t)->F(s)

f=laplace(F)

Biến đổi Laplace F(s)->f(t)

©Copyright 2007
MATLAB

126


SIMULINK
‰ Simulink 5.0 (Simulation and Link - R13) được MatWorks

giới thiệu vào tháng 6 năm 2003. Nó cho phép phân tích,
mơ hình hóa và mơ phỏng các hệ thống động tuyến tính và
phi tuyến, liên tục và rời rạc một cách trực quan trong môi
trường giao tiếp đồ họa, bằng các thao tác chuột đơn giản.
Có thể nói, khơng tận dụng được Simulink là một thiệt thòi
lớn cho người làm công tác mô phỏng!
‰ Khởi động Simulink bằng một trong các cách sau:

ƒ nhập:
>>simulink
ƒ hoặc nhấp chuột vào


trên menubar của Matlab

©Copyright 2007
MATLAB

127


SIMULINK
‰ Thư viện simulink hiện ra như hình sau:

ƒ Trước tiên, sinh viên hãy nhấp chuột vào các thanh
cuộn của thư viện để có cái nhìn thân thiện về simulink.
ƒ Từ đây, để có thể tạo mơ hình bằng simulink, hãy:
Nhấp chuột vào biểu tượng
của thư viện simulink
Chọn: File – New – Model trong
Menu của thư viện Simulink
Chọn: File – New – Model trong
cửa sổ lệnh của Matlab

©Copyright 2007
MATLAB

128


SIMULINK
‰ Môi trường soạn thảo của Simulink


‰ Cửa sổ này cho phép ta ‘nhấp - kéo - thả’ vào

từng khối chức năng trong thư viện simulink. Thí
dụ, đặt vào đây khối ‘Sine Wave’ trong thư viện
simulink như hình sau:
©Copyright 2007
MATLAB

129


SIMULINK

Lấy một khối từ thư viện

©Copyright 2007
MATLAB

130


MẢNG và MA TRẬN
‰ Mảng một chiều

ƒ Mảng một chiều (vecto) là tập hợp các số được
sắp xếp có thứ tự.
ƒ length(u): Tính số phần tử trong mảng một
chiều u.
ƒ Muốn truy xuất phần tử thứ n trong mảng thì:

ten_mang(n);
ƒ Các phần tử của mảng đựơc phân cách nhau
bởi dấu phẩy và được đặt trong đơi móc vng
[ ] (kiểu dịng).

©Copyright 2007

ƒ Các phần tử trong mảng phân cách nhau dấu
chấm phẩy thì gọi là mảng kiểu cột.
MATLAB

131


MẢNG và MA TRẬN
ƒ Cách tạo mảng:
* Ten_mang = [m1, m2, m3, …] % Mảng kiểu dòng
* Ten_mang = [m1; m2; m3, …] % Mảng kiểu cột
* Ten_mang = [m1 m2 m3 …] % Vectơ dòng
* Ten_mang = [m1
m2
m3
…]
* Ten_mang = [a:Δ:b] % Mảng kiểu cách đều.
ƒ Thí dụ:
>> x = [0:2:9]
x=
©Copyright 2007

0


2

4
MATLAB

6

8
132


MẢNG và MA TRẬN
• x = linspace(x1,x2,n)

% Tạo một vectơ dịng có các phẩn tử cách
đều, với x1 là cận dưới, x2 là cận trên, và n là
số điểm của dãy (kể cả 2 điểm x1, x2). Nếu n bị
bỏ qua, giá trị mặc định của nó là 100.
Thí dụ:
>> z = linspace(2,8,7)
z=2 3 4

5

6

7

8


©Copyright 2007
MATLAB

133


MẢNG và MA TRẬN
ƒ x = logspace(a,b,n)

% Sẽ tạo ra 1 vectơ dịng có n phần tử cách
khoảng theo thang logarit, phần tử đầu là 10a và
phần tử cuối là 10b, các phần tử giữa có dạng
10x, trong đó x là 1 điểm cách đều giữa a và b.
Có (n-2) điểm như vậy. Nếu n bỏ đi trong câu lệnh
thì mặc định của nó là 50.
Thí dụ:
>> u = logspace(-1,1,4)
u=
©Copyright 2007

0.1000

0.4642
MATLAB

2.1544

10.0000
134



MẢNG và MA TRẬN
‰ Các hàm liên quan đến mảng một chiều

a. roots(Ten_mang)
Nghiệm của một đa thức Ten_mang là một đa
thức được mơ tả là một mảng có các phần tử là
các hệ số đa thức, bắt đầu ở bậc cao nhất.
Mảng kiểu cột.
b. poly(r)
Trả về một mảng kiểu đòng với các phần tử là
các hệ số của đa thức có nghiệm trước là các
phần tử của mảng r (bài tốn ngược)
©Copyright 2007
MATLAB

135


×