Professional Documents
Culture Documents
Nhóm 11 MT1009 - L08
Nhóm 11 MT1009 - L08
BÁO CÁO
BÀI TẬP LỚN PHƯƠNG PHÁP TÍNH
Đề: 02
SVTH : NHÓM 11
Trần Nhi Ý Nhi – 1813417
Đoàn Vũ Bằng – 2012683
Nguyễn Thị Thu Hằng – 2013104
Trần Duyên Anh Tú – 2014986
Đỗ Hoàng Tuấn – 1912351
b. Let V = 8 (m3 ), L = 5(m), r = 2(m), determine h by the bisection and the secant
methods with error less than 10-5 .(Guess the isolated interval containing root).
c. Propose a way to find h with the data given in the previous question by the fixed
point method(that is, you give the equation to the equivalent form x = g(x), where g(x) is
a function that makes the fixed point method workable). If it is possible, determine h with
priori error less than 10-5.(h0 is chosen arbitrarily).
d. With the Newton-Raphson’s method, choosing h0 suitably, determine h with error
less than 10-5.
Trang 1/23
02. BÀI GIẢI
2. BÀI GIẢI
a) Ở đây:
r là bán kính của hình trụ
h là chiều cao mà hình trụ được lấp đầy
V = Ssegment*L
Với Ssegment là diện tích của khu vực (khu vực miếng bánh) trừ đi mảnh hình tam giác.
Với kiến thức hình học, chúng ta có thể tính ra góc θ/2 = cos-1((r – h)/r), vì thế
Ssector = cos-1((r – h)/r)* r2
Và đối với chiều cao của nửa tam giác = (r - h)
Ta có: b2 = r2 - (r-h)2
Trang 2/23
02. BÀI GIẢI
Vì vậy, nửa tam giác đó có diện tích là ½ (chiều cao × đáy), do đó, đối với tam
giác đầy đủ:
Stam giác= (r − h) √(2rh − h2)
Ssegment =Ssector – Stam giác = cos-1((r – h)/r) r2 − (r − h) √(2rh − h2)
b)
Phương pháp secant:
function[A]=Secant(f,x0,x1,E)
syms x
X(1)=x0;X(2)=x1; % gán x ở vị trí thứ nhất và vị trí thứ hai lần lượt là x0 và x1
i=3; % i lấy giá trị là 3 để thực hiện các vòng lặp sau
while abs(x1-x0)>E % so sánh sai số với sai số đề bài
X(i)=X(i-1)-subs(f,X(i-1))*(X(i-1)-X(i-2))/(subs(f,X(i-1))-subs(f,X(i-2)));
x1=X(i); % gán X(i) mới tìm được bằng x1
x0=X(i-1); % gán X(i-1) bằng x0
i=i+1; % sau mỗi vòng lặp i tăng lên 1 đơn vị
end
A=X(i-1); % xuất ra giá trị kế cuối của X cuối cùng trong tập hợp giá trị của X
End
Phương pháp chia đôi:
function [xn] =Tosection(f,a,b,E)
format short
fa=subs(f,a);%tinh gia tri ham f tai a
x=[];%tao ma tran x
fx=[];n=0;
while abs((b-a)/(2^(n)))>E
c=a+(b-a)/2;%chon can tiep theo de tinh toan
fc=subs(f,c);%tinh gia tri ham f tai c
x=[x;c];fx=[fx,fc];%gan cac gia tri vao ma tran gia tri de hien thi ket qua
if fa*fc>0,a=c;fa=fc;% dieu kien de chon can tiep theo thuc hien vong lap don neu
else
b=c;%nguoc lai gan b=c de tiep tuc vong lap
end
n=n+1;
Trang 3/23
02. BÀI GIẢI
end
fx=double(fx');xn=x(n);
end
c) Phương pháp lặp đơn
function [xn]=iteration(g,x0,a,b,E)
format short
D=diff(g,1);q1=subs(D,a);q2=subs(D,b); % tính đạo hàm hàm g
if q2>q1 % xét xem q2 có lớn hơn q1 không nhưng q vẫn phải đảm bảo lớn hơn các giá
trị khác
q=q2; % nếu q2>q1 thì q=q2
else q=q1; % nếu q2<q1 thì q=q1
end
if (q<0)||(q>=1), error('Khong la ham co.');end % nếu q<0 hoặc q>1 thì q không phải
hàm con không tính được, nếu q thỏa điều kiện trên thì thực hiện các dòng lặp bên dưới
x=[];x=[x;x0];
x1=subs(g,x0);
x=[x;x1];xe=x0;
while E<abs(xe-x1) % xét xem sai số có bé hơn E không, nếu thỏa điều kiện thì thực
hiện tiếp
xe=x0;
x1=subs(g,x0); % sau nhiều vòng lặp thì x1 sẽ kéo nghiệm của nó tiến gần nghiệm
gần đúng
x=[x;x1]; x0=x1;
end
x=double(x);
xn=x(size(x,1)); % hiện ra giá trị ở vòng lặp cuối cùng
end
d) Phương pháp Newton- Raphson’s
function[Xn]=NR(f,x0,E)
syms x
fi=diff(f);
X(1)=x0;X(2)=X(1)-subs(f,X(1))/subs(fi,X(1));i=2; % công thức có sẵn
while abs(X(i)-X(i-1))>E % so sánh sai số với E nếu lớn hơn thì tiếp tục lặp đến
khi nào sai số bé hơn E thì ngừng lặp
i=1+i;
X(i)=X(i-1)-subs(f,X(i-1))/subs(fi,X(i-1)); % công thức có sẵn
end
Xn=X(i); % gán giá trị để xuất ra màn hình
end
Trang 4/23
02. BÀI GIẢI
Trang 5/23
03. PROBLEM 2
3. PROBLEM 2
a. Write a function to factorize a matrix A into A=LU with Doolitle’s method(not use the
existed command in Matlab or Python), use your function to solve the next problem.
b. An electrical engineer supervises the production of three types of electrical
components. Three kinds of material—metal,plastic, and rubber—are required for
production. The amounts needed to produce each component are:
If totals of 3.89, 0.095, and 0.282 kg of metal, plastic, and rubber, respectively, are
available each day, how many components can be produced per day?(The following
results must be displayed: Matrix L, the solution of the system Ly = B, Matrix U, the
solution of the system Ux = y).
Trang 6/23
04. BÀI GIẢI
4. BÀI GIẢI
* Cơ sở lý thuyết:
Cho một ma trận N × N
A= ( an,n)
ta định nghĩa
A(0) := A
và lặp với n = 1,...,N-1 như sau.
Khử các phần tử bên dưới đường chéo chính của cột thứ n của A(n-1) bằng cách
cộng vào dòng thứ i của ma trận này với dòng thứ n và nhân thêm hệ số
với i= n+1,…,N. Nói cách khác, ta nhân bên trái A(n-1) với ma trận tam giác dưới
Ký hiệu ma trận tam giác trên A(N-1) là U, và L=(L1 )-1…(LN-1)-1 . Vì nghịch đảo
của ma trận tam giác dưới 'Ln cũng là ma trận tam giác dưới, và tích hai ma trận
tam giác dưới cũng là một ma trận tam giác dưới nên L là ma trận tam giác dưới
cần tìm. Hơn nữa, nhận xét rằng
Trang 7/23
04. BÀI GIẢI
Vậy ta có A= L*U
Cần phải đảm bảo an,nn-1≠0 tại mỗi bước (xem công thức li,n ). Nếu giả sử này
không đúng ở một bước nào đó, ta có thể hoán vị dòng thứ n với một dòng khác
bên dưới nó để tiếp tục thuật toán. Đây là lý do mà phép phân tích LU tổng quát
tương tự với phép phân tích P-1*A=L*U.
* Giải thích code
function[X]=LUFTf(A,B)
N=size(A,1);
l=zeros(N);u=l; % tạo ra ma trận toàn số 0 có kích thước bằng ma trận A
for i=1:N
l(i,i)=1; % tạo ma trận tam giác trên
end
for j=1:N
u(1,j)=A(1,j); % gán giá trị ma trận A sang ma trận u
end
if u(1,1)==0
error('Khong the phan tich'); % nếu giá trị đầu tiên của ma trận A bằng 0 thì
xuất ra không thể phân tích
end
for i=1:N
l(i,1)=A(i,1)/u(1,1); % gán các trị vào ma trận l bằng công thức A(i,1)/u(1,1)
end
for i=2:N-1
for j=i:N
sum=0; % gán sum=0 để cộng dồn
for k=1:i-1
sum=sum+l(i,k)*u(k,j); % cộng dồn sum của ma trận tam giác trên u
end
u(i,j)=A(i,j)-sum; % tính các thành phần i ≠ j của ma trận tam giác trên u
end
if u(i,i)==0
Trang 8/23
04. BÀI GIẢI
error('Khong the phan tich'); % nếu u(i,i)=0 thì xuất ra không thể phân
tích ma trận
end
for j=i+1:N
sum=0; % gán sum=0 để cộng dồn
for k=1:i-1
sum=sum+l(j,k)*u(k,i); % cộng dồn sum của ma trận tam giác dưới l
end
l(j,i)=(A(j,i)-sum)/u(i,i); % tính các thành phần i≠j của ma trận tam giác
dưới l
end
end
sum=0;
for k=1:N-1
sum=sum+l(N,k)*u(k,N);
end
u(N,N)=A(N,N)-sum; % tính thành phần ở góc dưới của ma trận u
disp('LU decomposition');
disp('L:');
disp([l]);
disp('U:');
disp([u]);
Y=(l^-1)*B;X=(u^-1)*Y; % tính ma trận Y rồi từ Y tính ra ma trận X theo công
thức có sẵn
end
U:
15.0000 17.0000 19.0000
Trang 9/23
04. BÀI GIẢI
0 0.0600 0.1700
0 0 0.0444
Trang 10/23
05. PROBLEM 3 - Given a football in the figure
L=15 in
The diameter is measured at some points and given in the table:
a. Express the formula in integral form with respect to d, z, L to estimate the surface area
and the volume of the football.
b. Using the composite trapezoidal and the composite Simson’s methods to find the
surface area and the volume of the football.
Trang 11/23
06. BÀI GIẢI
6. BÀI GIẢI
Thực chất của là ta đã thay hàm f(x) bằng hàm nội suy
p(x) = (y0 + Δy0/h)* (x-x0) = y0 + Δy0* (x – x0)/h
Đặt t =( x – x0)/h, hay x = x0 + th ta có dx = hdt
Như vậy
Để tính tích phân của hàm f(x) ta coi khoảng nối 3 điểm liên tiếp nhau là 1 đoạn
(như vậy qua 2n+1 điểm ta có n đoạn), đoạn thứ i(i =0,1,...,n) gồm các điểm x2i,
x2i+1, x2i+2, và trong mỗi đoạn con ta dùng đa thức nội suy bậc 2 p2(x).
Giả sử các điểm của một đoạn con là x0,x1,x2 và các giá trị f(x) tương ứng là y0,
y1, y2 , ta có:
trong đó
Trang 13/23
06. BÀI GIẢI
Như vậy
Tính tích phân xấp xỉ cho từng đoạn [x0,x2], [x2,x4], ... ,[x2n-2,x2n] và cộng lại ta có:
Trang 14/23
06. BÀI GIẢI
Trang 15/23
07. CODE
7. CODE
Problem 1
b.
+ Phương pháp Secant:
function[A]=Secant(f,x0,x1,E)
syms x
X(1)=x0;X(2)=x1;
i=3;
while abs(x1-x0)>E
X(i)=X(i-1)-subs(f,X(i-1))*(X(i-1)-X(i-2))/(subs(f,X(i-1))-subs(f,X(i-2)));
x1=X(i);
x0=X(i-1);
i=i+1;
end
A=X(i-1);
end
+ Phương pháp chia đôi:
function [xn] =Tosection(f,a,b,E)
format short
fa=subs(f,a);
x=[];
fx=[];n=0;
while abs((b-a)/(2^(n)))>E
c=a+(b-a)/2;
fc=subs(f,c);
x=[x;c];fx=[fx,fc];
if fa*fc>0,a=c;fa=fc;
else
b=c;
end
n=n+1;
end
fx=double(fx');xn=x(n);
end
b. Phương pháp lặp đơn
function [xn]=iteration(g,x0,a,b,E)
format short
D=diff(g,1);q1=subs(D,a);q2=subs(D,b);
if q2>q1
q=q2;
else q=q1;
end
if (q<0)||(q>=1), error('Khong la ham co.');end
Trang 16/23
07. CODE
x=[];x=[x;x0];
x1=subs(g,x0);
x=[x;x1];xe=x0;
while E<abs(xe-x1)
xe=x0;
x1=subs(g,x0);
x=[x;x1]; x0=x1;
end
x=double(x);
xn=x(size(x,1));
end
Problem 2
Problem 2
function[X]=LUFTf(A,B)
N=size(A,1);
l=zeros(N);u=l;
for i=1:N
l(i,i)=1;
end
for j=1:N
u(1,j)=A(1,j);
end
if u(1,1)==0
error('Khong the phan tich');
end
for i=1:N
l(i,1)=A(i,1)/u(1,1);
end
for i=2:N-1
for j=i:N
sum=0;
for k=1:i-1
sum=sum+l(i,k)*u(k,j);
end
u(i,j)=A(i,j)-sum;
end
Trang 17/23
07. CODE
if u(i,i)==0
error('Khong the phan tich');
end
for j=i+1:N
sum=0;
for k=1:i-1
sum=sum+l(j,k)*u(k,i);
end
l(j,i)=(A(j,i)-sum)/u(i,i);
end
end
sum=0;
for k=1:N-1
sum=sum+l(N,k)*u(k,N);
end
u(N,N)=A(N,N)-sum;
disp('LU decomposition');
disp('L:');
disp([l]);
disp('U:');
disp([u]);
Y=(l^-1)*B;X=(u^-1)*Y;
End
Problem 3
Problem 3
+ Phương pháp hình thang:
function [y]= Trapezxytosyms(f,X,Y)
format short
syms x z
h=X(2)-X(1);
n=size(X,2);
y=0;
for i=1:n
if (i>1) && (i<n)
y=y+h*subs(subs(f,z,X(i)),x,Y(i));
else
y=y+0.5*h*subs(subs(f,z,X(i)),x,Y(i));
end
end
y=double(y);
end
Trang 18/23
07. CODE
n=size(X,2);H=Y(2)-Y(1);
yt=0;
yt=yt+subs(subs(f,x,X(1)),z,Y(1));
yt=yt+subs(subs(f,x,X(n)),z,Y(n));
for i=2:n-1
if rem(i,2)==0
B=4;
else B=2;
end
yt=yt+B*subs(subs(f,x,X(i)),z,Y(i));
end
yt=double(yt*H/3);
end
Tổng hợp
Code tổng hợp 3 problem
function[]=Bai1()
syms h r L x z
V=((r^2)*acos((r-h)/r)-(r-h)*sqrt(2*r*h-h^2))*L;
disp('>Problem 1');
v=subs(subs(V,r,2),L,5);
ha=vpasolve(v==8,h);
fprintf('h duoc xac dinh boi ham co san trong matlab: %f(m)\n',ha);
hb=Tosection(subs(((r^2)*acos((r-h)/r)-(r-h)*sqrt(2*r*h-h^2)),r,2)-8/5,0,2,10^-5);
fprintf('b. h xac dinh boi phuong phap chia doi: %f(m)\n',hb);
hc=Secant(subs(((r^2)*acos((r-h)/r)-(r-h)*sqrt(2*r*h-h^2)),r,2)-8/5,0,2,10^-5);
fprintf('h xac dinh boi phuong phap Secant: %f(m)\n',hc);
hC=iteration(2*(1+cos((4*pi+(h-2)*sqrt(4*h-h^2)-(8/5))/4)),0.5,0.5,1,10^-5);
fprintf('c. h xac dinh boi phuong phap lap don: %f(m)\n',hC);
hd=NR(subs(((r^2)*acos((r-h)/r)-(r-h)*sqrt(2*r*h-h^2)),r,2)-8/5,2,10^-5);
fprintf('d.h xac dinh boi phuong phap Newton - Raphson: %f(m)\n',hd);
disp('>Problem 2');
SP=LUFTf([15 17 19;0.3 0.4 0.55;1 1.2 1.5],[3890;95;282]);
fprintf('Chi tiet 1: %f\nChi tiet 2: %f\nChi tiet 3: %f\n',SP(1),SP(2),SP(3));
disp('>Problem 3');
Z=[0 1.5 3 4.5 6 7.5 9 10.5 12 13.5 15];
d=[0 2.9 4.8 5.8 6.2 6.7 6.2 5.8 4.8 2.9 0];
fprintf('a.Dien tich be mat S = tich phan 2pi*r*dz from 0 to L\nThe tich vat the V = tich phan pi*r*r*dz tu 0 den
L\n');
ST=Trapezxytosyms(2*pi*x,Z,d*0.5);
VT=Trapezxytosyms((pi*x^2),Z,d*0.5);
fprintf('b.Theo Hinh thang\nS = %f(in^2)\nV = %f(in^3)\n',ST,VT);
S=simptablerf(2*pi*x,d*0.5,Z);
V=simptablerf((pi*x^2),d*0.5,Z);
fprintf('b.Theo Simpson\nS = %f(in^2)\nV = %f(in^3)\n',S,V);
end
Trang 19/23
07. CODE
Hình 1
Hình 2
Trang 20/23