Professional Documents
Culture Documents
TIỂU LUẬN
Đề tài: Giải phương trình một ẩn f(x) = 0
bằng phương pháp chia đôi
Giáo viên hướng dẫn: Nguyễn Hữu Điển
1
Sv:Tô Văn Ba Toán Tin2_k51 Gv:Nguyễn Hữu Điển
Giới thiệu
Maple là một phần mềm tính toán do hang Maple Soft, một bộ phận chủ yếu của
liên hợp công ty Waterloo Maple phát triển. Cho đến nay Maple đã được phát
triển qua nhiều phiên bản khác nhau và ngày càng hoàn thiện. Maple có cách
cài đặt đơn giản, chạy trên tất cả các hệ điều hành, có cấu trúc linh hoạt dễ sử
dụng tối ưu cấu hình máy và đặc biệt có trình trợ giúp ( Help ) rất dễ sử dụng. Từ
phiên bản 7, Maple cung cấp ngày càng nhiều các công cụ trực quan, các gói
lệnh tự học gắn liền với toán phổ thông và đại học. Ưu điểm đó đã làm cho nhiều
nước trên thế giới lựa chọn sử dụng Maple cùng với các phần mềm toán học
khác trong giảng dạy học toán trước đòi hỏi của thực tiễn và sự phát triển của
giáo dục
2
Sv:Tô Văn Ba Toán Tin2_k51 Gv:Nguyễn Hữu Điển
Giải phương trình một ẩn f(x) = 0 bằng phương pháp chia đôi
Trong thực tế có rất nhiều bài toán không thể tìm nghiệm bằng cách giải thông
thường., để tìm được nghiệm ta phải sử dụng một số phương pháp lặp để tìm
được nghiệm gần đúng. Phương pháp chia đôi khoảng nghiệm là một trong
những phương pháp tìm nghiệm của phương trình f(x) = 0
f(x) = 0 (*)
Định lý: Nếu một hàm f(x) đơn điệu ( tăng hoặc giảm ) trên một đoạn [a, b] nào
đó và f(x) có đạo hàm không đổi dấu trên đoạn đó thì chắc chắn phương trình
f(x) = 0 có nghiệm duy nhất c nào đó trong đoạn [a, b].
Đoạn [a, b] được gọi là khoảng phân ly nghiệm của phương trình f(x) = 0.
Để tìm nghiệm gần đúng c, ta thực hiện một số hữu hạn lần quá trình lặp các
bước sau đây:
3
Sv:Tô Văn Ba Toán Tin2_k51 Gv:Nguyễn Hữu Điển
Quá trình trên gọi là phương pháp chia đôi bởi vì cứ mỗi một lần lặp lại từ đầu
thì khoảng [a, b] cần xem xét được thu gọn lại còn một nửa so với trước bởi
điểm chính giữa c. Quá trình lặp trên cũng dừng khi đoạn [a, b] quá ngắn (nhỏ
hơn một số dương nào đó gọi là sai số ε ).
Ta có sơ đồ
Tính c = ( a + b )/2 ,
Đ f(c)*f(a) < S
b := c a := c
Tính e := b - a
e<ε
S
Đ
Kết quả : α a |α-a|< ε
α b |α-b|< ε
Maple là một ngôn ngữ lập trình hướng thủ tục (procedure). Chúng ta có thể làm
việc với Maple bằng hai chế độ khác nhau: Chế độ tương tác trực tiếp thông qua
việc nhập từng lệnh đơn lẻ ngay tại dấu nhắc lệnh của Maple và nhận được
ngay kết quả của lệnh đó. Chế độ thủ tục được thực hiện bằng cách đóng gói
một dãy các lệnh xử lí cùng một công việc vào trong một thủ tục (procedure) duy
4
Sv:Tô Văn Ba Toán Tin2_k51 Gv:Nguyễn Hữu Điển
nhất, sau đó ta chỉ cần gọi thủ tục này và Maple tự động thực hiện các lệnh có
trong thủ tục đó một cách tuần tự và sau đó trả lại kết quả cuối cùng.
Maple chứa một lượng rất lớn các hàm tạo sẵn đáp ứng cho những yêu cầu tính
toán khác nhau trong nhiều lĩnh vực. Các hàm này được lưu trữ trong các gói
thủ tục (package) và người sử dụng có thể dễ dàng gọi đến mỗi khi cần thiết.
Tuy nhiên, người dùng Maple có thể tự tạo cho riêng mình những gói thủ tục
cũng như có thể trao đổi dùng chung những gói thủ tục nào đấy, phục vụ cho
công việc mang tính đặc thù riêng của mình.
Các khái niệm cơ bản cần phải nắm vững để tạo ra một thủ tục (procedure) là:
Cấu trúc proc()..end; cùng với các khai báo trong cấu trúc này (global, local,
option,...).
1.Khai báo một thủ tục
Lời gọi khai báo một thủ tục:
Procedure_name:=proc(parameter_sequence)
[local local_sequence]
[global global_sequence]
[options options_sequence];
Statements_sequences;
End;
Giải thích các khai báo:
• parameter_name: Là một dãy các kí hiệu, ngăn cách nhau bởi các dấu
phẩy, chứa tên các tham biến truyền cho thủ tục.
• local_sequence: Là một dãy các tên được khai báo là biến cục bộ trong
thủ tục, nó chỉ có giá trị sử dụng trong phạm vi thủ tục đang xét (local
được sử dụng để khai báo cho các biến chỉ sử dụng bên trong một thủ
tục).
• global_sequen: Dãy các tên biến toàn cục có giá trị sử dụng ngay cả bên
ngoài thủ tục.
• options_sequence: Dãy các tuỳ chọn cho một thủ tục.
• statements_sequence: Dãy các câu lệnh do người lập trình đưa vào.
5
Sv:Tô Văn Ba Toán Tin2_k51 Gv:Nguyễn Hữu Điển
2.Tham biến
Tham biến (parameter) là các biến được đặt giữa hai dấu ngoặc trong biểu thức
proc(...). Tham biến được dùng để nhận dữ liệu truyền cho thủ tục khi gọi thủ tục
đó. Ví dụ ta có thể khai báo thủ tục tính tổng của 2 số [tong:=proc(x,y) x+y; end.]
thì khi gọi thủ tục này để tính tổng của hai số 10 và 5 ta phải truyền các dữ liệu
này cho các tham biến (cho x nhận giá trị là 10, y nhận giá trị là 5), tức là tại dấu
nhắc lệnh ta phải viết tong(10, 5); và sau khi thực hiện thủ tục trả lại kết quả là
15.
Tham biến có tính cục bộ: chúng chỉ được sử dụng bên trong thủ tục đã được
khai báo, bên ngoài thủ tục này chúng không mang ý nghĩa gì.
Kiểu của tham biến có thể được khai báo trực tiếp.
3.Phạm vi các biến
Biến toàn cục:
Biến toàn cục được khai báo sau từ khoá global trong khai báo thủ tục.
Biến toàn cục được khai báo bên trong một thủ tục, nhưng có phạm vi giá
trị trong toàn bộ chương trình, tức là bên ngoài phạm vi của thủ tục mà nó
được khai báo trong đó.
Biến cục bộ:
Biến cục bộ được khai báo sau từ khoá local trong khai báo thủ tục.
Biến cục bộ chỉ có giá trị bên trong thủ tục mà nó được khai báo. Ngoài
thủ tục này nó không mang ý nghĩa gì.
Tham biến
Cũng giống như biến cục bộ, các tham biến chỉ có giá trị bên trong phạm
vi của thủ tục mà nó được khai báo. Sau khi thủ tục kết thúc, chúng không
còn giá trị.
Tham biến còn được sử dụng để trả lại kết quả, như các ngôn ngữ lập
trình truyền thống. Ngoài ra, do Maple có những hàm có khả năng trả lại
nhiều hơn một giá trị. Ta có thể gộp các giá trị này vào một danh sách để
trả lại như một phần tử.
6
Sv:Tô Văn Ba Toán Tin2_k51 Gv:Nguyễn Hữu Điển
Chức năng:
Nếu bạn muốn một dãy biểu thức được thực hiện khi điều kiện nào đó được
thoả mãn và một dãy biểu thức khác được thực hiện nếu trái lại thì có thể dùng
câu lệnh if- then- else- fi. Trong câu lệnh trên, nếu điều kiện condition là đúng thì
chuỗi biểu thức đứng sau then được thực hiện, nếu trái lại thì điều kiện condition
sau từ khoá elif sẽ được kiểm tra, nếu nó đúng thì chuỗi lệnh tương ứng sau
7
Sv:Tô Văn Ba Toán Tin2_k51 Gv:Nguyễn Hữu Điển
then được thực hiện, cứ tiếp tục cho đến khi các điều kiện condition đều không
thỏa mãn, thì các biểu thức sau lệnh else được thực hiện.
6.tính toán với độ chính xác theo yêu cầu
Lệnh evalf
Cú pháp 1:
evalf (bieu_thuc)
Chức năng: tính toán chính xác giá trị của biểu thức và biểu diễn kết quả với
mặc định là 10 chữ số.
Cú pháp 2:
evalf (bieu_thuc, k)
Chức năng: tính toán chính xác giá trị của biểu thức và biểu diễn kết quả với k
chữ số.
7. Hàm vẽ đồ thị trong mặt phẳng
Trong Maple hàm plot() được cung cấp để vẽ đồ thị của một hay nhiều biểu thức
có chứa những thủ tục, hàm với tham số, hoặc các điểm trong không gian hai
chiều
Cu pháp:
plot(<Biểu thức>,<Biến>=<Khoảng biến thiên>,<Dẫy tùy chọn>);
III. Chương trình
> chiadoi:=proc(f,a,b,delta)
local alpha,beta,m;
alpha:=a;
beta:=b;
m:=(alpha+beta)/2;
while abs(beta-alpha)>=delta do
if evalf(f(alpha)*f(m)<0) then
beta:=m;
m:=(alpha+beta)/2;
else
alpha:=m;
m:=(alpha+beta)/2;
fi;
print(0.5*(alpha+beta));
od;
end;
8
Sv:Tô Văn Ba Toán Tin2_k51 Gv:Nguyễn Hữu Điển
(bài tập 2.2 trang 54 - bài giảng lập trình tính toán tác giả Nguyễn Hữu Điển)
> f:=x->x-sin(Pi*x);
f := x → x − sin( π x )
> plot(f,-2..2);
> chiadoi(f,-1,-0.5,0.00000001);
-0.6250000000
-0.6875000000
-0.7187500000
-0.7343750000
-0.7421875000
-0.7382812500
-0.7363281250
-0.7373046875
-0.7368164060
-0.7365722655
-0.7364501955
-0.7365112305
-0.7364807130
-0.7364959715
9
Sv:Tô Văn Ba Toán Tin2_k51 Gv:Nguyễn Hữu Điển
-0.7364883420
-0.7364845275
-0.7364826200
-0.7364835740
-0.7364840505
-0.7364842890
-0.7364844085
-0.7364844680
-0.7364844380
-0.7364844530
-0.7364844455
-0.7364844495
> chiadoi(f,0.5,1,0.00000001);
0.6250000000
0.6875000000
0.7187500000
0.7343750000
0.7421875000
0.7382812500
0.7363281250
0.7373046875
0.7368164060
0.7365722655
0.7364501955
0.7365112305
0.7364807130
0.7364959715
0.7364883420
0.7364845275
0.7364826200
0.7364835740
0.7364840505
0.7364842890
0.7364844085
0.7364844680
0.7364844380
0.7364844530
0.7364844455
0.7364844495
10
Sv:Tô Văn Ba Toán Tin2_k51 Gv:Nguyễn Hữu Điển
(bài tập 2.3 trang 55 - bài giảng lập trình tính toán tác giả Nguyễn Hữu Điển)
> f:=x->x-cos(Pi*x);
f := x → x − cos( π x )
> plot(f,-2..2);
> chiadoi(f,-0.9,-0.7,0.00000001);
-0.7500000000
-0.7750000000
-0.7875000000
-0.7937500000
11
Sv:Tô Văn Ba Toán Tin2_k51 Gv:Nguyễn Hữu Điển
-0.7906250000
-0.7890625000
-0.7898437500
-0.7894531250
-0.7896484375
-0.7897460940
-0.7897949220
-0.7898193360
-0.7898315430
-0.7898376465
-0.7898345950
-0.7898330690
-0.7898323060
-0.7898326875
-0.7898324965
-0.7898325920
-0.7898326400
-0.7898326160
-0.7898326280
-0.7898326335
-0.7898326305
> chiadoi(f,0,1,0.00000001);
0.2500000000
0.3750000000
0.4375000000
0.4062500000
0.3906250000
0.3828125000
0.3789062500
0.3769531250
0.3779296875
0.3774414062
0.3771972656
0.3770751953
0.3770141602
0.3769836426
0.3769683838
0.3769607544
0.3769645691
0.3769664764
0.3769674301
0.3769669533
12
Sv:Tô Văn Ba Toán Tin2_k51 Gv:Nguyễn Hữu Điển
0.3769671917
0.3769670725
0.3769670129
0.3769669831
0.3769669980
0.3769670054
0.3769670092
(bài tập 2.4 trang 56 - bài giảng lập trình tính toán tác giả Nguyễn Hữu Điển)
> f:=x->sin(x)-exp(-x);
( −x )
f := x → sin( x ) − e
> plot(f,0..7);
13
Sv:Tô Văn Ba Toán Tin2_k51 Gv:Nguyễn Hữu Điển
> chiadoi(f,0.5,1,0.0001);
0.6250000000
0.5625000000
0.5937500000
0.5781250000
0.5859375000
0.5898437500
0.5878906250
0.5888671875
0.5883789060
0.5886230470
0.5885009765
0.5885620120
0.5885314945
> chiadoi(f,6,6.5,0.0001);
6.375000000
6.312500000
6.281250000
6.296875000
6.289062500
6.285156250
6.283203125
6.284179690
6.284667970
6.284912110
6.285034180
6.285095215
6.285064695
14
Sv:Tô Văn Ba Toán Tin2_k51 Gv:Nguyễn Hữu Điển
Kết luận
Như vậy, qua bài báo cáo này chúng ta đã tìm hiểu được phần nào về cú pháp,
hàm được sử dụng trong Maple.Đồng thời chúng ta cũng thấy được sự hỗ trợ
mạnh mẽ trong Maple. Thông thường để giải quyết bài toán trên chúng ta phải đi
tìm khoảng phân ly nghiệm [a, b], điều này thật không đơn giản. Tuy nhiên với
sự hỗ trợ mạnh mẽ về đồ thị trong Maple bài toán trở lên đơn giàn khi ta có thể
nhìn ngay khoảng phân ly trên đồ thị và có thể kiểm tra kết quả thông qua đồ thị.
Tuy vậy, do những hạn chế về mặt cá nhân em lên trong bài báo cáo còn nhiều
sai sót, em mong được sự nhận xét đóng góp ý kiến của thầy
15