Tải bản đầy đủ (.doc) (100 trang)

giải phương trình chuyển động của cơ hệ sử dụng các công cụ phần mềm ,qua các phần mềm matlab và daesol

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 (711.7 KB, 100 trang )

Đồ án tốt nghiệp
Lời nói đầu
Cùng với sự phát triển mạnh mẽ của tin học,để giải các phơng trình vi phân
chuyển động bằng máy tính, ngời ta thờng dùng các phơng pháp số chẳng hạn nh
phơng pháp Euler, phơng pháp Runge-Kutta Lý do sử dụng phơng pháp số bởi vì
các phơng trình chuyển động ít khi có dạng tuyến tính, mà thờng có dạng phi tuyến
phức tạp và khó đa ra các nghiệm tổng quát ở dạng giải tích.
Trong cơ học, sử dụng một số nguyên lý cơ bản ta thấy phơng trình chuyển động
của 1 cơ hệ bất kì thờng là các phơng trình vi phân cấp hai.Do vậy,việc giải các ph-
ơng trình chuyển động của cơ hệ thực chất đợc đa về giải các phơng trình vi
phân(PTVP).
Thông qua việc giải các PTVP ngời ta sẽ giải quyết đợc các bài toán vị trí,bài toán
vận tốc,bài toán gia tốc từ đó xác định đợc vị trí,vận tốc và gia tốc của cơ hệ ở
thời điểm bất kỳ.
Cùng với sự phát triển mạnh mẽ của tin học,khi ta đã có sẵn thuật giải của phơng
pháp số ,việc triển khai các phơng pháp số trên máy tính ngày càng thuận tiện và
nhanh chóng,do đó có nhiều phần mềm thông dụng giải phơng trình chuyển động
của cơ hệ.Trong phạm vi đố án tốt nghiệp này,em xin trình bày vấn đề giải phơng
trình chuyển động của cơ hệ sử dụng các công cụ phần mềm ,qua các phần
mềm Matlab và DAESOL sau đó là một chơng trình do em tự viết giải hệ PTVP
thờng sử dụng thuật toán Runge-Kutta cấp 4.
Do khả năng và thời gian còn nhiều hạn chế chắc chắn sẽ không tránh khỏi những
thiếu sót,em mong sẽ nhận đợc sự đóng góp chân thành và nhiều ý kiến thực tiễn từ
các thầy giáo và các bạn sinh viên. Qua đây,em xin gửi tới thầy Đinh Văn Phong
,thầy Phan Mạnh Dần lời cám ơn chân thành vì sự giúp đỡ chỉ bảo tận tình trong
suốt quá trình thực hiện đồ án tốt nghiệp để em có thể hoàn thành đồ án đúng thời
hạn đợc giao.
HN-8/5/2003.
Nguyễn Thành Long - Cơ Tin A-k43
1
Đồ án tốt nghiệp


I. Cơ sở lý thuyết giải các phơng trình vi phân chuyển
động.
1.Đặt vấn đề.
Phơng trình chuyển động của cơ hệ thờng là các phơng trình vi phân(PTVP), do
vậy việc giải các phơng trình chuyển động của cơ hệ đợc chuyển về giải các phơng
trình vi phân.
Đối với các cơ hệ holonom có thể dùng các toạ độ Lagrange để mô tả chuyển động
của cơ hệ.Nếu ta chọn các toạ độ suy rộng này là đủ(số các toạ độ suy rộng là n,
vừa đúng bằng số bậc tự do của cơ hệ ) thì từ phơng trình Lagange loại 2:
dt
d














.
q
i
T
-

q
i
T


=Q
i
i=1,2, ,n (1)
với : q
i
là các toạ độ suy rộng đủ.
Q
i
là các lực suy rộng ứng với các toạ độ suy rộng q
i
.
T là động năng tổng cộng của cơ hệ.
ta sẽ thu đợc n PTVP cấp 2. Sau khi thực hiện các đạo hàm cần thiết và dồn các gia
tốc suy rộng

qi
về vế trái ta có thể viết đợc PTVP chuyển động dới dạng sau:



q
i
=f
i
(q

1
,q
2
, q
n
,
.
q
1
,
.
q
2
, ,
.
q
n
,t) (2)
Với các điều kiện đầu q
i
(0) và
.
q
i
(0) ta có thể áp dụng các phơng pháp số sẽ trình
bày dới đây để tìm ra q
i
(giải PTVP thờng(ODE) cấp 2 có điều kiện đầu).
Nếu số toạ độ suy rộng là d, p là số toạ độ, n là số bậc tự do với p>n thì giữa các
toạ độ suy rộng q

i
,i=1,2 ,p sẽ có các liên kết ràng buộc:

f
j
(q
1
,q
2
, ,q
p
)=0 (3)
j=1,2, ,s
Với s là số phơng trình liên kết và
s+n=p
Với các toạ độ suy rộng d ta có thể sử dụng phơng trình Lagrange dạng nhân tử để
thiết lập PTVP chuyển động:
Nguyễn Thành Long - Cơ Tin A-k43
2
Đồ án tốt nghiệp
dt
d















.
q
i
T
-
q
i
T


=Q
i
-

=
s
j 1

j
q
f
i
j



(4)
i=1,2, ,p (5)
Với

j
là các nhân tử Largange .Nh thế với tập hợp 2 hệ phơng trình (3) và (4) ta
có (p+s) phơng trình cho (p+s) ẩn số là q
i
,i=1,2, ,p và

j
,j=1,2, ,s. ở dạng tổng
quát đây là hệ PTVP hỗn hợp gồm các PTVP cấp hai (4) và các phơng trình đại số
(3).
Việc giải PTVP thờng (ODE) và PTVP đại số (DAE) đợc trình bày cụ thể ở phần
dới đây.
2.Giải phơng trình vi phân thờng.
Ta xét phơng trình vi phân thờng:
y=f(x,y) (6)
Điều kiện đầu đợc cho dới dạng:
y(x
0
)=y
0
(7)
Với y là hàm số của x
y=y(x).
Bài toán trên còn gọi là bài toán Cauchy.
Bài toán (6) có thể mở rộng cho n hệ phơng trình vi phân cấp 1:

y
1
=f
1
(x,y
1
,y
2
, ,y
n
)
y
2
=f
2
(x,y
1
,y
2
, ,y
n
)
(8)
y
n
=f
n
(x,y
1
,y

2
, ,y
n
)
Với y
1
,y
2
, ,y
n
đều là các hàm số của x : y
i
=y
i
(x) i=1,2, ,n.
Ta viết lại (3) nh sau:
y
i
=f
i
(x,y
1
,y
2
, ,y
n
) (9)
Với các điều kiện đầu:
y
i

