Bài giảng Tin học (Phần 1: Tin học ứng dụng) - Chương 1: Các phương pháp tính số cung cấp cho người đọc các kiến thức: Đạo hàm số, tích phân số, giải phương trình và hệ phương trình tuyến tính, tìm nghiệm các phương trình phi tuyến. Mời các bạn cùng tham khảo nội dung chi tiết.
Ngo Van Thanh, IOP 11/2011 Phần II Tin học ứng dụng Chương 1: Các phương pháp tính số (LT: 5, TH:5) Đạo hàm số Tích phân số Giải phương trình hệ phương trình tuyến tính Tìm nghiệm phương trình phi tuyến 1.1 Đạo hàm số Định nghĩa: Đạo hàm dạng điểm: Đạo hàm dạng điểm (End-Point): Hoặc (Mid-Point) Đạo hàm dạng điểm (Mid-Point): Hoặc (End-point) Đạo hàm bậc 2: Đạo hàm dạng điểm (Mid-Point): 1.2 Tích phân số Phương pháp Newton phương pháp Simpson Phương pháp FIT trực tiếp: Các hệ số an xác định phương pháp khử Gauss Biểu thức Newton-Cotes: Chia nhỏ miền lấy tích phân (a, b) thành n + điểm Đa thức nội suy Lagrange bậc n hàm f : Quy tắc hình thang (Trapezium) Đa thức bậc 1, Quy tắc Simpson Đa thức bậc 2, Phương pháp tổ hợp MidPoint Chia miền tích phân thành n + khoảng, Phương pháp tổ hợp hình thang Chia miền tích phân thành n khoảng, Phương pháp tổ hợp Simpson Chia miền tích phân thành n khoảng, Phương pháp Monte-Carlo Tích phân nhiều lớp Tích Phân nhiều lớp: Lấy tích phân theo phương pháp tổ hợp Simpson: Chia miền tích phân thành n m khoảng nbb=0 x=x1 dx=(x2-x1)/n fp=fx(x) i=1,n !Loop over all intervals x=x+dx fc=fx(x) if(fc*fp.le.0.) then nbb=nbb+1 xb1(nbb)=x-dx xb2(nbb)=x if(nbb.eq.nb)goto endif fp=fc enddo continue nb=nbb END SUBROUTINE zbrak Phương pháp phi đạo hàm Phương pháp chia đôi (bisection method) Tìm nghiệm nhanh phương pháp khoanh vùng nghiệm Có độ xác cao Chỉ tìm nghiệm khoảng (a, b) Xét khoảng (a, b) mà phương trình phi tuyến có nghiệm, tức Chọn điểm c điểm (a, b) Nếu f (c) dấu với f (a) thay khoảng (a, b) (c, b) Nếu f (c) dấu với f (b) thay khoảng (a, b) (a, c) Thực qua trình lặp số bước đó, khoảng chia đơi bé thừa số cho trước (sai số) fmid=func(x2) f=func(x1) if (f*fmid >= 0.0) write(6,*) 'rtbis:root must be bracketed„ if (f < 0.0) then rtbis=x1 dx=x2-x1 else rtbis=x2 dx=x1-x2 end if j=1,MAXIT !Bisection loop dx=dx*0.5 xmid=rtbis+dx fmid=func(xmid) if (fmid 0.0) or & (fl < 0.0 and fh < 0.0)) & write(6,*)'root must be bracketed in rtsafe' if (fl == 0.0) then rtsafe=x1 RETURN else if (fh == 0.0) then rtsafe=x2 RETURN else if (fl < 0.0) xl=x1 xh=x2 else xh=x1 xl=x2 end if rtsafe=0.5*(x1+x2) !Initialize the guess for root, dxold=abs(x2-x1) !the “stepsize before last,” dx=dxold !and the last step call funcd(rtsafe,f,df) Chương trình: i=1,ntrial call usrfun(x,fvec,fjac) ! User subroutine supplies function values at ! x in fvec and Jacobian matrix in fjac if (sum(abs(fvec)) abs(dxold*df) ) then ! Bisect if Newton out of range, or not decreasing fast enough dxold=dx dx=0.5*(xh-xl) rtsafe=xl+dx if (xl == rtsafe) RETURN !Change in root is negligible else !Newton step acceptable Take it dxold=dx dx=f/df temp=rtsafe rtsafe=rtsafe-dx if (temp == rtsafe) RETURN end if if (abs(dx) < xacc) RETURN !Convergence criterion call funcd(rtsafe,f,df) if (f < 0.0) then !Maintain the bracket on the root xl=rtsafe else xh=rtsafe end if end write(6,*) 'rtsafe:exceeded maximum iterations' END FUNCTION rtsafe ... a(j +1: n,j)/a(j,j) * i =1, j -1 a(i,j)=a(i,j)-sum(a(i ,1: i -1 ) *a (1: i -1 , j)) enddo * i=j,n !This is i = j and i = j +1: ::N a(i,j)=a(i,j)-sum(a(i ,1: j -1 ) *a (1: j -1 , j)) enddo enddo END SUBROUTINE ludcmp Chương. .. a(j +1: n,j)=a(j +1: n,j)/a(j,j) !Divide by the pivot element a(j +1: n,j +1: n)=a(j +1: n,j +1: n) - & outerprod(a(j +1: n,j),a(j,j +1: n)) !Reduce remaining submatrix end END SUBROUTINE ludcmp Nghịch đảo ma trận Xét hệ phương... :: f1,f2 if (x1 == x2) RETURN f1=func(x1) f2=func(x2) succes=.true j =1, NTRY if ((f1 > 0.0 and f2 < 0.0) or & (f1 < 0.0 and f2 > 0.0)) RETURN if (abs(f1) < abs(f2)) then x1=x1+FACTOR*(x1-x2) f1=func(x1)