Thờng ta không biết số đúng A nên ta thờng tìm đại lợng sao choa * Chữ số có nghĩa: Những chữ số có nghĩa của một số là những chữ số của số đó kể từ chữ số khác không đầu tiên tính từ
Trang 1Phần I: tóm tắt lý thuyết
1.1 Sai số tuyệt đối và sai số tơng đối
1.1.1 Sai số tuyệt đối và sai số tơng đối
Xét đại lợng đúng A có giá trị gần đúng là a Ta gọi a A là sai số tơng
đối của a Thờng ta không biết số đúng A nên ta thờng tìm đại lợng sao choa
* Chữ số có nghĩa: Những chữ số có nghĩa của một số là những chữ số của số đó
kể từ chữ số khác không đầu tiên tính từ trái sang phải
* Chữ số đáng tin: Cho a R , ta luôn biểu diễn số a dới dạng:
m n a
và gọi là chữ số đáng
nghi nếu 1 1
.102
m n a
Trang 2Cho hàm số khả vi uf x x( , , , )1 2 x n và giả sử biết sai số tuyệt đối giớihạn của các x i i( 1, )n tơng ứng là ( 1, )
Trang 3Đ
5) Chọn xấp xỉ ban đầu x0
6) Tính x n (x n1), n1,2,3, cho tới khi x n x n1 thì dừng
7) Kết quả với sai số x n
1
n
q x
*) Chú ý: Trong thực tế ngời ta dừng quá trình tính khi x n x n1
1.2.3 Phơng pháp Niutơn (tiếp tuyến)
Sơ đồ tóm tắt phơng pháp tiếp tuyến
1) Cho phơng trình f x ( ) 0
2) ấn định sai số cho phép
3) Xác định khoảng phân ly nghiệm ( , )a b trong đó f ' & "f không đổi dấu.4) Chọn x0
S
Trang 5Sai số 1 f x'( )1
x
m
, trong đó 0m f x'( ) , x( , )a b
1.3 Tính gần đúng nghiệm của một hệ đại số tuyến tính
Một hệ đại số tuyến tính có thể có m phơng trình n ẩn ở đây ta chỉ xét những hệ
để hạn chế bớt sai số tính toán ta chọn trong các số a a11, 21, ,a số có giá trị n1
tuyệt đối lớn nhất làm trụ thứ nhất gọi là trụ tối đại thứ nhất để khử x Khi khử1
Trang 61) Cho hệ phơng trình tuyến tính Ax=b
2) ấn định sai số cho phép , 0
3) Đa hệ Ax=b về hệ tơng đơng x Bx g sao cho điều kiện
p
p
B x
Trang 7Xét tích phân xác định ( )
b
a
I f x dx Nếu f x( ) liên tục trên a b và có nguyên,
hàm là F(x) thì công thức Niutơn – Lépnit cho: ( ) ( ) ( )
b
a
I f x dx F b F a
Nhng nếu không tìm đợc nguyên hàm của f x( ) ở dạng sơ cấp hoặc nguyên hàm
đó quá phức tạp thì tích phân I phải tính gần đúng Sau đây là hai phơng pháptính gần đúng tích phân xác định:
4) Tính nh 3) của phơng án 1
5) Tính I nh 4) ở phơng án 1 T
Trang 86) Kết quả I với sai số I T I I T
n
, 0,( ), 0,
4
(4)
( ), max ( ) , ,180
6) Kết quả I với sai số I S I I S
1.5 Tính gần đúng nghiệm của bài toán Côsi đối với phơng trình vi phân ờng.
th-* Phát biểu bài toán Côsi đối với một phơng trình vi phân cấp 1
Cho khoảng x X Tìm hàm số 0, y y x( ) xác định trên x X và thoả mãn0,
0
' ( , ),
y f x y x x X , y x( )0
Trang 9Trong phần này ta sử dụng hai phơng pháp tính là ơle và phơng pháp Kutta.
Phơng pháp này có công thức tính nh sau:
Đặt u0
Khi đã biết u thì tính i u i1 nh sau:
Trang 112 0,97.105,135
x x
cña hai sè xÊp xØ viÕt theo c¸ch thø hai: x 1 5,735;
x u x
Trang 123.1.2 Bài tập phần tìm nghiệm gần đúng của một phơng trình
Bài 1 Tìm nghiệm gần đúng của phơng trình: 5x3 20x bằng phơng3 0pháp lặp với độ chính xác 10 4, biết khoảng phân ly nghiệm là (0, 1)
Hớng dẫn: Biến đổi phơng trình đã cho về phơng trình tơng đơng x( )x Cónhiều cách, chẳng hạn:
' ( )x 15x 19 1
trên 0, 1 ; 2
2 3
4' ( )
20 33
Để tìm nghiệm gần đúng của phơng trình với độ chính xác 10 4, ta phải dùng
đánh giá sai số của nghiệm là 1 10 4
Trang 13Vậy ta thực hiện quá trình lặp bằng cách chọn giá trị x bất kỳ thuộc 0 0, 1 ,
chẳng hạn x 0 0,75 Sau đó tính x n, n 1,2,3, theo công thức (*), cho đếnkhi điều kiện (**) đợc thoả mãn Kết quả tính toán nh sau:
(1 ).10 (1 0,75).10
3,3.100,75
Trang 14(1 ).10 (1 0,75).10
3,3.100,75
Trang 15Bài 5 Dùng phơng pháp Niutơn tìm nghiệm gần đúng của phơng trình:
Vậy nghiệm gần đúng của phơng trình với độ chính xác 10 5 là 0,2981
3.1.3 Bài tập phần tìm nghiệm gần đúng hệ phơng trình đại số tuyến tính
Bài 1 Dùng phơng pháp Gaoxơ giải hệ
Trang 16Để khử x , ta chọn 2 a 22 27,6793 làm trụ tối đại Chia phơng trình (4) cho27,6793 ta đợc: x2 0,1657x3 0,4583 **
Nhân phơng trình (**) với 5,64 và trừ vào phơng trình (5) ta đợc kết quả:
3
0,1447 0,1738 0,3361 (*)27,6793 4,586 12,6864 (4)
1,15 2,70 3,58 39,72
0,216 0,351 5,4820
Trang 17Giải ngợc các phơng trình trong hệ trên thu đợc nghiệm gần đúng của hệ phơngtrình đã cho là:
Trang 18(2) (1)
0 0,06 0,02 2 2 1,920,03 0 0,05 3 3 3,190,01 0,02 0 5 5 5,04
Trang 191 2 3
Trang 20Bài 1 Tính gần đúng tích phân
1 2
dx I
I
Sau đây ta dùng công thức hình thang để tính:
Chia đoạn 0; 1 thành n=10 đoạn con bằng nhau với h=0,1 Ta có bảng sau
x
2
1( )
Trang 2121,265 1,304 1,342 1,378) 1,218
1
2 0
h
h
Chọn h 0,5 (suy ra, h 4 0,0625, điều này không ảnh hởng đến quá trình tính)
Ta chia đoạn 0; 1 thành 2 phần là đủ: x0 0; x10,5 & x2 1
Trang 221 1,0000 4.1,1180 1,4142 1,1477
3
3.1.5 Bài tập tìm gần đúng nghiệm của phơng trình vi phân thờng
Bài 1 Sử dụng phơng pháp ơle, tìm các giá trị của hàm số y xác định bởi phơng
1 01,1 0,1 ( , ) 1,1 0,1 1,183
1,1 0,11,183 0,2 ( , ) 1,183 0,1 1,254
1,183 0,21,254 0,3 ( , ) 1,254 0,1 1,315
y x y y Hãy tìm nghiệm gần đúng bằngphơng pháp ơle trên 0; 1 , chọn bớc h=0,1
Hớng dẫn
Trang 2300,050,10050,15230,20670,26270,32320,38830,45930,5374
00,0050,01010,01520,02070,02630,03230,03880,04590,0537
Bài 3 Cho bài toán Côsi sau:
' , (0) 1
y x y y Hãy tìm nghiệm gần đúng bằng phơng pháp Runge-kutta trên 0; 0,5 , chọn bớc
1
61
Trang 240,10,110,11050,1210
0,10000,22000,22100,12101
.0,6620 0,1103
0,150,150,20
1,11031,17081,17631,249
0,12100,13211,32260,1443
0,12100,26420,26520,14431
.0,7947 0,1324
2 0,20
0,250,250,30
1,24271,31491,32091,3998
0,14430,15650,15710,1700
0,14430,31300,31420,17001
.0,9415 0,1569
3 0,30
0,350,350,40
1,39961,48461,49041,5836
0,17000,18350,18400,1984
0,17000,36700,36800,19841
.1,1034 0,1840
Trang 254 0,40
0,450,450,50
1,58361,68281,69021,7976
0,19840,21330,21400,2298
0,19840,42660,42800,22981
Hãy xác định số các chữ số đáng tin trong a b c, ,
Bài 2 Hãy xác định giá trị của hàm số dới đây cùng với sai số tuyệt đối và sai sốtơng đối ứng với những giá trị của các đối số cho với mọi chữ số có nghĩa đều
Bài 3 Hãy xác định sai số tơng đối giới hạn , sai số tuyệt đối giới hạn a vàa
số chữ số đáng tin của cạnh a của hình vuông, biết diện tích hình vuông
Trang 26a) x4 3x 20 0 b) x3 2x 5 0
3.2.3 Tìm nghiệm gần đúng của một hệ phơng trình đại số tuyến tính
Bài 1 Giải các hệ phơng trình sau bằng phơng pháp Gaoxơ, các phép tính lấy
Trang 27bằng phơng pháp lặp đơn cho tới khi ( ) ( 1) 4
x x x
dx I
b) Đánh giá sai số của giá trị gần đúng tìm đợc
Bài 3 Tính theo công thức Simsơn các tích phân sau:
a)
1
2 0
( 81
x dx I
Bài 1 Bằng phơng pháp ơle, tìm 4 giá trị của hàm y xác định bởi các phơng
trình sau:
Trang 29else a=c;
c=(a+b)/2;
}printf(“\n\n Nghiem pt: %.3f”,c);
}else
if (f(a)*f(b)>0) printf(“(%f, %f) khong phai la khoangnghiem”,a,a);
else
if (f(a)==0) printf(“\n Nghiem pt: %3f”,a);
else printf(“\n Nghiem pt: %3f”,b);
printf(“\n\n Ban tiep tuc ko(c/k)?”);
Trang 30{ float a,b; char tt;
a=b-f(b)/fdh(b);
printf(“\n%.3f %.3f %f”,b,-f(b)/fdh(b),a);
}while (fabs(a-b)>=1e-3);
printf(“\n Nghiem pt: %.3f’,a);
printf(“\n Tiep tuc ko(c/k)?”);
void nhap(float *a, int n,int m);
void xuatmt(float *a, int n,int m);
printf(“\n Nhap n=”); scanf(“%d”,&n);
printf(“\n Nhap he so cua he pt:\ n”); scanf(“%d”,&n);
Trang 31for (i=1;j<=n;++i)
for (j=1;j<=n+1;++j) {printf(“pt[%d%d]=”,i,j);
scanf(“%f”,&m);
a[i][j]=m;
}for (i=1;i<=n;i++) {
printf(“\n”);
for (j=1;j<=n+1;j++) printf(“%.3f “,a[i][j]);
}/* bien doi A ve ma tran tam giac tren*/
for (i=1;i<=n;i++)
for (j=i+1;j<=n;j++) {m=-a[j][i]/a[i][i];
for (k=i;k<n+1;k++) a[j][k]+=a[i][k]*m;
}printf(“\n”);
for (i=1;i<=n;i++) {
printf(“\n”);
for (j=1;j<=n+1;j++) printf(“%.3f “,a[i][j]);
}/* tim nghiem theo quy trinh nguoc*/
for (i=n;i>=1;i ) {s=a[i][n+1];
for (k=i+1;k<=n;k++) s-=a[i][k]*x[k];
x[i]=s/a[i][i];
}printf(“\n Nghiem cua he pt:”);
for (i=1;i<=n;i++) printf(“%.3f “,x[i]);
printf(“\n \n Ban tiep tuc ko(c/k)?”);
tt=getch();
If (tt!=‘c’) break;}
}
/* Ham nhap mang a(m,n)*/
void nhap(floatf *a, int n,int m)
{ int i,j;
printf(“\n Nhap he so cua he pt:\ n”);
for (i=1;i<=m;i++)
Trang 32for (j=1;j<=n;j++) {printf(“pt[%d%d]=”,i,j);
scanf(“%f”,a+i*n+j);
}
}
/* Ham xuat mang a(m,n)*/
void xuatmt(floatf *a, int n,int m)
printf(“\n Nhap bac da thuc:”); scanf(“%d”,n);
printf(“\n Nhap he so cua ham da thuc:\ n”);
for (i=0;i<=*n;++i) {
printf(“a[%d]=”,i);
scanf(“%f”,a+i);