(x
0
)=y
i0
; i=1,2 n. (10)
Ta viết dới dạng ma trận:
y=f(x,y) (11)
Với các điều kiện đầu:
Nguyễn Thành Long - Cơ Tin A-k43
3
Đồ án tốt nghiệp
y(x
0
)=y
0
(12)
Trong đó:
y=[y
1
,y
2
, ,y
n
]
T
y=[y
1
,y
2
, ,y

n
]
T
f=[f
1
,f
2
, ,f
n
]
T
y
0
=[y
00
,y
01
, ,y
0n-1
]
T
;
Trong thực tế ta thờng gặp các bài toán ở dạng phơng trình vi phân cấp cao.Xét ph-
ơng trình vi phân cấp n:
y
(n)
=f(x,y,y,y, ,y
(n-1)
) (13)
Với các điều kiện đầu:

y
(i)
(x
0
)=y
i0
i=0,1,2, ,(n-1).
Trong đó ta ký hiệu y
(i)
là đạo hàm cấp i của hàm số
y=y(x).
Ta chuyển hệ (13) sang hệ (8) bằng cách đa ra:
y
1
=y, y
2
=y, y
3
=y, ,y
n
=y
(n-1)
.
Do đó ta có hệ phơng trình gồm n phơng trình vi phân cấp một:
y
1
=y
2
y
2

=y
3

y
n-1
=y
n
y
n
=f(x,y
2
,y
2
, ,y
n
)
Với các điều kiện đầu:
y
1
(x
0
)=y
00
, y
2
(x
0
)=y
10
, , y

n
(x
0
)=y
n-1,0
Do đó, bài toán giải các phơng trình vi phân đợc đa về giải PTVP thờng (6).
Ngời ta thờng áp dụng 2 nhóm phơng pháp sau để giải phơng trình vi phân thờng.
a.Phơng pháp chính xác:
Là phơng pháp dựa vào các tích phân trực tiếp thông qua các tích phân cơ bản tìm
ra các nghiệm ở dạng khép kín. Các điều kiện đầu sẽ xác định các nghiệm riêng từ
nghiệm tổng quát.
b. Phơng pháp gần đúng:
Nguyễn Thành Long - Cơ Tin A-k43
4
Đồ án tốt nghiệp
Theo phơng pháp này chỉ tìm các xấp xỉ của nghiệm chính xác đợc xác định từ các
điều kiện đầu.Các phơng pháp này có u điểm là tổng quát và đợc sử dụng rộng rãi
hơn.Có thể đa ra các nghiệm dới dạng các biểu thức giải tích,bảng số hay đồ thị.Ta
chủ yếu tập trung vào nhóm phơng pháp này.
ở nhóm phơng pháp thứ hai,ngời ta có nhiều sơ đồ thuật giải nh phơng pháp
Euler,phơng pháp Runge-Kutta,các phơng pháp của Adams,phơng pháp sai
phân,phơng pháp PREDICTOR-CORRECTOR
Ta xét 2 phơng pháp Euler và Runge-Kutta:
Phơng pháp Euler.
Để tính giá trị của hàm số vi phân trong phơng trình,thay các giá trị đúng của hàm
số đó tại từng thời điểm bằng một chuỗi các xấp xỉ đợc tính nhờ các biểu thức hồi
qui.
Biểu thức hồi qui của phơng pháp Euler có dạng :
z
0

=y
0
z
i+1
=z
i
+h.f(x
i
,z
i
)
h=(b-a)/N
Trong đó:
y
0
là điều kiện đầu
z
i
là các giá trị xấp xỉ của hàm số tại bớc tích phân thứ i.
h là bớc tích phân.
[a,b] là khoảng nghiệm cần tìm.
N là số điểm cần tính.
Phần tử đầu tiên của chuỗi {z
i
} sẽ đợc xác định nhờ điều kiện đầu.Các giá trị tiếp
theo đợc tính nhờ giá trị trớc đó và trong mỗi bớc ta chỉ phải tính giá trị của hàm số
f một lần.
Công thức Euler ở trên còn có sai số nghiệm khá lớn nên trong thực tế có hai dạng
cải tiến của phơng pháp trên:
+Dạng cải tiến thứ nhất

z
0
=y
0
z
i+1
=z
i
+h.k
2
k
1
=f(x
i
,z
i
)
k
2
=f(x
i
+0.5h,z
i
+0.5k
1
h)
Nguyễn Thành Long - Cơ Tin A-k43
5
Đồ án tốt nghiệp
+Dạng cải tiến thứ hai

z
0
=y
0
z
i+1
=z
i
+0.5h(k1+k2)
k
1
=f(x
i
,z
i
)
k
2
=f(x
i
+h,z
i
+k
1
h)
Các phơng pháp vừa đợc mô tả có thể xếp vào các nhóm phơng pháp 1 nút để giải
PTVP :khi tìm z
i+1
ta chỉ cần h và giá trị z
i

, tức là một nút lùi lại.Có thể viết nh sau:
z
i+1
= z
i
+hD(x
i
, z
i
,h)=z
i
+hD
i
(14)
Có thể coi D
i
là phơng mà theo đó ta tiến từ điểm (x
i
, z
i
) đến (x
i+1
, z
i+1
). Do đó
hàm này đợc gọi là hàm chỉ phơng. Với phơng pháp Euler thì đó chính là f
i
, còn ở
2 dạng cải tiến của Euler thì đó là k
2


