1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Hực hành phương pháp tính và matlab báo cáo thực hành tuần 6

12 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thực Hành Phương Pháp Tính Và Matlab
Tác giả Đỗ Minh Nhật
Người hướng dẫn GVPT: Nguyễn Mai Minh Kha
Trường học Trường Đại Học Khoa Học Tự Nhiên
Thể loại báo cáo thực hành
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 12
Dung lượng 359,47 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tính gần đúng đạo hàm của y tại x = 0.7 bằng cách áp dụng công thức Taylor Code:... Code: hàm main Code: hàm function langrange... Tính chính xác kết quả đạo hàm.. So sánh với 2 kết quả

Trang 1

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

Họ và tên: Đỗ Minh Nhật

MSSV:22200115

Lớp:22DTV2

THỰC HÀNH PHƯƠNG PHÁP TÍNH VÀ MATLAB

GVPT: Nguyễn Mai Minh Kha

BÁO CÁO THỰC HÀNH TUẦN 6

Câu 1: Cho hàm số: y(x) = arcsin (x) với các giá trị tại:

x = [0.1 0.3 0.5 0.7 0.9]

y = [0.1002 0.3047 0.5236 0.7754 1.1198]

a Tính gần đúng đạo hàm của y tại x = 0.7 bằng cách áp dụng công thức Taylor

Code:

Trang 2

2

- Kết quả:

syms x; %lệnh tạo đa thức

y = @(x) asin(x); %đa thức đề bài

%fx = @(x) x^3*sin(x)+x*cos(x);

h=1e-4; %h là số rất bé gần bằng 0

%a=0;

%b=1;

%N=10;

xa = [0.1 0.3 0.5 0.7 0.9]; %mảng x đề bài

ya = [0.1002 0.3047 0.5236 0.7754 1.1198]; %mảng y đề bài

x=0.7;

%syms x;

y1=(y(0.7+h)-y(0.7))/h %câu a sử dụng công thức taylor

%subs(diff(y(x)),0.7) %câu c

%result = subs(diff(lagrange(xa,ya,x)),0.7) %câu b

%tichphan = tichphanhinhthang(fx,a,b,N);

%tichphanS = tichphanSimpson(fx,a,b,N);

Trang 3

b Tính gần đúng đạo hàm của hàm số: y = arcsin (x) tại x = 0.7 bằng cách dùng đa thức nội suy Lagrange

Code: hàm main

Code: hàm function langrange

syms x;

y = @(x) asin(x);

xa = [0.1 0.3 0.5 0.7 0.9];

ya = [0.1002 0.3047 0.5236 0.7754 1.1198];

x=0.7;

syms x;

result = subs(diff(lagrange(xa,ya,x)),0.7) %câu b gọi ra hàm function

lagrange sử dụng làm diff để đạo hàm và subs để tìm ra kết quả với

x=0.7

function ketqua = lagrange(xa, ya, x) % hàm function lagrange ở

tuần trước

n = length(xa);

ketqua = 0;

for i = 1:n

L_i = 1;

for j = 1:n

if j ~= i

L_i = L_i * (x - xa(j)) / (xa(i) - xa(j));

end

end

ketqua = ketqua + ya(i) * L_i;

end

end

Trang 4

4

- Kết quả:

c Tính chính xác kết quả đạo hàm So sánh với 2 kết quả gần đúng ở trên và nhận xét

- Code:

syms x;

y = @(x) asin(x);

%fx = @(x) x^3*sin(x)+x*cos(x);

h=1e-4;

%a=0;

%b=1;

%N=10;

xa = [0.1 0.3 0.5 0.7 0.9];

ya = [0.1002 0.3047 0.5236 0.7754 1.1198];

x=0.7;

syms x;

%y1=(y(0.7+h)-y(0.7))/h %câu a

subs(diff(y(x)),0.7) %câu c

%result = subs(diff(lagrange(xa,ya,x)),0.7) %câu b

