Professional Documents
Culture Documents
btl gt1 thầy Phiệt
btl gt1 thầy Phiệt
2
Đại học Bách Khoa
- Khoa học và công nghệ có những tiến bộ vượt bậc, đến gần hơn
nữa với con người, các bài toán kĩ thuật trở nên phức tạp và đòi
hỏi thêm thời gian cho việc làm sáng tỏ chúng, trong đó các ứng dụng máy
tính thông minh ngày một nhiều lên nhằm xử lý các bài toán này.
MATLAB là một môi trường tính toán số được lập trình để so sánh số với
ma trận, vẽ đồ thị hàm số hay biểu đồ thông tin, áp dụng thuật toán, thiết
kế lại giao diện người dùng và kết nối với những phần mềm máy
tính dựa trên nhiều ngôn ngữ lập trình khác.
- Với thư viê ̣n Toolbox, MATLAB cho phép mô phỏng tính toán, thực
nghiê ̣m nhiề u mô hình trong thực tế và kỹ thuâ ̣t.
- Với hơn 40 năm hình thành và phát triể n, ngày nay với thiế t kế sử du ̣ng
tương đối đơn giản và phổ thông, MATLAB là công cu ̣ tính toán hữu hiê ̣u
để giải quyế t các bài toán kỹ thuâ ̣t.Qua đó giúp các sinh viên có thêm các
kĩ năng sử dụng chương trình để phục vụ cho mục đích học tập cũng như
nghiên cứu.
3
Đại học Bách Khoa
4
Đại học Bách Khoa
PHẦN I
- Giới thiệu đề tài:
Bài toán 1: Cho 1 hàm tham số.
o Viết code tìm giao điểm của đường cong và các tiếp tuyến tại điểm
đó.
o Viết code tìm cực trị của đường cong.
o Viết code vẽ lại hàm số đã cho.
Bài toán 2: Để đo được khoảng cách từ trái đất đến mặt trăng. Ta đã
đặt gương phản xạ trên bề mặt mặt trăng và chiếu chùm tia laze vào nó
để xem mất bao lâu để thực hiện việc vừa chiếu tới đó vừa quay trở lại.
o Hãy viết code để tính toán thời gian di chuyển khứ hồi của tia laze.
Bài toán 3: Cho phương trình về sự chênh lệch nhiệt độ giữa chất lỏng
và căn phòng.
o Tại sao lại có dấu trừ trong phương trình?
o Viết code sử dụng phương pháp Euler để xác định nhiệt độ của Q sau
20 phút. Vẽ bảng với các kết quả đã được xác định với giá trị nhỏ
dần (làm tròn đến số thập phân thứ 2).
o Viết code để tính thời gian để nhiệt độ Q giảm xuống 30° C. Sử dụng
DO- WHILE loop để vẽ bảng với các giá trị đã được xác định (làm
tròn đến số thập phân thứ 2).
5
Đại học Bách Khoa
Phần Ⅱ
- Nội dung báo cáo:
Bài toán 1: phương trình tham số
x(t) = 2t2 +4t − 3
y(t) = t3 − 4t +2
Phần code giải quyết bài toán:
clc
close all
% ve do thi
t = -5:0.01:5;
xt = 2*t.^2 - 4*t - 3;
yt = t.^3 - 4*t + 2;
plot(xt, yt)
grid on
xlabel('x')
ylabel('y')
syms t
xt = 2*t^2 - 4*t - 3;
yt = t^3 - 4*t + 2;
o Tìm giao điểm của đường cong và tiếp tuyến tại điểm đó.
6
Đại học Bách Khoa
Ta sẽ tìm giao điểm của đường cong tham số tại với hai trục tọa
độ Ox và Oy. Giao điểm của đường cong tham số với trục Ox
là những điểm làm cho y(t) = 0.
Giao điểm của đường cong tham số với trục Oy là những điểm
làm cho x(t) = 0.
Hình dưới đây là thuật toán đi tìm các giao điểm đó:
Cực trị của các đường cong chính là các điểm mà có đạo hàm của
y′(t) bằng 0.
Giải phương trình y′(t) = 0, ta sẽ thu được các giá trị t. Sau đó, ta sẽ
thay các giá trị t vừa tìm được vào hàm x(t) và y(t), ta sẽ thu được
tọa độ (x,y) của các điểm cực trị mà ở đó phương trình tham số đạt
giá trị lớn nhất hoặc nhỏ nhất địa phương (tương đương với đạo
hàm y(t)′ = 0).
Code của phần này được biểu diễn trong Hình 3 và thu được kết
quả là:
9
Đại học Bách Khoa
𝑄′ = −𝑘(𝑄 − 20)
Với k là một hằng số dương, Q là nhiệt độ của chất lỏng và 20 là nhiệt
độ phòng.
F (x, y) tại một vài điểm (x, y) thì kết quả được gọi là direction field
(hoặc slope field (tiếng Việt là trường hướng/trường độ dốc. Các
đoạn thẳng này biểu thị hướng mà đường cong nghiệm đang hướng
đến, vì thế nên trường hướng giúp ta hình dung được hình dáng tổng
quan của các đường cong nghiệm. Ví dụ ta có bài toán:
𝑦 ′ = 𝑥 + 𝑦, 𝑦(0) = 1
Khi đó, trường hướng của bài toán trên là Hình 7. Ta minh họa
phương pháp Euler bằng bài toán giá trị ban đầu trên. Phương trình
vi phân cho ta biết rằng:
𝑦 ′ (0) = 0 + 1 = 1
Vì thế đường cong nghiệm của độ dốc bằng 1 tại điểm (0,1). Như
vậy, ta có thể xấp xỉ nghiệm gần điểm x = 0 bằng xấp xỉ tuyến
tính:
𝐿(𝑥 ) = 𝑥 + 1 = 𝑦 ′ (0) + 𝑦(0)
11
Đại học Bách Khoa
Nói cách khác, ta có thể sử dụng đường tiếp tuyến tại (0,1) làm xấp
xỉ thô cho đường cong nghiệm. Xem Hình (8) để thấy điều này.
Ý tưởng của phương pháp Euler là cải thiện sự xấp xỉ này bằng
cách chỉ tiến một khoảng cách nhỏ dọc theo đường tiếp tuyến trên
rồi sau đó thực hiện một sự điều chỉnh giữa chừng bằng cách thay
đổi hướng được biểu thị bởi trường có hướng. Hình 9(a) biểu diễn
điều gì sẽ xảy ra nếu ta bắt đầu dọc theo đường tiếp tuyến trên
nhưng dừng lại ở điểm x = 0.5. (Khoảng cách dịch chuyển theo
đường nằm ngang này được gọi là step size (kích thước bước
nhảy).
Vì L(0.5) = 1.5 nên ta có y(0.5) ≈ 1.5 và ta lấy (0.5,1.5) làm điểm
bắt đầu cho một đường tiếp tuyến mới. Phương trình vi phân ban
đầu cho ta biết rằng y′(0.5) = 0.5+1.5 = 2, vì thế nên ta sử dụng
hàm tuyến tính:
𝑦 = 𝑦 ′ (0,5)(𝑥 − 0,5) + 𝐿(0,5) = 2(𝑥 − 0,5) + 1,5
Hình 9: (a) Xấp xỉ Euler với bước nhảy 0,5.(b) Xấp xỉ Euler với bước
nhảy 0,25
Tổng quát, phương pháp Euler bắt đầu tại điểm được cho bởi giá
trị ban đầu và tiến triển theo hướng được biểu thị bởi trường có
hướng. Dừng lại sau một khoảng cách ngắn, nhìn vào độ dốc tại vị
trí mới và tiếp tục theo hướng đó. Tiếp tục dừng lại và thay đổi
hướng theo trường có hướng. Phương pháp Euler không cho ta
nghiệm chính xác của bài toán giá trị ban đầu, nó cho ta nghiệm
xấp xỉ. Nhưng bằng cách giảm kích thước bước nhảy (và vì thế
tăng số lần điều chỉnh hướng), ta sẽ thu được được các nghiệm xấp
xỉ gần hơn tới nghiệm chính xác. Ta có thể nhìn vào Hình 8,Hình
9(a), Hình 9(b) để thấy được điều đó.
Hình 10
13
Đại học Bách Khoa
Với bài toán giá trị ban đầu bậc nhất tổng quát:
𝑦 ′ = 𝐹 (𝑥, 𝑦), 𝑦(𝑥0 ) = 𝑦0
Mục đích của ta là đi tìm các giá trị xấp xỉ cho nghiệm tại các
khoảng cách đều được đánh số là:
𝑥𝑜 , 𝑥1 = 𝑥0 + ℎ′ 𝑥2 = 𝑥1 + ℎ′ ….
với h là kích thước của bước nhảy. Phương trình vi phân cho
chúng ta biết rằng độ dốc tại (x0, y0) là 𝑦 ′ = 𝐹(𝑥0 , 𝑦0 ) , nên Hình
(10) cho biết rằng giá trị xấp xỉ của nghiệm khi x = x1 là:
𝑦1 = 𝑦0 + ℎ𝐹(𝑥0 , 𝑦0 )
Tương tự:
y2 = y1 + hF (x1, y1)
Tổng quát:
𝑦𝑛 = 𝑦𝑛 −1 + ℎ𝐹 (𝑥𝑛 −1 , 𝑦𝑛 −1 ), 𝑥𝑛 = 𝑥𝑛 −1 + ℎ, 𝑛 = 1,2,3, …
Quay trở lại bài toán, ta có phương trình vi phân:
𝑄′ = −0,1(𝑄 − 20)℃/𝑝ℎú𝑡
Như vậy, với mỗi phút, nhiệt độ Q của nước sẽ giảm một lần. Như
vậy, sau 20 phút thì nhiệt độ Q sẽ giảm 20 lần. Giả sử nhiệt độ ban
đầu Q = 50◦C. Khi đó ta có công thức tính nhiệt độ Q tại thời điểm
t bằng công thức sau:
𝑄𝑡 = 𝑄𝑡 −1 + ℎ𝑄𝑡 − 1 = 𝑄𝑡 −1 − 0,1ℎ(𝑄𝑡 −1 − 20)
h = 1;
14
Đại học Bách Khoa
Q = 1:21;
Q(1) = 50;
for k=1:20
Q(k+1) = Q(k) - 0.1*h*(Q(k) - 20);
fprintf('Nhiet do Q sau t = %i (phut) la: %f\n', k,
round(Q(k+1), 2));
end
fprintf('\n\n\n')
Q = 50;
k = 0.1;
h = 1;
t = 1;
while Q > 30
Q(t+1) = Q(t) - k*h*(Q(t) - 20);
fprintf('Nhiet do Q sau t = %i (phut) la: %f\n', t,
round(Q(t+1), 2));
t = t + 1;
end
fprintf('\n\nVay thoi gian de Q giam con 30 do la: %i
(phut)\n', t-1);
Như vậy, từ công thức trên, ta có thuật toán sau, với Q là mảng lưu
các giá trị nghiệm xấp xỉ thu được sau mỗi vòng lặp:
Hình 13: Thuật toán tính toán thời gian để nhiệt độ Q giảm xuống còn 30℃
Và kết quả thu được là:
16
Đại học Bách Khoa
17
Đại học Bách Khoa
18
Đại học Bách Khoa
-Sách giáo trình Giải Tích 1 -Nhà Xuất Bản Đại Học Quốc Gia TP.Hồ
Chí Minh
19