2
1
(k
1
+k
2
).
Trở lại (14) ta có thể tìm hàm D một cách đơn giản bằng cách khai triển hàm số y
tại x
i+1
nh là tại các điểm lân cận của x
i
theo khai triển Taylor và chỉ lấy một số
phần tử đầu tiên :
y(x
i+1
)=y
i+1
=y
i
+
!2
)('
x
i
y
+
!2
)(''

x
i
y
h
2
+ (15)
Trong (15) nếu ta chỉ lấy 2 phần tử đầu tiên của chuỗi sẽ thu đợc:
D=
!1
)(' xy
=f(x,y)=f.
Đây chính là sơ đồ của phơng pháp Euler. Nếu lấy tiếp phần tử nữa có thể viết:
D=
!1
)(' xy
+
!2
)('' xy
h = f +
2
1
h(f
x
+f
y
f)
Với y=f
x
+f
y

f
Vì y=f(x,y) và trong đó ta ký hiệu f
x
và f
y
là các đạo hàm riêng của f theo x và
y.
Ta có thể làm tơng tự với các cấp cao hơn, nhng việc phải tính đạo hàm là nhợc
điểm của phơng pháp này.Phơng pháp Runge-Kutta đã khắc phục đợc nhợc điểm
này.
Phơng pháp Runge-Kutta.
Phơng pháp Euler có thể tính chính xác hơn bằng cách khai triển Taylor cho nhiều
phần tử.Nhng nhợc điểm của phơng pháp này là phải tính đạo hàm (đã trình bày ở
trên).Để khắc phục điểm này Runge-Kutta đã đa ra phơng pháp để tìm z
i+1
mà chỉ
Nguyễn Thành Long - Cơ Tin A-k43
6
Đồ án tốt nghiệp
cần z
i
và giá trị của hàm số ở một vài điểm xác định khác.Hoàn toàn không phải
dùng đến đạo hàm riêng của hàm số f. Các phơng pháp này gọi là phơng pháp một
nút nhiều điểm . Tuỳ theo số điểm k mà tại đó cần tính giá trị hàm số f ta có ph-
ơng pháp k điểm.
Cần phân biệt rõ các khái niệm :k nút,k điểm và cấp k.
+k nút tức là để tính giá trị tại z
i+1
ta cần giá trị của k nút trớc đó.
+k điểm là số điểm tại đó cần tính giá trị hàm số f.

+Khái niệm cấp k của phơng pháp liên quan đến các kiến thức sâu hơn về toán
số.Nó đợc định nghĩa thông qua các sai số cục bộ của các xấp xỉ.Ta có thể hình
dung cấp là độ chính xác của phơng pháp.
Biểu thức hồi qui của phơng pháp Runge-Kutta cho r điểm có dạng:
z
i+1
=z
i
+h(p
r1
k
1
+ p
r2
k
2
+ + p
rr
k
r
)
k
1
=f(x
i
,z
i
)
k
2

=f(x
i
+
2
h, z
i
+h
21
k
1
)

k
r
=f(x
i
+
r
h, z
i
+h(
r1
k
1
+
r2
k
2
+ +
r,r-1

k
r-1
))
trong đó p
rm
(m=1,2 ,r),
m
,
mj
(m=2,3 ,r ;j=1,2, r-1) là các hằng số đợc xác
định tuỳ theo từng phơng pháp.
Ngời ta chứng minh đợc rằng với một phơng pháp r điểm thì cấp tối đa phơng pháp
đó đạt đợc không thể lớn hơn r.
Ta chọn các hệ số p
rm
,


m
,
mj
sao cho số điểm r đã định, phơng pháp sẽ đạt cấp
cao nhất.
+r=1
Chỉ đợc chọn p
11
,ta chọn p
11
=1.
Ta có sơ đồ:

z
i+1
=z
i
+hf
i
Ta thấy đây chính là thuật giải Euler, chính là phơng pháp cấp 1.
+r=2
Ta có 3 phơng trình để chọn 4 tham số p
21
,

p
22
,
2
,
21
:
p
21
+p
22
-1=0
2p
22

22
-1=0
2p

22

21
-1=0
Nguyễn Thành Long - Cơ Tin A-k43
7
Đồ án tốt nghiệp
-Nếu p
22
=1 thì p
21
=0,
2
=
21
=
2
1
.Đây chính là sơ đồ Eurler cải tiến dạng
thứ nhất.
- Nếu p
22
=
2
1
thì p
21
=
2
1

,
2
=
21
=1.Đây chính là sơ đồ Eurler cải tiến dạng thứ
hai, cấp chính xác chỉ là cấp 2.
+r=3
Với 3 điểm tơng tự trên, phơng pháp chỉ đạt tối đa là cấp 3.
+r=4
Phơng pháp đạt đợc tối đa là cấp 4.
Trong phạm vi đồ án tốt nghiệp này, sử dụng ngôn ngữ C , áp dụng thuật toán của
phơng pháp Runge-Kutta cấp 4 em viết đợc chơng trình giải PTVP thờng,em tạm
gọi chơng trình của mình là ODE_RK4. Em chọn phơng pháp Runge-Kutta cấp 4
để giải vì phơng pháp này dễ điều khiển sai số và đạt độ chính xác cao, đây là một
phơng pháp rất hay đợc dùng.Phơng pháp này có thể dễ dàng chuyển qua hệ phơng
trình.
+Các bớc giải của phơng pháp Runge-Kutta cấp 4 cho hệ PTVP nh sau:
1) Tính c
1
=h*f(x
i
,z
i
);
2) Tính c
2
=h*f(x
i
+
2

1
h,z
i
+
2
1
c
1
);
3) Tính c
3
=h*f(x
i
+
2
1
h,z
i
+
2
1
c
2
);
4) Tính c
4
=h*f(x
i
+h,z
i

+ c
3
);
5) Tính z
i+1
=z
i
+
6
1
(c1+2c
2
+2c
3
+c
4
);(Với i=0,1, ,n-1).(Lặp từ z
i
sang z
i+1
).
Xét hệ phơng trình vi phân viết dới dạng ma trận :
y=f(x,y) (7)
Trong đó:
y=[y
1
,y
2
, ,y
n

]
T
y=[y
1
,y
2
, ,y
n
]
T
f=[f
1
,f
2
, ,f
n
]
T
Với y
i
=f
i
(x,y
1
,y
2
, ,y
n
)
Nguyễn Thành Long - Cơ Tin A-k43

8
Đồ án tốt nghiệp
Chú ý là trong các hệ cơ học biến độc lập x chính là biến thời gian t,còn các hàm
số y
1
,y
2
, chính là các toạ độ suy rộng của cơ hệ.
Trong cơ học,khi sử dụng phơng trình Lagrange loại 2 để thiết lập phơng trình vi
phân chuyển động:
dt
d














.
q
i
T

-
q
i
T


=Q
i
i=1,2, ,n (1)
Ta sẽ thu đợc hệ các phơng trình vi phân cấp 2 dạng:

q
i
=f
i
(q
1
,q
2
, q
n
,
.
q
1
,
.
q
2
, ,

.
q
n
,t) i=1,2, ,n (2)
Các điều kiện đầu q
i
(0) và
.
q
i
(0).
áp dụng cơ sở lý thuyết đã trình bày ở trên ta hoàn toàn có thể hạ bậc (2) và sử
dụng các phơng pháp số đã trình bày để giải phơng trình vi phân chuyển động đã
thiết lập đợc.
Ta hạ bậc (2) nh sau:
Đặt :
y
1
=q
1
;
y
2
=
.
q
1
;
y
3

=q
2
;
y
4
=
.
q
2
;

y
2n-1
=q
n
;
y
2n
=
.
q
n
;
Do đó, ta sẽ thu đợc hệ gồm 2n phơng trình vi phân cấp 1:
.
y
1
=y
2
;

.
y
2
=f
1
(y
1
,y
2
, ,y
2n
,t);
.
y
3
=y
4
;
.
y
4
=f
2
(y
1
,y
2
, ,y
2n
,t);


Nguyễn Thành Long - Cơ Tin A-k43
9
Đồ án tốt nghiệp
.
y
2n-1
=y
2n
;
.
y
2n
=f
n
(y
1
,y
2
, ,y
2n
,t);
Với các điều kiện đầu:
y
1
(0), ,y
2n
(0).
Sử dụng ngôn ngữ C ta viết đợc chơng trình ODE_RK4 giải PTVP chuyển động
của cơ hệ(Hệ PTVP thờng),trong đó bao gồm hàm Rungk_4 thể hiện thuật toán

