MỤC LỤC
MỤC LỤC 1
CHƯƠNG 1: MA TRẬN–ĐỊNH THỨC VÀ HỆ PHƯƠNG TRÌNH TUYẾN TÍNH 2
1.1.MA TRẬN-ĐỊNH THỨC 2
1.1.1.MA TRẬN 2
1.1.2.ĐỊNH THỨC 3
1.2.HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH 7
1.2.1.DẠNG TỔNG QUÁT CỦA HỆ PHƯƠNG TRÌNH TUYẾN TÍNH 7
1.2.2.GIẢI HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH 10
1.2.3.PHƯƠNG PHÁP GIẢI HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH 14
CHƯƠNG 2 : THUẬT TOÁN-GIẢI THUẬT 19
2.1 ĐỊNH THỨC MA TRẬN 19
2.1.1 THUẬT TOÁN 19
2.1.2 GIẢI THUẬT 20
2.2 HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH 21
2.2.1 THUẬT TOÁN CRAMER 21
2.2.2 GIẢI THUẬT 21
CHƯƠNG 3: CHƯƠNG TRÌNH 23
3.1. TÍNH ĐỊNH THỨC VÀ GIẢI HỆ PHƯƠNG TRÌNH TUYẾN TÍNH 23
3.2HÌNH ẢNH 32
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
CHƯƠNG 1: MA TRẬN–ĐỊNH THỨC VÀ HỆ
PHƯƠNG TRÌNH TUYẾN TÍNH
1.1. MA TRẬN-ĐỊNH THỨC
1.1.1. MA TRẬN
a. Định nghĩa
Một bảng số chữ nhật có m hàng, n cột gọi là ma trận cỡ m x n, ký hiệu là :
A = [a
ij
]
mxn
Ma trận chéo: là ma trận vuông cấp n mà tất cả các phần tử nằm ngoài đường
chéo đều bằng 0, tức là a
ij
= 0 nếu i ≠ j.
Ma trận đơn vị: là ma trận chéo mà tất cả các phần tử nằm trên đường chéo
chính đều bằng 1 và ký hiệu là I.
Ma trận không: là ma trận mà tất cả các phần tử của nó đều bằng không. Ma
trận không ký hiệu là O.
Hai ma trận bằng nhau: Hai ma trận A và B được gọi là bằng nhau, ký hiệu
A = B , nếu chúng cùng cỡ và các phần tử có cùng vị trí bằng nhau, tức là:
A= B
b. Các phép toán về ma trận.
Phép cộng hai ma trận cùng cỡ.
Phép nhân ma trận với một số.
Phép nhân ma trận với ma trận.
Ma trận chuyển vị.
1.1.2. ĐỊNH THỨC
Xét ma trận vuông cấp n:
A=
3
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
Từ ma trận A, bỏ đi hàng i và cột j ta thu được ma trận vuông cấp n-1. Ta ký
hiệu nó là M
ij
và gọi nó là ma trận con tương ứng với phần tử a
ij
.
a. Định nghĩa
Định thức của ma trận A, ký hiệu là det(A) và được định nghĩa dần như sau: A là
ma trận cấp 1: A = [a
22
gọi là các phần tử của định thức
Chú ý:
Định thức cấp 2 bằng tích đường chéo chính trừ đi tích đường chéo phụ.
Để ký hiệu định thức, người ta dùng 2 gạch đứng đặt ở 2 bên.
Ví d :ụ
b. Các tính chất của định thức
Tính chất 1: Định thức của ma trận chuyển vị A
t
bằng định thức của ma trận A,
tức là : det(A
t
) = det(A).
4
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
Tính chất 2: Đổi chỗ 2 hàng( hay 2 cột ) của một định thức, ta được một định
thức mới bằng định thức cũ đổi dấu.
Tính chất 3: Một định thức có 2 hàng (hay 2 cột ) như nhau thì bằng 0.
Tính chất 4:
• Tính det(A) bằng cách khai triển theo hàng thứ i.
Det(A) = (-1)
i+1
a
i1
.det(M
i1
) +(-1)
i+2
a
i2
không.
Tính chất 6: Khi ta nhân các phần tử của một hàng( hay một cột) với cùng một số
thực k thì ta được một định thức mới bằng định thức cũ nhân với k.
Hệ quả: Khi các phần tử của một hàng (hay một cột) có một thức số chung, ta có
thể đưa thừa số chung đó ra ngoài dấu ngoặc định thức.
Tính chất 7: Một định thức có 2 hàng( hay 2 cột ) tỷ lệ thì bằng không.
Tính chất 8: Khi tất cả các phần tử của một hàng (hay một cột ) có dạng tổng của
2 số hàng thì định thức đó có thể phân tích thành tổng của 2 định thức, chẳng hạn
như:
Tính chất 9: Một định thức có một hàng (hay một cột) là tổ hợp tuyến tính của
các hàng khác(hay cột khác) thì định thức ấy bằng không.
5
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
Tính chất 10: Khi ta cộng bội k của hàng khác ( hay bội k của cột này vào cột
khác ) thì ta được một định thức mới bằng một định thức cũ.
Tính chất 11: Định thức của ma trận tam giác trên bằng tích các phần tử chéo.
c. Cách tính định thức bằng phép biến đổi sơ cấp
Ta sử dụng các tính chất của định thức để biến đổi một định thức về dạng đơn
giản như: định thức ma trận tam giác trên, định thức ma trận tam giác dưới.
Các phép biến đổi về hàng ma ta hay sử dụng đó là:
- Nhân 1 hàng với một số thực k ≠0(tính chất 6).
- Đổi chỗ 2 hàng(tính chất 2).
- Cộng k lần hàng này vào hàng khác(tính chất 10).
Ví dụ:Cho một ma trận cấp 4. Tính định thức bằng cách biến đổi ma trận về dạng
ma trận tam giác trên.
Lấy phần tử là p1=a11, ta chia các phần tử của hàng thứ nhất cho p1=a11 thì
định thức sẽ là: D/p1(theo tính chất 6), và ma trận còn lại là:
Lấy hàng 2 trừ đi hàng 1 đã nhân với a21, lấy hàng 3 trừ đi hàng 1 đã nhân với
a31 và lấy hàng 4 trừ đi hàng 1 đã nhân với a41(thay hàng bằng tổ hợp tuyến tính của
i
là vế phải của phương trình thứ i.
Chú ý:
o Nếu m = n : Hệ (I) trở thành hệ vuông với n phương trình n ẩn.
o Nếu b
j
=0, ∀ i thì hệ (I) gọi là hệ thuần nhất.
Hệ này được viết dưới dạng ma trận là : A.x=b trong đó: A là ma trận được lập
từ các hệ số: A= (a
ij
) mxn
A=
b là vecto cột các số hạng tự do(hay gọi là ma trận vế phải):
8
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
b = =
t
x được gọi là ma trận ẩn(vecto cột các biến):
x = =
t
Hệ phương trình đại số tuyến tính được gọi là:
thuần nhất nếu tất cả các b
i
=
0, i =1, 2, , m.
không thuần nhất nếu có ít nhất một b
i
≠
=
n
và
m
≠
n.
a. Trường hợp m = n
Lúc này ma trận A có dạng:
A=
Định nghĩa: Hệ (I) gọi là hệ Cramer nếu det (A)
≠
0 (ma trận A không suy biến).
Khi đó sẽ tồn tại ma trận nghịch đảo A
-1
.
Định lí (Cramer): Hệ Cramer có nghiệm duy nhất tính bằng công thức:
10
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
i=1,2, n
Chú ý: Từ định lý trên, ta có 2 phương pháp giải hệ phương trình như sau:
Phương pháp 1: Phương pháp ma trân nghịch đảo:
1. Xác địnhma trận hệ số A?
2. Tính ma trận nghịch đảo A
-1
=?
3. Tính ma trận ẩn bởi công thức: x= A
ij
)
mx
n
là ma trận của hệ. Sau khi thêm cột các số hạng tự do b
vào ma
trận A, ta lập được ma trận mở rộng B:
A=
Để giải trường hợp này, ta dựa vào định lí sau:
Định lí (Croneker – Capeli):
Điều kiện cần và đủ để hệ có nghiệm là
hạng của ma trận A bằng hạng của ma
trận mở rộng B. Nếu
r
(
A
)
=
r
(
B
)=
(
A
)=r
(
B
)
=
3
<
n
=
4.
Vậy hệ có vô số nghiệm.
Với ma trận cuối cùng ta có:
Đặt x
4
=
c,ta được:
→
Vậy các nghiệm có dạng:
với mỗi giá trị của c ta có một nghiệm tương ứng.
13
) = 10
= det(A
3
) = -1
Vậy = = =1 ; = = = 2 ; = = = -2
c. Giải hệ phương trình tuyến tính bằng biến đổi sơ cấp ( pp khử Gauss)
Xét hệ phương trình: (II)
Ta lập ma trận mở rông bằng cách từ ma trận A, ta thêm vào vế phải của ma
trận A bởi cột vế phải (ma trận vế phải b) ,tức là:
15
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
= [A|b]=
Phương pháp khử Gauss: ta sử dụng các phép biến đổi sơ cấp về, đó là:
Đổi chỗ 2 hàng (đổi vị trí 2 phương trình cho nhau).
Nhân, chia các phần tử của một hàng với số thực k ≠ 0 (nhân, chia 2 vế của
phương trình với số thực k ≠ 0 ).
Cộng bội k hàng này vào hàng khác ( công bội k phương trình này vào
phương trình khác ) để biến đổi ma trận mở rộng sao cho ma trận A có
trong ma trận về dạng của ma trận tam giác trên.
Sau đó viết lại hệ phương trình đã cho ứng với ma trận mở rộng sau khi đã
biến đổi, rồi giải hệ phương trình bằng cách giải ngược từ dưới lên.
Ví dụ:
Giải:
Quá trình thuận
Bước 1: - Giả sử a11 ≠ 0, chia dòng 1 cho a11. (a11 là phần tử trụ). Hệ đã cho
tương đương với:
16
=
3
2
)1(
1
3
2
1
321
3333231
2232221
)1(
1
)1(
13
)1(
12
−=+−
=+−
=−+
123
22
2
3
=
)1(
23
)1(
22
)1(
1
)1(
13
)1(
12.
0
0
0
1
n
n
nnnn
n
n
n
b
b
b
b
x
x
3
2
3
2
1
2
1
32
32
321
xx
xx
xxx
)1(
)1(
3
)2(
2
)1(
1
3
2
1
)1()1(
3
)1(
2
)1(
3
)1(
33
)1(
32
)2(
2
)2(
23
)1(
1
)1(
−=+−
−=−
=−+
2
11
2
5
2
7
3
1
3
5
2
3
2
1
2
1
32
Với
Khử x2 ở phương trình thứ i=3,4,5,…,n bằng cách:
Dòng i = dòng i – dòng 2 * ai2(1)
Nghĩa là: a(2)ij = a(1)ij-a(2)2j *ai2 , với j=1,2,…,n
và: b(2)i=b(1)i - b(2)2*ai2
Hệ đã cho tương đương với:
Tiếp tục thực hiện như trên cho đến khi đưa được ma trận hệ số về ma trận tam
giác trên. Hệ đã cho tương đương với:
Quá trình nghịch:
18
=
)3(
3
)2(
2
)1(
1
3
2
1
)3(
3
)2(
2
)2(
23
)1(
1
)1(
13
)1(
12.
1 000
100
10
1
n
1
3
5
2
3
2
1
2
1
3
32
321
x
xx
xxx
=
−=−
=−+
2
3
=
12.
00
00
10
1
n
n
nnn
n
n
n
b
b
b
b
x
x
x
x
aa
aa
aa
aaa
xxx
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
Từ phương trình thứ 3, ta có: x3 = 2
Từ phương trình thứ 2, ta có: x2 =-1/3+5/3x3 = 3
Từ phương trình thứ 1, ta có: x1 =3/2-1/2x2+1/2x3 = 1
Vậy nghiệm của hệ là: x1 = 1; x2 = 3; x3 = 2
CHƯƠNG 2 : THUẬT TOÁN-GIẢI THUẬT
2.1 ĐỊNH THỨC MA TRẬN
2.1.1 THUẬT TOÁN
Có rất nhiều phương pháp khác nhau để tính định thức trong ma trận như
gauss,cramer,choleski,…trong đó phương pháp giải đưa ma trận về dạng ma trận tam
giác trên được xem là phương pháp giải chính xác và khối lượng các phép tính ít nhất.
Biến đổi ma trận A về ma trận tam giác trên có dạng:
Gọi a
(k)
kk
là phần tử trụ được chọn trong bước thứ k. Ta có:
19
.)1()det(
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
Trong đó: p là số lần hoán vị các dòng để tìm phần tử trụ
2.1.2 GIẢI THUẬT
detA = 1;
Cho k=1,2,3,…, n.
Với mỗi dòng k
Chọn t sao cho .
Nếu a
tk
=0 thì det(A)=0; dừng thuật toán.
Nếu a
tk
≠ 0 thì làm các việc sau đây:
Nếu t≠k thì đổi chỗ dòng k với dòng t và detA = detA*(-1) ;
Chọn trụ là a
kk.
Chia dòng k cho a
kk
.
Khử a
ik
ở các dòng i (i=k+1, k+2,…) bằng cách: Tính: hệ số = a
ik
.
Dòng i = dòng i – dòng k * hệ số.
Giá trị định thức det(A)=det(A)*a
kk
.
20
Nếu t≠k thì
Đổi chỗ dòng k với dòng t và detA = detA*(-1) ;
Chọn trụ là a
kk
Chia dòng k cho a
kk
;
Khử a
ik
ở các dòng i (i=k+1, k+2,…) bằng cách:
Tính: hệ số = a
ik
Dòng i = dòng i – dòng k * hệ số
Giá trị định thức det(A
k
)=det(A
k
)*a
kk
Nghiệm của hệ là x[i]= det(A
k
)/det(A)
22
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
CHƯƠNG 3: CHƯƠNG TRÌNH
3.1. TÍNH ĐỊNH THỨC VÀ GIẢI HỆ PHƯƠNG TRÌNH TUYẾN TÍNH
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
printf("Nhap ma tran A \n");
for(i=1;i<=n;i++)
{
printf("Dong %d:\n",i);
for(j=1;j<=n;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%f",&a[i][j]);
}
printf("\n");
}
break;
}
case 2:
{
printf("Ma tran a ban dau la:\n");
printf("\n");
for(i=1;i<=n;i++)
24
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
{
for(j=1;j<=n;j++)
printf("%.5f\t",a[i][j]);
printf("\n");
}
break;
}
case 3:
{
d=1;