Upload
lee-ein
View
1.327
Download
10
Embed Size (px)
DESCRIPTION
Citation preview
I. Nghiệm của phương trình phi tuyến (phương pháp chia đôi)
1. Code:
program Bisection implicit none real::a,b,c,eps,F 1 print*,'Nhap khoang phan ly nghiem (a,b),sai so eps' read*,a,b,eps if (b<a) then go to 1 end if if (abs(a-b)<0.00001) then if (abs(F(a))<0.00001) then print*,'Nghiem x=',a stop else print*,'Khong co nghiem trong khoang nay' stop end if end if if (F(a)*F(b)>0.00001) then print*,'Khong co nghiem trong khoang nay' stop end if if (abs(F(a))<0.00001)then print*,'nghiem x=',a else if (abs(F(b))<0.00001)then print*,'nghiem x=',b else do while (abs(b-a)>eps) c=(a+b)/2 if(abs(F(c))<0.00001)then print*,'nghiem x=',c else if(F(a)*F(c)>0.00001)then a=c else b=c end if end do print*,'Nghiem x=',a,'hoac nghiem x=',b end if end program Bisection function F(x) real::F,x F=x-2 end function F
Ôn tập Phương pháp số và lập trình
2
2. Sơ đồ
‘Không có nghiệm trong khoảng này’
a = c
b = c
a > b
a = b
F(a)*F(b) > 0
F(a) = 0
F(b) = 0
abs(b – a) > eps
c = (a + b)/2
abs(F(c)) < 0,00001
F(a)*F(c) < 0
F(b)*F(c) < 0
‘Nghiệm x =’,a
‘Nghiệm x =’,b
‘Nghiệm x =’,c
‘Nghiệm x =’,a,’hoặc x =’,b
END
BEGIN
Input a, b, eps
F(a) = 0
‘Nghiệm x =’,a T
F T
F
T
F T
T
T
T
T
T
F
F
F
T
F
Ôn tập Phương pháp số và lập trình
3
II. Tích phân hình thang:
1. Code:
program Integral print*, 'CHUONG TRINH TINH TICH PHAN' call Sum(a,b,eps,S) print*,'Tich phan co gia tri',S end program subroutine Sum(a,b,eps,S) implicit none integer n,i real a,b,eps,x,S1,S,h 1 print*,'Nhap vao 2 can cua tich phan va sai so cho phep' read*,a,b,eps if ( b<a) then print*,'Nhap lai gia tri a va b' go to 1 end if n=int((b-a)/eps) + 1 h=(b-a)/n S1=0 do i=1,n-1 x=a+i*eps S1=S1+F(x) end do S=h*((F(a)+F(b))/2+S1) contains function F(x) real F,x F=x**2 end function F end subroutine
Ôn tập Phương pháp số và lập trình
4
2. Sơ đồ:
i = i + 1
BEGIN
Input: F(x), a, b, eps
a < b
n = int((b – a)/eps) + 1 h = (b – a)/n
S1 = 0 i = 1
i <= (n–1)
x=a+i*eps S1=S1+F(x) S=h*((F(a)+F(b))/2+S1)
Output: S
END
T
F
T
F
Ôn tập Phương pháp số và lập trình
5
III. Phương pháp Euler hiện:
1. Code
PROGRAM euler_hien REAL::xo,yo,a,h,y,x,F INTEGER::i,n PRINT*,'Nhap xo =?' READ*,xo PRINT*,'Nhap y(xo)=?' READ*,yo PRINT*,'Nhap gia tri a cua ham y(a) can tinh:?' READ*,a PRINT*,'Nhap buoc nhay h=?' READ*,h n=int((a-xo)/h) x=xo y=yo DO i=1,n y=y+h*F(x,y) x=xo+h*i ENDDO PRINT*,'Gia tri cua y(a)=',y ENDPROGRAM !______________________________________________ FUNCTION F(x,y) REAL::F,x,y F=y**2-x**2 END FUNCTION F
Ôn tập Phương pháp số và lập trình
6
2. Sơ đồ
i = i + 1
BEGIN
Input: F(x), xo, yo, a, h
i <= n
y = yo + h*F(x,y) x = xo + h*i
Output: y
END
T
F
n = int((a – xo)/h) x = xo y = yo i = 1
Ôn tập Phương pháp số và lập trình
7
IV. Phương pháp Euler cải tiến
1. Code
PROGRAM euler_caitien REAL::xo,yo,a,h,y,x,k,g,F INTEGER::i,n PRINT*,'Nhap xo =?' READ*,xo PRINT*,'Nhap y(xo)=?' READ*,yo PRINT*,'Nhap gia tri a cua ham y(a) can tinh:?' READ*,a PRINT*,'Nhap buoc nhay h=?' READ*,h n=int((a-xo)/h) x=xo y=yo DO i=1,n g=y+h*F(x,y) k=F(x,y) x=xo+h*i y=y+h/2*(k+F(x,g)) ENDDO PRINT*,'Gia tri cua y(a)=',y ENDPROGRAM !______________________________________________ FUNCTION F(x,y) REAL::F,x,y F=y**2-x**2 END FUNCTION F
Ôn tập Phương pháp số và lập trình
8
2. Sơ đồ
i = i + 1
BEGIN
Input: F(x), xo, yo, a, h
i <= n
g=y+h*F(x,y) k=F(x,y) x=xo+h*i y=y+h/2*(k+F(x,g))
Output: y
END
T
F
n = int((a – xo)/h) x = xo y = yo i = 1
Ôn tập Phương pháp số và lập trình
9
V. Đạo hàm tại 1 điểm:
1. Code
2. Sơ đồ
PROGRAM Derivative REAL::x,eps,F,G PRINT*,'Nhap vi tri x can tinh dao ham:' READ*,x PRINT*,'Nhap sai so toi da cua phep toan deltax =' READ*,eps G=(F(x+eps)-F(x))/eps PRINT*,'Gia tri dao ham cua ham F(x) tai diem x=',x,'la',G END PROGRAM Derivative FUNCTION F(x) Real::F,x F=x**2 END FUNCTION F
BEGIN
Input: F(x), x, eps
Output: G
END
G=(F(x+eps)-F(x))/eps