của phơng pháp Runge-Kutta cấp 4, khi sử dụng môdun này phải gọi tới hàm
Hecohoc() trong đó đa vào các PTVP của cơ hệ cần giải, kết quả nghiệm của hệ
PTVP đợc đa ra màn hình,đa ra dới dạng file và dạngđồ thị biểu diễn các tập
nghiệm của hệ PTVP .Khi cần giải hệ PTVP nào ta đa hệ đó vào hàm định nghĩa
hệ PTVP. Để kiểm tra tính chính xác của chơng trình, ta sử dụng phần mềm
Matlab và phần mềm DAESOL để đối chiếu, việc sử dụng Matlab và DAESOL
giải hệ PTVP đợc trình bày cụ thể ở phần dới.
3.Giải hệ phơng trình vi phân đại số .
Trong cơ học, khi thiết lập PTVP chuyển động của cơ hệ nếu sử dụng phơng trình
Lagrange dạng nhân tử ta thờng gặp dạng sau :
dt
d














.
q
i
T

-
q
i
T


=Q
i
-

=
s
j 1

j
q
f
i
j



(4)
i=1,2, ,p
f
j
(q
1
,q
2

, ,q
p
)=0 (3)
n+s=p
Với

j
là các nhân tử Largange.
s :Các phơng trình liên kết.
p :Số toạ độ suy rộng d.
n:Số bậc tự do.
Một hệ gồm phơng trình liên kết (3) và PTVP (4) có thể coi là một hệ cứng .
Có thể giải bài toán này theo 3 hớng:
Nguyễn Thành Long - Cơ Tin A-k43
10
Đồ án tốt nghiệp
Phơng án thứ nhất: đạo hàm 2 lần các phơng trình liên kết (3) để thu đợc
các gia tốc

q
k
,k=1,2, ,p trong các ph ơng trình đó :

=
p
k
f
1
j


,k


q
k
=-

=
p
k 1

=
p
l
f
1
j,kl

.
q

j

.
q
l
j=1,2, ,s (5)
Kết hợp với (4) ta có hệ (p+s) phơng trình đại số cho (p+s) ẩn số là

q

k


j
với k=1,2, ,p và j=1,2, s.Với các giá trị

j
từ hệ (4) và (5) ta sử dụng ph-
ơng pháp tích phân số để tìm q
k
,k=1,2, ,p từ ph ơng trình (4).Với mỗi tập
hợp các giá trị (t,q
1
,q
2
, ,q
n
,
.
q
1
,
.
q
2
, ,
.
q
n
) khác nhau ta lại có các giá trị


1
,
,

s
khác nhau để thay vào phơng trình (4).
Phơng án thứ 2 : sử dụng các phơng pháp trực tiếp giải hệ phơng trình vi
phân - đại số.Các phơng pháp này đang đợc các nhà toán học nghiên cứu kỹ
trong mấy năm gần đây. Đối với các hệ cơ học qua tính toán thử nghiệm có
thể thấy sơ đồ Runge-Kutta dạng ẩn (implicit) cho các kết quả tốt.
Phơng án thứ 3 : áp dụng các thuật toán của Gear cho các hệ cứng. Vì
thực tế các hệ phơng trình vi phân - đại số với sự xuất hiện của các phơng
trình đại số, có thể coi là các hệ cứng. Các thuật giải này đã đợc kiểm
nghiệm tốt cho các hệ cơ học.
Việc giải hệ PTVP đại số đợc thực hiện bởi phần mềm Matlab và phần mềm
DAESOL (đợc trình bày cụ thể ở dới).
II.Giải phơng trình vi phân chuyển động bằng các công
cụ phần mềm.
1.Sử dụng các hàm th viện của Matlab giải PTVP chuyển động.
Matlab là chơng trình phần mềm trợ giúp cho việc tính toán và hiển thị.Các lệnh
của Matlab rất mạnh và hiệu quả, nó cho phép giải các loại hình bài toán khác
nhau và đặc biệt hữu dụng cho các hệ phơng trình tuyến tính hay các bài toán ma
trận. Ngoài ra, Matlab có thể tích hợp với một vài ngôn ngữ quen thuộc của ngời sử
dụng nh C,C++,Visual C++,Fortran
Việc giải PTVP hay các hệ PTVP trong Matlab đợc thực hiện bởi các hàm th viện
nh : ode45, ode23, ode113, ode15s, ode23s, ode23t,ode23tb .
Nguyễn Thành Long - Cơ Tin A-k43
11
Đồ án tốt nghiệp

1.1 Tổng quan về các công cụ giải phơng trình vi phân thờng (ODE) có điều
kiện đầu của Matlab.
a.Cú pháp.
[T,Y] = solver(F,tspan,y0)
[T,Y] = solver(F,tspan,y0,options)
[T,Y] = solver(F,tspan,y0,options,p1,p2 )
[T,Y,TE,YE,IE] = solver(F,tspan,y0,options)
trong đó solver là ode45, ode23, ode113, ode15s, ode23s, ode23t, hoặc ode23tb.
b. Đối số.
F Tên của tệp tin ODE, đó là một hàm của t và y, trả về một véctơ cột. Tất
cả các công cụ giải phơng trình vi phân thờng (solver gọi tắt là công
cụ giải) đều có thể giải đợc hệ phơng trình có dạng y = f(t, y), hoặc khi
có ma trận khối lợng M(t, y).y = f(t, y). ode23s chỉ giải đợc những hệ
phơng trình có M = const. ode15s và ode23t có thể giải đợc các bài toán
với M suy biến, phơng trinh vi phân đại số.
Tspan Véctơ xác định khoảng tích phân [t0 tfinal]. Để thu đợc nghiệm tại các
thời điểm xác định (có thứ tự tăng dần hoặc giảm dần theo thời gian), sử
dụng véctơ tspan = [t0, t1, , tfinal].
Y0 Véctơ xác định các điều kiện ban đầu.
Options Đối số tích phân tuỳ chọn đợc thiết lập bằng cách dùng hàm odeset.
P1,p2 Các tham số dùng để truyền cho hàm F.
T,Y Ma trận kết quả Y có số hàng bằng kích thớc véctơ T, mỗi hàng của Y t-
ơng ứng với một thời điểm cho trong véctơ T.
c. Mô tả
[T,Y] = solver(F, tspan,y0) với tspan = [t0 tfinal], tích phân hệ PTVP
y = f(t, y) từ thời điểm t0 đến tfinal với điều kiện đầu y0. F là một chuỗi ký tự
biểu thị tên một tệp tin ODE. Hàm F(t, y) phải trả về một véctơ cột. Mỗi hàng của
nghiệm thu đợc tơng ứng với một thời điểm cho trong véctơ T.
[T,Y] = solver(F,tspan,y0,options), có công dụng giải bài toán nh trên nhng các
tham số tích phân mặc định đợc thay bằng các giá trị thuộc tính trong options, một