%tichphan = tichphanhinhthang(fx,a,b,N);

%tichphanS = tichphanSimpson(fx,a,b,N);

Trang 5

- Kết quả:

- Sai số giữa kết quả đạo hàm chính xác và kết quả đạo hàm taylor là:

|10 ∗ 51

1 2

51 − 1.4004| = 1.1991 ∗ 10

−4

- Sai số giữa kết quả đạo hàm chính xác và kết quả đạo hàm lagrange là:

|10 ∗ 51

1 2

17083

12000| = 0.023303

- Nhận xét: phương pháp đạo hàm taylor sẽ cho ra kết quả gần đúng nhất và ít sai số hơn phương pháp lagrange

Trang 6

6

Câu 2: Viết function tính gần đúng tích phân của một hàm số f(x) bất kỳ trong khoảng [a,b] sử dụng công thức hình thang với N đoạn con bằng nhau

function y = tichphanhinhthang(fx,a,b,N)

Áp dụng tính gần đúng tích phân của hàm số f(x) = x^3sin (𝑥) + 𝑥𝑐𝑜𝑠(𝑥) trong khoảng [0,1] với N = 10

- Code: hàm main

- Code: hàm function tichphanhinhthang.m

syms x; %lệnh tạo đa thức

%y = @(x) asin(x); %đa thức đề bài

fx = @(x) x^3*sin(x)+x*cos(x);

%h=1e-4;

a=0; %giá trị biên bên trái của khoảng [0;1] là 0

b=1; % giá trị biên bên phải của khoảng [0;1] là 1

N=10; %số phần tử muốn lấy trong khoảng [0;1]

%xa = [0.1 0.3 0.5 0.7 0.9];

%ya = [0.1002 0.3047 0.5236 0.7754 1.1198];

%x=0.7;

%syms x;

%y1=(y(0.7+h)-y(0.7))/h %câu a

%subs(diff(y(x)),0.7) %câu c

%result = subs(diff(lagrange(xa,ya,x)),0.7) %câu b

tichphan = tichphanhinhthang(fx,a,b,N); %gọi hàm function

%tichphanS = tichphanSimpson(fx,a,b,N);

function y = tichphanhinhthang(fx,a,b,N)

M=0; %khởi tạo giá trị của tổng ban đầu là 0

h=(b-a)/N; %bước nhảy trung bình trong khoảng [0;1]

for i=1:1:(N-1) %lặp từ i=1 đến N-1

M = M+fx(a+i*h); %tổng fx(a+i*h) với i từ 1 đến N-1

end

y = (h/2)*(fx(a) + fx(b) +2*M); %công thức tích phân hình thang

fprintf('result hinh thang=%.5f\n',y) %in ra kết quả với thập phân 5 số

end

Trang 7

- Kết quả:

Câu 3: Viết function tính gần đúng tích phân của một hàm số f(x) bất kỳ trong khoảng [a,b] sử dụng công thức Simpson với với N đoạn con bằng nhau

function y = tichphanSimpson(fx,a,b,N)

Áp dụng tính gần đúng tích phân của hàm số f(x) = x3sin (𝑥) + 𝑥𝑐𝑜𝑠(𝑥) trong khoảng [0,1] với

N = 10

Trang 8

8

- Code: hàm main

syms x;

%y = @(x) asin(x);

fx = @(x) x^3*sin(x)+x*cos(x);

%h=1e-4;

a=0;

b=1;

N=10;

%xa = [0.1 0.3 0.5 0.7 0.9];

%ya = [0.1002 0.3047 0.5236 0.7754 1.1198];

%x=0.7;

%syms x;

%y1=(y(0.7+h)-y(0.7))/h %câu a

%subs(diff(y(x)),0.7) %câu c

%result = subs(diff(lagrange(xa,ya,x)),0.7) %câu b

%tichphan = tichphanhinhthang(fx,a,b,N);

