TRƯỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN VIỆN CÔNG NGHỆ THÔNG TIN VÀ KINH TẾ SỐ ---***--- BÁO CÁO BÀI TẬP NHÓM HỌC PHẦN: PHƯƠNG PHÁP TÍNH ĐỀ TÀI: Giải phương trình bằng phương pháp Newton ti
Trang 1TRƯỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN
VIỆN CÔNG NGHỆ THÔNG TIN VÀ KINH TẾ SỐ
-*** -
BÁO CÁO BÀI TẬP NHÓM
HỌC PHẦN: PHƯƠNG PHÁP TÍNH
ĐỀ TÀI:
Giải phương trình bằng phương pháp Newton tiếp tuyến
Xấp xỉ hàm số bằng phương pháp bình phương tối thiểu (TH hàm dạng đa thức)
Nhóm thực hi n ệ : Nhóm 3 Lớp h c ph n ọ ầ : Phương pháp tính (222)_03 Giảng viên hướng dẫn : ThS Nguy n Qu nh Maiễ ỳ
Hà Nội – 2023
Trang 2DANH SÁCH THÀNH VIÊN NHÓM
Trang 3[1]
MỤC LỤC
A GIẢI PHƯƠNG TRÌNH BẰNG PHƯƠNG PHÁP NEWTON TIẾP TUYẾN 2
1.Đặt vấn đề 2
2.Mô tả bài toán 2
3.Ví dụ minh họa 4
4.Thuật toán và code 5
5.Đánh giá phương pháp 7
B.XẤP XỈ HÀM SỐ BẰNG PHƯƠNG PHÁP BÌNH PHƯƠNG TỐI THIỂU (TH HÀM DẠNG ĐA THỨC) 8
1.Đặt vấn đề 8
2.Mô tả bài toán 9
3.Ví dụ minh họa 10
4.Thuật toán và code 11
5.Đánh giá phương pháp 12
Trang 4A GIẢI PHƯƠNG TRÌNH BẰNG PHƯƠNG PHÁP NEWTON TIẾP TUYẾN
1 Đặt vấn đề
Trong chương trình phổ thông, khoảng lớp 5, HS được h c cách giảọ i PT bậc nh t 1 n (còn ấ ẩ được biết đến với cái tên nổi tiếng là tìm x) Khoảng cấp 2, HS được học cách giải PT bậc
2 một ẩn và HPT b c nh t hai n Trong khoa h c công ngh và trong th c t có r t nhiậ ấ ẩ ọ ệ ự ế ấ ều bài toán chuy n thành gể ải hệ phương trình:
Fi(x1,x2, xn)=0 v i i=1,2, n ớ
Chỉ trong một số trường hợp đặc biệt mới có thể tìm ra nghiệm đúng của HPT đó Các trường hợp còn lại đều phải tìm cách giải nghiệm gần đúng
=>Phương pháp Newton
2 Mô t bài toán ả
Gi ả thi t:ế f(x) trái d u tấ ại 2 vị trí a và b, đồng thời tồ ại đạn t o hàm c p mấ ột f’(x)≠0 trong khoảng [a,b], và đạo hàm cấp 2 tại x ∈ (a, b)
Khai triển Taylor b c n cậ ủa f(x) tại 𝑥0:
f(x + h) = f(x ) +0 0 h
1! f′(x0) +h
2 2! f′′(x0)+ +h
n n! f(n)(x0) + h
n+1 (n + 1)! f(n+1)(C)
C ∈ (x0, x + h)0
Dựa vào khai triển Taylor, ta sẽ xác định 1 hàm Φ(x) và tìm nghiệm của phương trình bằng phép l p ặ
𝑥𝑛+1= Φ(x) Giả s ử𝑥 là nghiệm đúng của phương trình, 𝑥𝑛 là nghiệm xấp x cỉ ủa phương trình tạ ầi l n lặp th ứ n Ta đặt x = x +△ xn n Theo khai tri n Taylor, ta có: ể
f(x) = f(x +△ x ) = f(x ) +△ x (x ) +n n n nf′ n △ xn
2! f′′(C) = 0 Nếu △ xnđủ nh , ta có công thỏ ức gần đúng:
f(x ) +△ x (x ) ≈ f(x) = 0n nf′ n
Trang 5[3]
Từ đây:
△ xn≈ −𝑓′(𝑥𝑘)𝑓(𝑥𝑘)
Vì △ x = x − xn n
Do đó x ≈ xn −𝑓(𝑥𝑘 )
𝑓′(𝑥 ) 𝑘
* Ý nghĩa hình học
Định lý (điều kiện h i tụ ộ theo Furiê_điều kiện đủ)
Giả s [a,b] là kho ng nghi m cử ả ệ ủa phương trình f(x) = 0 Đạo hàm f ′(x) ′′, f (x) liên t c, ụ không đổi dấu trên đoạn [a,b] Khi đó ta chọn xấp xỉ nghiệm ban đầu 𝑥 ∈ [𝑎, 𝑏]0 sao cho f(x0) cùng dấu với f ′′ thì quá trình lặp s hẽ ội tụ đến nghiệm
Trang 63 Ví d minh hụ ọa
Giải phương trình: f(𝑥) = x + x − 5 = 03 bằng phương pháp tiếp tuyến
Gi i:ả
Ta có: f(1) = -3 < 0
f(2) = 5 > 0
Hàm f(x) trái dấu t x = 1 và x = 2 => ại Khoảng phân ly nghi m [1, 2] ệ
f ′(x) = 3𝑥 + 1 > 0 ∀𝑥 ∈ [1, 2]2
f ′′(x) = 6x> 0∀x ∈ [1, 2]
Thỏa mãn điều kiện hội tụ Furiê, áp dụng phương pháp tiếp tuyến chọn với 𝑥 = 20 (vì f(2) cùng dấu v i ớ f ′′ ta có bả) ng sau:
Vậy nghiệm x ≈ 1.516
Trang 7Discover more
from:
2121212
Document continues below
tin học đại
cương
Đại học Kinh tế…
543 documents
Go to course
Giáo trình tin học lý thuyết
tin học đại
cương 100% (3)
144
ICDL - Ly Thuyet-OE
- CE - tài liệu ôn thi… tin học đại
cương 100% (3)
7
Đề 4 - hhhh
tin học đại
cương 100% (2)
20
[Word] Mock Test 3 -km/;,;l,l/,
tin học đại
cương 100% (2)
9
Trắc nghiệm chương
2 - bài tập
7
Trang 84 Thuật toán và code
4.1 Thuật toán
Nhập phương trình f(x)
và sai s epsilon( ) ố 𝜺
Vẽ đồ thị hàm f(x)
Nhập a, b xác định khoảng phân ly nghi m ệ
Kiểm tra đ.kiện hội tụ
Nhập x 0
Đ
x1 = x 0– f(x0)/f’(x0)
e = |x x | 1– 0
e < 𝜀
Đ
S
Kết quả a ≈ x 1
Thay x = x 0 1
tin học đại cương 100% (2) Đáp án lý thuyết
-mk là 10education tin học đại
cương 100% (2)
18
Trang 9[6]
4.2 Code
❖ furie.m (Kiểm tra ều kiện hội tụđi ):
syms x
df = diff(f);
d2f = diff(df);
%abs(f(x0)*subs(d2f,x,x0)/subs(d1f,x,x0)^2) < 1
if abs(f(x0) * subs(d2f, x, x0) / subs(df, x, x0) ^ 2) < 1 tmp = 1;
else
tmp = 0;
end
end
❖ main.m (Tìm nghiệm gần đ úng c ủa phương trình):
clc
clear all
close all
%%%%%%%%%%%%%%%%%%% Nhập phương trình f(x) %%%%%%%%%%%%%%%%%%%%
fx = input( "Nhập phương trình f(x) : " );
epsilon = input( "Nhập sai số epsilon : " );
syms f(x)
f(x) = str2sym(fx);
df = diff(f);
x1 = 0;
%%%%%%%%%%%%%%%%%%% Trực quan đồ thị f(x) %%%%%%%%%%%%%%%%%%%%
x = -5:0.1:5;
y = f(x);
z = 0 * x;
subplot(2,1,1)
plot(x, y, x, z);
grid on
xlabel( 'x' )
ylabel( 'y = f(x)' )
%%%%%%%%%% Từ đồ thị xác định khoảng phân ly nghiệm %%%%%%%%%%%%
a = input( 'Nhập a : ' );
b = input( 'Nhập b : ' );
%%%%%%%%% Kiểm tra nghiệm gần đúng theo PP Newton %%%%%%%%%%%%%%% x0 = input( 'Nhập x0 : ' );
check_furie = 0;
if furie(f,x0) == 1 %%% Hàm kiểm tra điều kiện hội tụ Furie %% check_furie = 1;
disp( 'x0 thỏa mãn điều kiện hội tụ Furie' );
else
disp( 'Bạn hơi đen! Xin mời nhập lại!' );
x0 = input( 'Nhập x0 : ' );
end
Trang 10%%%%%%%%% Tìm nghiệm bằng phương pháp tiếp tuyến Newton %%%%%%%%%%
if check_furie == 1
x1 = x0 - f(x0)/df(x0);
count = 1;
fprintf( "Tại lần lặp thứ %d Nghiệm xấp xỉ x1 là : %11.10f\n" , count,
x1);
maxn = 10000; % Tránh trường hợp lặp vô hạn
while abs(x1 - x0) >= epsilon && count < maxn
count = count + 1;
x0 = x1;
x1 = x0 - f(x0)/df(x0);
fprintf( "Tại lần lặp thứ %d Nghiệm xấp xỉ x1 là : %11.10f\n" ,
count, x1);
end
fprintf( "Số lần lặp là : %20d\n" , count);
fprintf( "Nghiệm xấp xỉ là : %20.10f\n" , x1);
else
disp( 'Khoảng phân ly nghiệm không hợp lệ!!!!!' )
end
5 Đánh giá phương pháp
5.1 Ưu điểm
• Phương pháp Newton tiếp tuyến là một phương pháp có lời giải hay, dễ hiểu, áp
dụng được cho mọi hệ, hệ càng ph c tứ ạp thì phương pháp càng tỏ ra ưu việt
• Phương pháp Newton tiếp tuyến có độ hội tụ cao hơn rất nhiều so với phương pháp
lặp thông thường và thường hay tr vả ề các kết qu vả ới độ chính xác tương đối cao
Phương pháp này là một công cụ rất USEFUL để giải gần đúng các hệ phương
trình, các bài toán xấp x , các hàm s tỉ ố ối ưu
5.2 Nhược điểm
• Giá trị đầ u tiên x0 thường khó xác định sao cho tốt nhất
• Hạn ch trong vi c tính toán nhế ệ ững phép đạo hàm phức tạp, đặc biệt với những
phép o hàm b c cao, không phđạ ậ ải lúc nào cũng tìm được đạo hàm dưới dạng tường
minh
• Việc kiểm tra các điều kiện để có thể áp dụng phương pháp này khó
Trang 11[8]
B XẤP XỈ HÀM SỐ BẰNG PHƯƠNG PHÁP BÌNH PHƯƠNG TỐI THIỂU (TH HÀM DẠNG ĐA THỨC)
1 Đặt vấn đề
Trong toán học, phương pháp bình phương tối thiểu (Ordinary least square), còn g i là bình ọ phương nhỏ nhất hay bình phương trung bình tối thiểu, là một phương pháp tối ưu hóa để lựa chọn một đường kh p nh t cho m t d i d ớ ấ ộ ả ữ liệ ứng v i c c tr c a t ng các sai s u ớ ự ị ủ ổ ố thống
kê (error) giữa đường kh p và dớ ữ liệu
Phương pháp này giả định các sai s cố ủa phép đo đạc dữ liệu phân ph i ngố ẫu nhiên Định lý Gauss-Markov ch ng minh r ng k t quứ ằ ế ả thu đượ ừ phương pháp bình phương tốc t i thi u ể không thiên v và sai s c a viị ố ủ ệc đo đạc dữ liệu không nhất thi t ph i tuân theo, ví d , phân ế ả ụ
bố Gauss Một phương pháp mở r ng t ộ ừ phương pháp này là bình phương tối thiểu có tr ng ọ
số
Phương pháp bình phương tối thiểu thường được dùng trong khớp đường cong Nhiều bài toán tối ưu hóa cũng được quy về việc tìm c c trự ị của dạng bình phương, ví dụ như tìm cực tiểu của năng lượng hay cực đại của entropy
Giả s ử có 2 đại lượng x và y (v t lý, hoá hậ ọc, …) có liên hệ ph thu c ụ ộ
nhau theo m t trong các d ng sau: ộ ạ
1 y = a + bx
2 y = a + bx +cx 2
3 y = ae bx
4 y = ax b
Trang 12Trong đó: a, b, c là các giá trị chưa biết
Mục đích: Tìm các giá tr ịchưa biết
Giả sử đã đo được các m u (ẫ 𝑥 𝑦𝑖 𝑖) v i i=1,2,3, ,n mớ ục đích là xác định hàm f(x) thoả mãn f(x)≈𝑦𝑖
Giả s hàm f có th ử ể thay đổi hình d ng ph thu c vào 1 hàm ạ ụ ộ 𝑝𝑗 v i j=0,1,2, m f(x) = ớ f(𝑝𝑗,x) Sai s gi a giá tr ố ữ ị thực và giá trị ước lượng theo hàm f(𝑝𝑗,x) tại x = 𝑥𝑖
Xác định giá tr của 𝑝𝑗 sao cho bi u thị ể ức sau đạt giá tr cị ực tiểu
𝑥2 = ∑ (𝑛
𝑖=1 𝑦𝑖− 𝑓(𝑥))^2 Điều này gi i thích sao phương pháp là bình phương tối thi u ả ể
2 Mô t bài toán ả
Trường h p y = a + bxợ
- Giả ử s y ph ụ thuộc x d ng ạ y = a +bx
- Gọi 𝜀𝑖là sai số ủ c a 𝑥𝑖:
𝜀𝑖= 𝑦𝑖− 𝑎 − 𝑏𝑥𝑖, i= 1,2, … , n
- Gọi S là tổng bình phương của sai số
S = ∑ 𝜀𝑖2= ∑ (𝑦𝑖𝑛 − 𝑎 − 𝑏𝑥𝑖)2
𝑖=1 𝑛
𝑖=1
S phụ thuộc a, b còn 𝑥𝑖, 𝑦𝑖 đã biết
- Mục đích của phương pháp bình phương bé nhất là xác định a sao cho S là bé nh ất
- Khi đó a, b là nghi m cệ ủa hệ:
{
𝜕𝑠
𝜕𝑎= 0
𝜕𝑠
𝑆 = ∑ 𝑦𝑖2+ 𝑎2+ 𝑏2𝑥𝑖2− 2𝑎𝑦𝑖− 2𝑏𝑥𝑖𝑦𝑖+ 2 𝑥𝑎𝑏 𝑖
𝑛
𝑖=1
Trang 13[10]
(1) {
𝜕𝑠
𝜕𝑎= ∑ (2𝑎 − 2𝑦 + 2𝑏𝑥𝑛𝑖=1 𝑖 𝑖)
𝜕𝑠
𝜕𝑏= ∑ (2𝑏𝑥𝑛 𝑖2
𝑖=1 − 2𝑥𝑖𝑦𝑖+ 2𝑎𝑥𝑖) (1) { 𝑛𝑎 + 𝑏 ∑ 𝑥𝑖𝑛𝑖=1 = ∑ 𝑦𝑖𝑛𝑖=1
𝑎 ∑ (𝑥𝑖𝑛
𝑖=1 ) + 𝑏∑𝑛𝑖=1𝑥𝑖2= ∑ (𝑥 𝑦𝑛𝑖=1 𝑖 𝑖)
Từ các giá trị 𝑥𝑖 và 𝑦𝑖 đã có ta thay vào phương trình trên => các giá trị a, b
3 Ví d minh hụ ọa
Hai đại lượng x và y phục thuộc theo quy luật y = a + bx Hãy xác định a, b bằng phương pháp bình phương bé nhất, biết:
Giải:
Trước hết ta lập bảng số:
n = 4
-1
0
1
3
0.5
1 1.5 2.5
1
0
1
9
-0.5
0 1.5 7.5
Ta có hệ phương trình:
{ 4𝑎 + 3𝑏 = 5.53𝑎 + 𝑏 = 8.511 Giải hệ này ta được:
a = 1 ;
b = 0.5;
Vậy phương trình là: y = 1 + 0.5x
Trang 144 Thuật toán và code
4.1 Thuật toán
4.2 Code
%TH y = a + b*x
% nhập bảng dữ liệu đầu vào
x = input( 'nhap cac gia tri cua Xi theo cu phap [X1 X2 Xn]: ' );
y = input( 'nhap cac gia tri cua Yi theo cu phap [Y1 Y2 Yn]: ' );
% đưa về giải ma trận có dạng A * X = B => X = A^-1 * B
A = [length(x) sum(x) ; sum(x) sum(x.^2)] ;
B = [sum(y) ; sum(x * y) ] ;
X = inv(A) * B ; %inv = inversion là hàm nghịch đảo ma trận
%in kết quả dạng y = a + b*x với a là giá trị X(1,1), b là giá trị tại X(2,1)
if X(2,1) >= 0
fprintf( "phuong trinh co dang y = %.03f+%.03f*x" ,X(1,1),X(2,1));
End
Nhập dữ liệu x và y Tạo ma tr n A và Bậ
Ma tr n X = A x Bậ -1
X (2,1) >= 0
Start
Trang 15[12]
fprintf( "phuong trinh co dang y = %.03f %.03f*x" ,X(1,1),X(2,1)); end
5 Đánh giá phương pháp
5.1 Ưu điểm
• Độ chính xác cao
• Phương pháp đơn giản, dễ hiểu, minh bạch
5.2 Nhược điểm
• Quá trình tính toán phức tạp, d gây nhễ ầm lẫn