đối số đợc tạo bởi hàm odeset. Các thuộc tính thờng đợc sử dụng bao gồm sai số t-
Nguyễn Thành Long - Cơ Tin A-k43
12
Đồ án tốt nghiệp
ơng đối RelTol (mặc định là 1e-3) và một véctơ sai số tuyệt đối AbsTol (mặc định
các phần tử đều là 1e-6).
[T,Y] = solver(F,tspan,y0,options,p1,p2 ) cũng có công dụng giải bài toán nh
trên, các tham số p1,p2 đợc dùng để truyền cho M-file F khi nó đợc gọi. Truyền
vào giá trị options = [] nếu không có tuỳ chọn nào đợc thiết lập.
[T,Y,TE,YE,IE] = solver(F,tspan,y0,options) với thuộc tính Events trong
options đợc đặt là on, cũng có công dụng giải bài toán nh trên, đồng thời tìm các
điểm không của các hàm của (t, y), gọi là các hàm sự kiện, đợc định nghĩa trong
tệp tin ODE. Tệp này phải đợc viết sao cho F(t, y, events) trả về các thông tin
thích hợp nhất định. Cụ thể là viết một hàm:
[value, isterminal, direction] = EVENTS(t, y)
Với hàm sự kiện thứ i:
value(i) là giá trị của hàm.
isterminal(i) = 1 nếu phép tích phân dừng tại một điểm không của hàm sự
kiện này và 0 trong các trờng hợp còn lại.
direction(i) = 0 nếu tất cả các điểm không đều đợc tính (mặc định), +1 nếu
chỉ tính các điểm không mà qua đó hàm sự kiện tăng, và -1 nếu chỉ tính các
điểm không mà qua đó hàm sự kiện giảm.
Tơng ứng với các đầu vào, các giá trị trả về trong TE, YE, và IE lần lợt là thời điểm
mà tại đó một sự kiện xảy ra, nghiệm tại thời điểm này, và chỉ số i của hàm sự kiện
bị triệt tiêu.
Nếu ta gán một hàm đầu ra cho giá trị của thuộc tính OutputFcn, công cụ giải sẽ
gọi nó để tính toán ra kết quả sau mỗi bớc thời gian. Bốn hàm đầu ra đợc
MATLAB cung cấp là: odeplot, odephas2, odephas3, odeprint. Khi đợc gọi mà
không có các đối số đầu ra, các công cụ gọi hàm đầu ra mặc định odeplot để vẽ
nghiệm đã tính đợc. odephas2 và odephas3 tơng ứng dùng để vẽ mặt phẳng pha 2

chiều và 3 chiều. odeprint hiển thị các thành phần nghiệm ra màn hình. Mặc định,
tất cả các thành phần của nghiệm đợc truyền cho hàm đầu ra, song bạn có thể chỉ
truyền một số thành phần nhất định bằng cách cung cấp một véctơ các chỉ số cho
thuộc tính OutputSel. Chẳng hạn, nếu bạn gọi công cụ giải không có đối số đầu ra
và đặt giá trị của OutputSel là [1 3], công cụ sẽ vẽ các thành phần 1 và 3 của
nghiệm đã tính.
Nguyễn Thành Long - Cơ Tin A-k43
13
Đồ án tốt nghiệp
Với các công cụ cứng ode15s, ode23s, ode23t, và ode23tb, ma trận Jacobian df/dy
tạo nên sự tin cậy và hiệu quả trong tính toán. Dùng hàm odeset đặt thuộc tính
Jacobian cho @FJAC với hàm FJAC(t,y) trả về ma trận Jacobian df/dy hoặc cho
ma trận df/dy nếu Jacobian là hằng số. Nếu thuộc tính Jacobian không đợc thiết lập
(mặc định), df/dy đợc xấp xỉ bằng sai phân hữu hạn. Đặt thuộc tính Vectorized là
on nếu hàm ODE đợc viết sao cho F(t,[y1,y2, ]) trả về [F(t,y1), F(t,y2), ]. Nếu
df/dy là một ma trận tha, đặt cho thuộc tính JPattern mẫu tha của df/dy, nghĩa là,
một ma trận tha S với S(i,j) = 1 nếu thành phần thứ i của f(t, y) phụ thuộc thành
phần thứ j của y, và 0 trong trờng hợp ngợc lại.
Các công cụ giải PTVP thờng đều có thể giải đợc bài toán dạng
M(t, y).y = f(t, y) với ma trận khối lợng M phụ thuộc cả thời gian và trạng
thái. (Công cụ ode23s chỉ có thể giải đợc các phơng trình với ma trận khối lợng
hằng.) Nếu bài toán có ma trận khối lợng, tạo một hàm M = MASS(t,y), trả về giá
trị của ma trận khối lợng. Với MATLAB 5.3, dùng hàm odeset đặt thuộc tính Mass
là M, M(t) hoặc M(t,y) nếu tơng ứng, tệp ODE F.m đợc viết sao cho
F(t,y,mass) trả về một ma trận khối lợng hằng, phụ thuộc thời gian, hoặc phụ
thuộc cả thời gian và trạng thái của cơ hệ. Giá trị mặc định của Mass là none.
Còn với MATLAB 6.0, đặt thuộc tính Mass là @MASS. Nếu ma trận khối lợng là
hằng, nó đợc sử dụng nh một giá trị của thuộc tính Mass. Bài toán với ma trận khối
lợng phụ thuộc trạng thái thì khó hơn:
Nếu ma trận khối lợng không phụ thuộc vào biến trạng thái và hàm MASS