tichphanS = tichphanSimpson(fx,a,b,N); %gọi hàm function

Trang 9

- Code: hàm function tichphanSimpson.m

- kết quả:

function y = tichphanSimpson(fx,a,b,N)

C=0; %khởi tạo chẵn = 0

L=0; %khởi tạo lẻ = 0

h=(b-a)/N; %tính bước nhảy trung bình trong khoảng [0;1]

for i=1:2:(N-1) %lệnh for lặp từ i=1 đến N-1 với bước nhảy là 2 để i luôn lẻ

L=L + fx(a+i*h); %tổng fx(a+i*h) với i luôn lẻ

end

for i=2:2:(N-1) %lệnh for lặp từ i=2 đến N-1 với bước nhảy là 2 để i luôn chẵn

C=C + fx(a+i*h); % tổng fx(a+i*h) với i luôn chẵn

end

y=(h/3)*(fx(a) + fx(b) +4*L +2*C); %công thức tích phân simpson

fprintf('result simpson=%.5f\n',y) % in ra kết quả với sau dấu chấm 5 chữ số thập phân end

Trang 10

10

Câu 4:

a Tính chính xác tích phân của hàm số f(x) = x3sin(x) +𝑥𝑐𝑜𝑠(𝑥) trong khoảng [0,1] So sánh với giá trị gần đúng ở câu 2 và câu 3 rồi nhận xét Gợi ý: tìm hiểu lệnh integral

- code:

- Kết quả:

fun = @(x) x.^3.*sin(x)+x.*cos(x);

q = integral(fun,0,1);

fprintf('result=%.5f\n',q)

Trang 11

b Viết chương trình tính sự chênh lệch của 2 phương pháp hình thang và Simpson so với tích phân chính xác integral ở ba trường hợp N = 1, N = 10 và N = 50 (in ra chi tiết giá trị chênh lệch) Từ đó rút ra kết luận phương pháp nào có độ chính xác cao hơn?

- code: hàm main

- Ta sử dụng lại function tichphanhinhthang.m và tichphanSimpson.m ở bài 2, 3 cho bài này

fun = @(x) x.^3.*sin(x)+x.*cos(x); %đa thức đề bài để tính tích tích

q = integral(fun,0,1); %lệnh tính tích phân cận từ 0 đến 1

fprintf('result tich phan chuan=%.5f\n',q) %in ra kết quả tích phân chuẩn thập phân 5 chữ số

syms x;

fx = @(x) x^3*sin(x)+x*cos(x); %khởi tạo đa thức đề bài

a=0; %cận trái = 0

b=1; %cận phải = 1

N=10; %số mẫu

tichphan = tichphanhinhthang(fx,a,b,N); %gọi hàm function hình thang

tichphanS = tichphanSimpson(fx,a,b,N); %gọi hàm function Simpson

o=abs(q-tichphanhinhthang(fx,a,b,N)); %công thức tính sai số tích phân chuẩn với

hình thang

k=abs(q-tichphanSimpson(fx,a,b,N)); %công thức tính sai số tích phân chuẩn với

simpson

fprintf('ket qua chenh lech giua tich phan chuan va tich phan hinh thang la: %.5f\n',o)

%in ra kết quả sai số với thập phân 5 chữ số

fprintf('ket qua chenh lech giua tich phan chuan va tich phan simpson la: %.6f\n',k)

%in ra kết quả sai số với thập phân 6 chữ số

Trang 12

12

- Với N=1, kết quả:

- Với N=10, kết quả:

- Với N=50, kết quả:

- Nhận xét: ta thấy được thứ tự độ chính xác tính tích phân như sau:

+ Tích phân chuẩn > tích phân Simpson > tích phân hình thang

+ Ta nhận thấy được khi ta lấy mẫu càng lớn (N càng lớn) thì độ chính xác của các phương pháp càng cao

Ngày đăng: 03/01/2025, 16:20

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w