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

Giải phương trình f(x) = 0 bằng phương pháp lặp đơn

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 (365.34 KB, 14 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM
KHOA KHOA HỌC ỨNG DỤNG
BỘ MÔN TOÁN ỨNG DỤNG

----------

BÁO CÁO MÔN HỌC
PHƯƠNG PHÁP TÍNH
NHÓM 2

Đề tài 2: Giải phương trình f(x) = 0 bằng phương pháp lặp đơn.
Giảng viên hướng dẫn: Hoàng Hải Hà
Sinh viên thực hiện:

TP. HỒ CHÍ MINH NĂM 2019

1


MỤC LỤC
MỤC LỤC ..................................................................................... 1
LỜI NÓI ĐẦU ............................................................................... 2
PHẦN 1: NỘI DUNG ĐỀ MỤC ................................................... 3
PHẦN 2: CƠ SỞ LÝ THUYẾT .................................................... 3
PHẦN 3: THUẬT TOÁN VÀ GIẢI THÍCH ................................ 4
PHẦN 4: VÍ DỤ ............................................................................ 6
1. Tìm xn và đánh giá sai số .............................................................. 6
a. Ví dụ 1 ...................................................................................... 6
b. Ví dụ 2 ...................................................................................... 8
2. Tìm n nhỏ nhất để sai số cho trước nhỏ hơn số cho trước ........... 9
a. Ví dụ 1 ...................................................................................... 9


b. Ví dụ 2 .................................................................................... 10
TÀI LIỆU THAM KHẢO ........................................................... 12
NHẬN XÉT CỦA GIẢNG VIÊN ............................................... 13

1


LỜI NÓI ĐẦU
Trong thời đại công nghệ 4.0, Việt Nam đang trên đà phát triển để hòa nhập và
sánh vai với các quốc gia trên thế giới. Vì vậy, việc ứng dụng khoa học và sáng chế
khoa học ở trường học rất thiết thực và quan trọng. Nên ngay từ năm đầu, các
giảng viên trường ĐH Bách Khoa TP.HCM đã giúp cho các sinh viên ngành kĩ
thuật làm quen với các ứng dụng lập trình, trong đó phải nói đến chương trình
MATLAB.
MATLAB là phần mềm cung cấp môi trường tính toán và lập trình, do công ty
Mathworks thiết kế. MATLAB cho phép tính toán ma trận, vẽ đồ thị hàm số hay
biểu đồ thông tin, thực hiện thuật toán, tạo các giao diện người dùng và liên kết với
những chương trình máy tính viết trên nhiều ngôn ngữ lập trình khác. 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ử dụng tương đối đơn giản và
phổ thông. MATLAB là công cụ tính toán hữu hiệu để giải quyết các bài toán kỹ
thuật.
Vì vậy, đối với những bài toán trong môn Phương pháp tính, đặc biệt là các bài
toán về phương pháp lặp đơn, phương pháp chia đôi,giải hệ bằng phương pháp
Jacobi, giải hệ bằng phương pháp Gauss Seidel,…, thì MATLAB là một công cụ
hữu dụng để giải quyết các bài toán một cách đơn giản, dễ hiểu, giúp chúng ta làm
quen và bổ sung thêm kỹ năng sử dụng các chương trình, ứng dụng cho sinh viên.

2



PHẦN 1: NỘI DUNG ĐỀ MỤC
Nội dung: Giải phương trình f(x) = 0 bằng phương pháp lặp đơn.
1. Cho phương trình x = g(x) và khoảng cách ly nghiệm [a,b].
2. Kiểm tra điều kiện hội tụ của phương pháp.
3. Tìm nghiệm xn với n nhập từ bàn phím.
4. Đánh giá sai số xn theo hai công thức tiên nghiệm và hậu nghiệm.
5. Tìm chỉ số n nhỏ nhất để sai số hậu nghiệm nhỏ hơn 𝜖 với 𝜖 nhập từ bàn
phím.
PHẦN 2: CƠ SỞ LÝ THUYẾT
Ý tưởng:
Biến đổi tương đương f(x) = 0  x = g(x) (1)
Chọn giá trị ban đầu x0 thuộc khoảng nghiệm (a,b). Thay x = x0 vào vế phải của (1)
ta tính được x1 =g(x0). Tiếp tục như thế ta tính được x2 = g(x1). Quá trình cứ tiếp tục
tiếp diễn, ta xây dựng được dãy lặp (xn) theo công thức xn= g(xn-1). Nhiệm vụ chúng
ta là khảo sát sự hội tụ này của dãy (xn) này.
Điều kiện để dãy {𝑥𝑛 } hội tụ:
Điều kiện:
Định Nghĩa: Hàm g(x) gọi là hàm co trên đoạn [a,b] nếu ∃q : 0| g(x) – g(y) | ≤ q | x – y |, ∀x, y ∈[a,b]
Trong đó ; q gọi là hệ số co
Để kiểm tra hàm co, ta dùng định lý sau
3


Định lý : Nếu hàm g(x) liên tục trên [a,b], khả vi trên (a,b) và ∃q : 0| g’(x) | ≤ q, ∀x ∈(a,b)
Thì g(x) là hàm co với hệ số co q
Định lý (nguyên lý ánh xạ co) :
Giả sử g(x) là hàm co trên [a,b] với hệ số co q, đồng thời g(x) ∈ [a,b], ∀x∈ [a,b]
Khi ấy với mọi giá trị ban đầu x0∈ [a,b] tùy ý, dãy lặp {xn} hội tụ về nghiệm của

phương trình:
Ta có công thức đánh giá sai số:
𝑞𝑛
|𝑥𝑛 − 𝑥̅ | ≤
|𝑥 − 𝑥0 | 𝐶ô𝑛𝑔 𝑡ℎứ𝑐 𝑠𝑎𝑖 𝑠ố𝑡𝑖ê𝑛 𝑛𝑔ℎ𝑖ệ𝑚
1−𝑞 1
|𝑥𝑛 − 𝑥̅ | ≤

𝑞
|𝑥 − 𝑥𝑛−1 | 𝐶ô𝑛𝑔 𝑡ℎứ𝑐 𝑠𝑎𝑖 𝑠ố ℎậ𝑢 𝑛𝑔ℎ𝑖ệ𝑚
1−𝑞 𝑛

Từ công thức đánh giá sai số, ta thấy sự hội tụ của phương pháp lặp càng nhanh
nếu q càng bé.
PHẦN 3: THUẬT TOÁN VÀ GIẢI THÍCH
Thuật Toán:
%Giai pt f(x) = 0 bang phuong phap lap don!
%Nhap pt x = g(x)
disp('Nhap pt x = g(x) va khoang cach ly nghiem [a, b]');
syms x
g = input('Nhap g(x) = ');
a = input('Nhap a = ');
b = input('Nhap b = ');
%Kiem tra su hoi tu cua phuong phap
w = abs(diff(g,x));
t = [a b];
q = max(subs(w,x,t));
4



fprintf('He so co: q = %.4f\n',double(q));
if q < 1
disp('Phuong phap hoi tu!');
else
disp('Phuong phap khong hoi tu!');
end
disp('Chon tinh nang: ');
disp(' 1. Tim xn va danh gia sai so');
disp(' 2. Tim n nho nhat de sai so hau nghiem nho hon esp');
chon = input('Chon: ');
if chon == 1
%tim xn va danh gia sai so
n = input('Nhap n: ');
esp = 0;
else
if chon == 2
%Tim n nho nhat de sai so hau nghiem nho hon esp voi esp nhap tu ban phim!
n = 1000; %so lan lap toi da!
esp = input('Nhap esp: ');
else
disp('Ban da chon sai!')
return;
end
end
x0 = input('Nhap x0: ');
xn = x0;
x1 = subs(g,x,x0);
for i=1:n
xn1 = xn;
xn = subs(g,x,xn1);

%Sai so tien nghiem:
ss1 = q^i *abs(x1 -x0)/(1-q);
%Sai so hau nghiem:
ss2 = q*abs(xn - xn1)/(1-q);
if ss2 < esp
fprintf('Tim duoc n = %d\n',i);
break
end
end
fprintf('x(%d) = %.9f\n',i,double(xn));
5


fprintf('Sai so tien nghiem: %.20f\n',double(ss1));
fprintf('Sai so hau nghiem: %.20f\n',double(ss2));
Giải thích:
Lệnh

Cú pháp

Ý nghĩa

function

Function <chuỗi kí tự>

Tạo hàm mới, tên tập tin hàm là <chuỗi kí tự>

Syms


syms t

disp

disp(x)
disp(‘chuỗi kí tự’)

Khai báo biến t là một biến kí hiệu.
Xuất giá trị của biến x ra màn hình.
Xuất chuỗi kí tự ra màn hình

Input

x=input(‘tên biến’)

Nhập vào 1 giá trị cho biến x

Diff

Dhfx=diff(f,x,n)

Tính đạo hàm riêng cấp n của f theo x

subs

I= subs(f,x,a)

Thay biến x→a trong hàm f (f(x)→f(a))

If…else…end


If <biểu thức điều kiện> Nếu biểu thức điều kiện đúng thì thực hiện
<khối lệnh 1>
khối lệnh 1, còn sai thì sẽ thực hiện khối lệnh
else <khối lệnh 2> end 2

fprintf

Fprintf(‘Chuỗi: %.xf\n’,

In ra màn hình

I, double(…))
double

Double(..)

Chuyển phân số sang số thực

PHẦN 4: VÍ DỤ
1. Tìm xn và đánh giá sai số:
VD1:Cho phương trình x = g ( x) = 3 6 x + 16 thỏa điều kiện lặp đơn trên [3,4]. Nếu chọn
x0 =3.3 thì nghiệm gần đúng x3 theo phương pháp lặp đơn, và sai số của nghiệm gần
đúng x3 theo công thức tiên nghiệm và hậu nghiệm là:
6


Giải:
Bấm máy: 3 6 x + 16
CALC X = 3.3 = x1 = 3.2958 → A

CALC X = Ans = x2 = 3.2950 → B
CALC X = Ans = x3 = 3.2949 → C
Đáp số: x3 = 3.2949
2

Tính hệ số co q: q = max g '( x) = max
[3,4]

[3,4]

3

(6 x + 16)2

= 0.1906  1 → M

Tiên nghiệm: x3 

q3
M3
x1 − x0 =
A − 3.3 = 0.00004
1− q
1− M

Hậu nghiệm: x3 

q
M
x3 − x2 =

C − B = 0.00004
1− q
1− M

7


5 3 3
x + thỏa điều kiện lặp đơn trên [0,1]. Nếu
20
20
chọn x0 =0.75 thì nghiệm gần đúng x3 theo phương pháp lặp đơn, và sai số của

VD2:Cho phương trình x = g ( x) =

nghiệm gần đúng x3 theo công thức tiên nghiệm và hậu nghiệm là:
Giải:
Bấm máy:

5 3 3
x +
20
20

CALC X = 0.75 = x1 = 0.2555 → A
CALC X = Ans = x2 = 0.1542 → B
CALC X = Ans = x3 = 0.1509 → C
Đáp số: x3 = 0.1509
Tính hệ số co q: q = max g '( x ) = max
[0,1]

[0,1]

15 2 3
x = 1 → M
20
4

Tiên nghiệm: x3 

q3
M3
x1 − x0 =
A − 0.75 = 0.8346
1− q
1− M

Hậu nghiệm: x3 

q
M
x3 − x2 =
C − B = 0.0098
1− q
1− M

8


2. Tìm n nhỏ nhất để sai số cho trước nhỏ hơn số cho trước
VD1: Cho phương trình x = g ( x) =


5
+ 2 thỏa điều kiện lặp đơn trên [2.5,3], x0 =2.5
x2

.Tìm n nhỏ nhất để nghiệm có sai số xn − xn −1  10−3 theo công thức hậu nghiệm:
Giải:
Tính hệ số co q: q = max g '( x ) = max −
[2.5,3]
[2.5,3]
Nhập máy: A =

10 16
=
1 → M
x 3 25

5
M
+2:
A − B − 10−3 : B = A
2
B
1− M

hay A =

B2 − eB + 2 M
:
A − B − 10−3 : B = A

3
1− M

với B = x0
n
0
1
2
3
4
5
6
7
8
9
10
11

x
2.5
2.8
2.6378
2.7186
2.6765
2.6980
2.6869
2.6926
2.6897
2.6912
2.6904

2.6908

xn

xn − 10−3

0.5334
0.2885
0.1438
0.0749
0.0382
0.0197
0.0101
0.0052
0.0027
0.0014
0.0008

0.5324
0.2875
0.1428
0.0739
0.0372
0.0187
0.0091
0.0042
0.0017
0.0004
-0.0002


Vậy n = 11 thì x11 = 0.0008 thỏa xn − xn −1  10−3 theo công thức đánh giá sai số hậu
nghiệm

9


x2 − ex + 2
thỏa điều kiện lặp đơn trên [0,1], x0 =0.5
3
.Tìm n nhỏ nhất để nghiệm có sai số xn − xn −1  10−3 theo công thức hậu nghiệm:

VD2: Cho phương trình x = g ( x) =

Giải:
1
3

Tính hệ số co q: q = max g '( x) =  1 → M
[0,1]

B2 − eB + 2 M
:
A − B : B = A hay
3
1− M
B2 − eB + 2 M
A=
:
A − B − 10−3 : B = A
3

1− M

Nhập máy: A =

n

x

xn

xn − 10−3

0
1
2
3
4
5

0.5
0.2004
0.2727
0.2536
0.2586
0.2573

0.1498
0.0362
0.0096
0.0025

0.0007

0.1488
0.0352
0.0086
0.0015
-0.0003

10


Vậy n = 5 thì x11 = 0.0008 thõa xn − xn −1  10−3 theo công thức đánh giá sai số hậu
nghiệm:

11


TÀI LIỆU THAM KHẢO
[1] Lê Thái Thanh ( 2007). Giáo Trình Phương Pháp Tính. Nhà Xuất Bản Giáo
Dục. tr. 20 - 24
[2] Hoàng Hải Hà ( 2019) . Bài giảng Phương Pháp Tính. Truy cập vào ngày :
20/07/2019. />
12


NHẬN XÉT CỦA GIẢNG VIÊN GIẢNG DẠY
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………

………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
……………………………………………………………………………………….

13



×