đợc gọi với một đối số vào, t, đặt thuộc tính MstateDependence là none.
Nếu ma trận khối lợng phụ thuộc ít, đặt MstateDependence là weak (mặc
định) và còn lại, đặt là strong. Trong cả hai trờng hợp, hàm MASS đều đợc
gọi với hai đối (t,y).
Nếu hệ gồm rất nhiều PTVP, việc khai thác tính tha của các ma trận có ý nghĩa
quan trọng:
Trả về một ma trận tha M(t, y).
Cung cấp mẫu tha của df/dy khi sử dụng thuộc tính JPattern hoặc một ma
trận tha df/dy khi dùng thuộc tính Jacobian.
Nguyễn Thành Long - Cơ Tin A-k43
14
Đồ án tốt nghiệp
Với M(t, y) phụ thuộc nhiều vào trạng thái, đặt cho MvPattern một ma trận
tha S với S(i,j) = 1 nếu với mọi k, thành phần (i,k) của M(t, y) phụ thuộc
thành phần j của y, và 0 trong trờng hợp ngợc lại.
Nếu ma trận khối lợng M suy biến thì M(t, y). y = f(t, y) là một phơng trình vi
phân đại số (DAE). Các DAE chỉ có nghiệm khi y
0
thích hợp, đó là, nếu có một
véctơ yp
0
thoả mãn M(t
0
, y
0
) . yp
0
= f(t
0
, y

0
). Khi có ma trận khối lợng, bạn có thể
dùng hàm odeset đặt thuộc tính MassSingular là yes, no, hoặc maybe. Giá trị
mặc định maybekhiến công cụ giải kiểm tra xem bài toán có phải là DAE hay
không. Ta có thể cung cấp giá trị yp0 cho thuộc tính InitialSlope. Măc định là
véctơ không. Nếu bài toán là một DAE, mà y0 và yp0 không phù hợp, công cụ giải
coi chúng nh các xấp xỉ, thử tìm các giá trị thích hợp gần nhất, rồi giải bài toán.
Khi giải các DAE, sẽ rất thuận lợi khi M là một ma trận đờng chéo .
Công cụ giải Loại bài toán Cấp chính xác Sử dụng
Ode45 Không cứng Trung bình (4, 5) Hầu hết, bạn nên thử công cụ
này đầu tiên.
Ode23 Không cứng Thấp (2, 3) Nếu dùng sai số thô hoặc giải
các bài toán cứng vừa phải.
Ode113 Không cứng Thấp đến cao Nếu dùng sai số tinh .
Ode15s Cứng Thấp đến trung
bình
Nếu ode45 bị chậm do bài toán
cứng, hoặc có ma trận khối lợng.
Ode23s Cứng Thấp Nếu giải hệ cứng với sai số thô
và ma trận khối lợng là hằng số.
Ode23t Cứngvừa phải Thấp Nếu bài toán chỉ cứng vừa phải
Ode23tb Cứng Thấp Nếu giải hệ cứng với sai số thô
hoặc có ma trận khối lợng.
Trong tệp tin ODE có thể xác định tspan, y0, và options. Nếu tspan hoặc y0
rỗng thì công cụ giải gọi tệp ODE
[tspan, y0, options] = F([], [], init)
Nguyễn Thành Long - Cơ Tin A-k43
15
Đồ án tốt nghiệp
để thu đợc các giá trị không đợc cung cấp trong danh sách đối của công cụ giải.

Các đối rỗng ở vị trí cuối cùng của lời gọi có thể bỏ qua. Điều này cho phép bạn
gọi các công cụ giải với các cú pháp khác nhau nh:
[T, Y] = solver(F)
[T, Y] = solver(F, [], y0)
[T, Y] = solver(F, tspan, [], options)
[T, Y] = solver(F, [], [], options)
Tham số tích phân options có thể đợc xác định cả trong tệp tin ODE và trên dòng
lệnh. Nếu một tuỳ chọn đợc xác định ở cả hai nơi, giá trị cho từ dòng lệnh đợc u
tiên.
d. Các tuỳ chọn
Các công cụ giải khác nhau chấp nhận các tham số khác nhau trong danh sách các
tuỳ chọn.
Tham số
ode45 ode23 ode113 ode15s ode23s Ode23t ode23tb
RelTol,AbsTol,
NormControl








Nguyễn Thành Long - Cơ Tin A-k43
16
Đồ án tốt nghiệp
OutputFcn,OutputSel
, Refine, Stats








Events







MaxStep, InitialStep







Jacobian, JPattern,
Vectorized





Mass

MstateDependence
MvPattern
MassSingular





























InitialSlope




MaxOrder, BDF


Trong đó:

: công cụ giải chấp nhận các tham số trong danh sách các tuỳ chọn.
: công cụ giải không chấp nhận các tham số trong danh sách các tuỳ chọn.
e. Thuật toán
ode45 dựa trên công thức Runge-Kutta (4, 5) dạng hiển. Đây là phơng pháp một
nút - để tính y(t
n
), chỉ cần một nút tính ở bớc ngay trớc, y(t
n-1
). Nói chung, ode45 là
hàm tốt nhất để áp dụng thử lần đầu tiên cho hầu hết các bài toán.
ode23 là một triển khai của sơ đồ Runge-Kutta (2, 3) dạng hiển. Nó có thể hiệu
quả hơn ode45 ở sai số thô và trong các hệ cứng vừa phải. Cũng nh ode45, ode23 là
công cụ giải một nút.
ode113 là công cụ giải Adam-BashForth-Moulton PECE cấp thay đổi. Nó có thể
hiệu quả hơn ode45 ở sai số tinh và khi hàm odefile định giá phức tạp. ode113 là
công cụ nhiều nút - thờng cần một vài nút trớc để tính xấp xỉ ở bớc hiện tại.
Các thuật toán trên dùng để giải các hệ không cứng. Nếu thấy chúng hình nh quá
chậm, hãy thử dùng một trong các công cụ cứng dới đây.
ode15s là công cụ cứng cấp thay đổi, dựa trên các công thức vi phân số, NDFs.

Thông thờng, dùng công thức sai phân lùi, BDFs (còn gọi là phơng pháp Gear), th-
Nguyễn Thành Long - Cơ Tin A-k43
17
Đồ án tốt nghiệp
ờng kém hiệu quả hơn. Nh ode113, ode15s là công cụ nhiều nút. Nếu ta nghi ngờ
bài toán là cứng hoặc ode45 không đáp ứng đợc hay hiệu quả rất kém, hoặc khi
giải phơng trình vi phân đại số, hãy thử ode15s.
ode23s dựa trên công thức Rosenbrock cấp 2 sửa đổi. Vì là công cụ một nút, nó có
thể hiệu quả hơn ode15s ở sai số thô. Nó có thể giải một số loại bài toán cứng mà
ode 15s giải không hiệu quả.
Ngoài ra còn ode23t và ode23tb.
f. Hàm odeset
Tạo hoặc thay đổi cấu trúc tùy chọn cho đầu vào của công cụ giải PTVP thờng.
g. Cú pháp
options = odeset(name1,value1,name2,value2, )
options = odeset(oldopts,name1,value1, )
options = odeset(oldopts,newopts)
h. Mô tả
options = odeset(name1,value1,name2,value2, ) tạo ra một cấu trúc tuỳ chọn
cho phép tích phân, trong đó các thuộc tính đợc đặt tên có giá trị xác định. Mọi
thuộc tính không đợc xác định đều có giá trị mặc định.
options = odeset(oldopts,name1,value1, ) thay đổi một cấu trúc tùy chọn đã có
oldopts.
options = odeset(oldopts,newopts) thay đổi một cấu trúc tuỳ chọn đã có oldopts
bằng cách ghép nó với một cấu trúc tùy chọn mới newopts. Mọi tùy chọn mới khác
rỗng sẽ đè lên tùy chọn tơng ứng trong oldopts.
odeset không đối số vào sẽ hiển thị tất cả tên các thuộc tính có thể có và các giá trị
mặc định.
i. Khuôn mẫu một tệp tin ODE (odefile).
(odefile) Định nghĩa một bài toán PTVP cho các công cụ giải.

Nguyễn Thành Long - Cơ Tin A-k43
18
Đồ án tốt nghiệp
odefile không phải là một lệnh hay một hàm cụ thể mà đó là một khuôn mẫu của
một M-file định nghĩa hệ phơng trình cần giải. Việc định nghĩa này là bớc đầu tiên
khi sử dụng bất kỳ một công cụ giải nào của Matlab. Không bắt buộc phải là
odefile, bạn có thể dặt tên gì tuỳ thích cho M-file của mình.
Bạn có thể dùng M-file odefile để định nghĩa hệ phơng trình ở một trong các
dạng sau:
y = f(t, y) hoặc M(t, y). y = f(t, y).
trong đó
t là một biến độc lập, đặc trng cho yếu tố thời gian.
y là một véctơ của các biến độc lập.
f là một hàm của t và y, trả về véctơ cột có cùng cỡ với y.
M(t, y) là ma trận khối lợng phụ thuộc cả thời gian và trạng thái.
Tệp ODE phải nhận tối thiểu hai đối t và y cho dù nó không sử dụng đến chúng.
Mặc nhiên tệp ODE phải trả về một véctơ cột cùng cỡ với y.
Tất cả các công cụ giải ODE đều có thể giải hệ PTVP dạng M(t, y). y = f(t, y),
trừ ode23s chỉ có thể giải đợc bài toán với ma trận khối lợng hằng số. ode15s và
ode23t có thể giải các DAE dạng M(t). y = f(t, y).
Ngoài việc định nghĩa hệ PTVP, bạn còn có thể xác định điều kiện đầu cho bài
toán trong odefile, để bỏ qua đợc sự cần thiết phải cung cấp khoảng thời gian và
các giá trị đầu trên dòng lệnh.
function varargout = odefile(t,y,flag,p1,p2)
switch flag
case % Return dy/dt = f(t,y).
varargout{1} = f(t,y,p1,p2);
case init % Return default [tspan,y0,options].
[varargout{1:3}] = init(p1,p2);
case jacobian % Return Jacobian matrix df/dy.

varargout{1} = jacobian(t,y,p1,p2);
case jpattern % Return sparsity pattern matrix S.
varargout{1} = jpattern(t,y,p1,p2);
case mass % Return mass matrix.
Nguyễn Thành Long - Cơ Tin A-k43
19
§å ¸n tèt nghiÖp
varargout{1} = mass(t,y,p1,p2);
case ’events’ % Return [value,isterminal,direction].
[varargout{1:3}] = events(t,y,p1,p2);
otherwise
error([’Unknown flag ’’’ flag ’’’.’]);
end
%
function dydt = f(t,y,p1,p2)
dydt = < Insert a function of t and/or y, p1, and p2 here. >
%
function [tspan,y0,options] = init(p1,p2)
tspan = < Insert tspan here. >;
y0 = < Insert y0 here. >;
options = < Insert options = odeset( ) or [] here. >;
%
function dfdy = jacobian(t,y,p1,p2)
dfdy = < Insert Jacobian matrix here. >;
%
function S = jpattern(t,y,p1,p2)
S = < Insert Jacobian matrix sparsity pattern here. >;
%
function M = mass(t,y,p1,p2)
M = < Insert mass matrix here. >;

%
function [value,isterminal,direction] = events(t,y,p1,p2)
value = < Insert event function vector here. >
isterminal = < Insert logical ISTERMINAL vector here. >;
NguyÔn Thµnh Long - C¬ Tin A-k43
20
Đồ án tốt nghiệp
direction = < Insert DIRECTION vector here. >;
k. Lu ý.
1. Đối số tuỳ chọn flag xác định loại đầu ra mà tệp ODE trả về (ma trận khối l-
ợng, Jacobian, v.v).
2. Công cụ giải lặp đi lặp lại việc gọi tệp ODE để định giá hệ PTVP tại các thời
điểm khác nhau. Việc này cần có đủ thông tin - ta phải định nghĩa hệ PTVP th-
ờng cần giải.
3. Câu lệnh switch xác định kiểu đầu ra yêu cầu, từ đó tệp ODE có thể cung cấp
thông tin thích hợp cho công cụ giải.
4. Trong trờng hợp điều kiện đầu mặc định ( init ), tệp ODE trả về các thông tin
cơ bản (khoảng thời gian tspan, điều kiện đầu y0, tuỳ chọn options) cho các
công cụ giải. Nếu ta bỏ qua trờng hợp này, ta phải cung cấp tất cả các thông tin
cơ bản trên dòng lệnh.
5. Trong trờng hợp jacobian, tệp ODE trả về một ma trận Jacobian cho công cụ
giải. Ta chỉ cần viết cho trờng hợp này khi ta muốn hoàn thiện khả năng của
các công cụ cứng ode15s, ode23s, ode23t, và ode23tb.
6. Trong trờng hợp jpattern, tệp ODE trả về mẫu tha của ma trận Jacobian cho
công cụ giải. Ta chỉ cần viết cho trờng hợp này khi ta muốn tạo các ma trận
Jacobian tha cho các công cụ giải.
7. Trong trờng hợp mass, tệp ODE trả về ma trận khối lợng cho công cụ giải. Ta
chỉ cần viết cho trờng hợp này khi ta muốn giải hệ có dạng M(t, y). y = f(t, y).
8. Trong trờng hợp events, tệp ODE trả về cho công cụ giải các giá trị cần cho
việc đánh dấu sự kiện. Khi thuộc tính Events đợc đặt là on, Công cụ giải kiểm

tra mọi phần tử của véctơ sự kiện để chuyển tới, từ, hoặc qua giá trị không. Nếu
phần tử tơng ứng của véctơ isterminal đợc đặt là 1, quá trình tích phân sẽ dừng
khi gặp một điểm không. Các phần tử của véctơ direction là -1, 1, hoặc 0.
9. Nếu ta truyền vào flag không có trong các trờng hợp trên sẽ gây ra lỗi.
1.2 Các thuộc tính (MATLAB 6.0).
Các thuộc tính có thể sử dụng phụ thuộc vào công cụ giải PTVP đợc dùng. Có một
số loại thuộc tính nh sau:
Sai số
Nguyễn Thành Long - Cơ Tin A-k43
21
Đồ án tốt nghiệp
Đầu ra của công cụ giải
Ma trận Jacobian
Đánh dấu sự kiện
Ma trận khối lợng và hệ PTVP đại số (DAEs)
Độ lớn bớc tính
ode15s
a) Sai số.
Thuộc tính Giá trị Mô tả
RelTol Vô hớng d-
ơng {1e-3}
Sai số tơng đối áp dụng cho tất cả các thành phần của
véctơ nghiệm y. Nó là tiêu chuẩn đánh giá sai số tơng
đối cho mỗi thành phần nghiệm. Nói rõ hơn, nó điều
khiển số chữ số có nghĩa ở tất cả các thành phần
nghiệm trừ khi nó nhỏ hơn ngỡng AbsTol(i). Sai số ở
Nguyễn Thành Long - Cơ Tin A-k43
22
Đồ án tốt nghiệp
mỗi bớc tích phân thỏa mãn:

e(i)

max{ RelTol*abs(y(i)), AbsTol(i) }.
Mặc định, 1e-3, tơng ứng với độ chính xác 0.1%.
AbsTol Một vô h-
ớng hoặc
véctơ dơng
{1e-6}
Sai số tuyệt đối áp dụng cho các thành phần riêng biệt
của véctơ nghiệm. AbsTol(i) là ngỡng dới của thành
phần nghiệm thứ i. Sai số tuyệt đối xác định độ chính
xác khi nghiệm tiến tới không. Thậm chí nếu thành
phần nghiệm y(i) quá bé, bạn có thể phải xác định
AbsTol(i) đủ nhỏ để nhận đợc số chữ số có nghĩa cần
thiết của y(i), vì thế có thể tính đợc các thành phần
nghiệm mà bạn quan tâm đến một cách chính xác hơn.
Nếu AbsTol là một véctơ, nó phải cùng cỡ với véctơ
nghiệm y. Nếu AbsTol là một vô hớng, giá trị đó đợc áp
dụng cho tất cả các thành phần của y.
NormControl on|{off} Điều khiển sai số tơng đối để chuẩn hoá nghiệm. Đặt
thuộc tính này là on để yêu cầu công cụ giải điều
chỉnh sai số trong mỗi bớc tích phân
norm(e)

max{ RelTol*norm(y), AbsTol }.
b) Đầu ra của công cụ giải.
Thuộc tính Giá trị Mô tả
OutputFcn Hàm số
Cài đặt hàm đầu ra. Các công cụ giải PTVP cung cấp các
hàm mẫu, bạn có thể sử dụng hoặc sửa đổi lại: {odeplot},

odephas2, odephas3, odeprint.
Ví dụ,
options = odeset(OutputFcn,@myfun)
đặt cho thuộc tính OutputFcn một hàm ra, myfun, để
truyền cho một công cụ giải PTVP.
Hàm ra phải có dạng:
Nguyễn Thành Long - Cơ Tin A-k43
23
Đồ án tốt nghiệp
status = myfun(t,y,flag)
với flag là init, {none}, hoặc done.
OutputSel Véctơ
chỉ số
Chỉ ra các thành phần nào của véctơ nghiệm mà công cụ
giải sẽ truyền cho hàm ra. Ví dụ, nếu bạn dùng hàm ra
odeplot, nhng chỉ muốn vẽ thành phần nghiệm thứ nhất và
thứ ba, viết lệnh sau:
options =
odeset('OutputFcn',@odeplot,OutputSel',[1 3]);
Refine Số
nguyên
dơng
Làm trơn đầu ra. Tăng số nút đầu ra bằng hệ số Refine.
Nếu Refine là 1, công cụ giải chỉ trả về nghiệm tại các
điểm cuối mỗi bớc thời gian. Nếu Refine là n > 1, công cụ
giải chia mỗi bớc thời gian thành n khoảng nhỏ hơn, và trả
về nghiệm tại mỗi thời điểm. Giá trị mặc định là 1 ở tất cả
các công cụ giải, trừ ở ode45 nó là 4. Refine không áp
dụng khi length(tspan) > 2.
Stats on|

{off}
Có hay không hiển thị thống kê về quá trình tính toán của
công cụ. Mặc định, Stats là off. Nếu là on, sau khi giải bài
toán, công cụ sẽ cho hiển thị:
Số bớc thành công
Số lần thử thất bại
Số lần hàm ODE đợc gọi để định giá f(t, y)
Số lần ma trận đạo hàm riêng df/dy đợc thiết lập
Số lần phân tích LU
Số nghiệm của hệ tuyến tính
c) Ma trận Jacobian.
Các công cụ giải cứng thờng thực hiện nhanh hơn nếu ta cung cấp thêm thông tin
về ma trận Jacobian df/dy, một ma trận các đạo hàm riêng của hàm cho trong các
PTVP.
df/dy = [ df
1
/dy
1
df
1
/dy
2

df
2
/dy
1
df
2
/dy

2
];
Nguyễn Thành Long - Cơ Tin A-k43
24
Đồ án tốt nghiệp
Thuộc tính Giá trị Mô tả
Jacobian Hàm số |
Ma trận
Hằng
Một ma trận hằng hoặc một hàm định giá Jacobian.
Việc cung cấp Jacobian dạng giải tích thờng tăng tốc độ
tính và độ tin cậy của nghiệm các bài toán cứng. Đặt
thuộc tính này cho hàm FJac, với FJac(t,y) tính df/dy,
hoặc cho giá trị hằng của df/dy.
JPattern Ma trận
tha của
{0,1}
Vectorized on|{off}
d) Đánh dấu sự kiện.
Thuộc tính Giá trị Mô tả
Events Hàm số Đánh dấu các điểm đặc biệt. Đặt cho thuộc tính này là
@Events, trong đó Events là một hàm sự kiện.
e) Ma trận khối lợng và hệ phơng trình vi phân đại số (DAEs).
Các công cụ giải PTVP đều có thể giải đợc hệ dạng M(t, y). y = f(t, y) với ma trận
khối lợng M(t, y) thờng là tha.
Khi M(t, y) không suy biến, phơng trình trên tơng đơng với y = M
-1
. f(t, y) và
PTVP có một nghiệm với mọi giá trị đầu y
0

tại t
0
.
Khi M(t, y) suy biến thì M(t, y). y = f(t, y) là một DAE và nó chỉ có nghiệm
khi y
0
thích hợp, đó là, tồn tại hệ số góc ban đầu yp
0
sao cho: M(t
0
, y
0
). yp
0
= f(t
0
,
y
0
).
Dới đây là bảng thuộc tính ma trận khối lợng và DAEs:
Thuộc tính
Giá trị
Mô tả
Mass Ma trận hằng
hoặc hàm số
Ma trận hằng số hoặc một hàm định giá ma
trận khối lợng M(t, y). Với bài toán M. y =
f(t, y), đặt cho thuộc tính này giá trị của một
ma trận hằng số M. Với bài toán M(t, y). y =

f(t, y), gán cho thuộc tính này một hàm Mfun,
Nguyễn Thành Long - Cơ Tin A-k43
25

×