Tải bản đầy đủ (.doc) (35 trang)

Định thức và ứng dụng giải hệ phương trình tuyến tính

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (439.16 KB, 35 trang )

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


hay A = (a
ij
)
mxn
trong đó: a
ij
là phần tử của ma trận A nằm ở giao điểm
của hàng i và cột j.
Ví dụ 1:
Là ma trận 3x2
Chú ý:
 Khi m=n thì ta gọi ma trân A là ma trận vuông cấp n (gọi tắt là ma trận cấp n).
 A
11,
a
22,
,a
mn
được gọi là các phần tử chéo.
 Đường thẳng đi qua các phần tử chéo được gọi là đường chéo chính.
 Ma trận tam giác trên: là ma trận vuông cấp n mà tất cả các phần tử nằm dưới
đường chéo chính đều bằng 0, tức là a
ij
= 0 nếu i > j.
 Ma trận tam giác dưới: là ma trận vuông cấp n mà tất cả các phần tử nằm ở trên
đường chéo chính đều bằng 0, , tức là a
ij
= 0 nếu i < j.
2
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH

 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

11

] thì det(A) = a
11
|a
11
| = a
11
, gọi là định thức cấp 1.
A là ma trận cấp A=
Thì det(A)= là một số được định nghĩa như sau:
Det(A)= = a
11
a
22
– a
12
a
21

Các số a
11

, a
12

, a
21

, 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

.det(M
i2
) + + (-1)
i+n
a
in
.det(M
in
)
• Tính det(A) bằng cách khai triển theo cột thứ j.
Det(A) = (-1)
1+j
a
1j
.det(M
1j
) +(-1)
2+j
a
2j
.det(M
2j
) + + (-1)
n+j
a
nj
.det(M
nj
)
Tính chất 5: Một định thức có một hàng( hay một cột) toàn là số không thì bằng

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

các hàng còn lại), thì định thức vẫn là D/p1 và ma trận là:
6
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
Lấy giá tri trụ là p2= a’22. Ta chia các phần tử của hàng thứ 2 cho p2 thì định
thức sẽ là: D/(p1p2) và mà phần còn lại là:
Lấy hàng 1 trừ đi hàng 2 đã nhân với a’12, lấy hàng 3 trừ đi hàng 2 đã nhân với
a’32, và lấy hàng 4 trừ đi hàng 2 đã nhân với a’42, ta có định thức vẫn là D/(p1p2) và
ma trận còn lại là:
Tiếp tục lấy hàng 3, hàng 4 làm trụ, ta thu được ma trận cuối cùng là:
Định thức của ma trận này là:
Nên định thức của ma trận A là: D/(p1p2p3p4)
(phương pháp trên còn có thể mở rộng cho ma trận cấp n)
1.2. HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH
1.2.1. DẠNG TỔNG QUÁT CỦA HỆ PHƯƠNG TRÌNH TUYẾN TÍNH
Đó là một hệ gồm m phương trình đại số bậc nhất đối với n ẩn:
7
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
Trong đó:
 x
1
, x
2
, ,x
n
là các ẩn số.
 a
ij
là hệ số ở phương trình thứ i của ẩn thứ x
j.
 b

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



0.

tương thích nếu hệ có ít nhất một nghiệm, tức là tồn tại một bộ giá trị
của
x
1

, x
2

, , x
n
mà khi thay vào sẽ có một đồng nhất thức.
 không tương thích nếu không có một nghiệm nào.
 xác định nếu hệ chỉ có một nghiệm duy nhất.
 bất định nếu tồn tại quá một nghiệm.
Muốn giải hệ phương trình đại số tuyến tính thì trước hết phải xác định xem hệ
đã cho tương thích hay không tương thích. Nếu là hệ tương thích thì lại phải xem hệ là
xác định hay bất định. Nếu hệ phương trình là xác định thì ta đi tìm nghiệm duy nhất
của nó.
9
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
Ví dụ:
Hệ phương trình 2 ẩn:
Hệ 3 phương trình 3 ẩn:
Hệ 2 phương trình 3 ẩn:
1.2.2. GIẢI HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH
Khi giải hệ phương trình đại số tuyến tính có thể xảy ra hai trường hợp:
m


=

n


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

-1
.b từ đó suy ra nghiệm của phương
trình.
 Phương pháp 2: Phương pháp Cramer:
1. Tính det(A)=?, det(A
j
)=?
2. Tính nghiệm của hệ bởi công thức: x
j
=
Ví dụ: Giải hệ pt sau:
Giải : ta có: A= ; b = ; Det(A) =49
= ; det(A
1
) = 98; = det(A
2
) = 49
11
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
= det(A
3
) = 49
Ta có nghiệm của hệ đã cho là: = = 2; = =1 ; = =1
b. Trường hợp
m

n
Ta gọi: A=
(
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
)=



n
thì hệ
có một nghiệm duy nhất. Nếu
r

(
A

)

=
r

(
B
)

<
n
thì hệ có vô số nghiệm.
Vi dụ: Giải hệ phương trình sau:
12
Trong đó: p là số lần hóan vị các dòng để tìm phần tử trụ
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
Giải
Ở đây m = 3, n = 4
B= → →
Ta có
r


(

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

ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
1.2.3. PHƯƠNG PHÁP GIẢI HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH.
a. Giải hệ phương trình bằng 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
-1
.b Từ đó suy ra nghiệm của phương
trình.
b. Giải hệ phương trình tuyến tính bằng phương pháp Cramer
 Tính det(A) = ?
 Tính det(A
j
) = ?
 Tính nghiệm của hệ bởi công thức x
j
= det(A
j
) / det(A)
Ví dụ:
Giải: Ta có: A = ; b = ; Det(A)= 5
= det(A
1
) = 5
14
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
= det(A
2

) = 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






−=+−
=+−
=−+
123
22
32
321
321
321
xxx
xxx
xxx

















=

































n
n
nnnnn
n
n
n
b
b
b
b
x
x
x
x
aaaa
aaaa
aaaa
aaa


.




1

3
2
)1(
1
3
2
1
321
3333231
2232221
)1(
1
)1(
13
)1(
12







−=+−
=+−
=−+
123
22
2
3

2
1
2
1
321
321
321
xxx
xxx
xxx
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
Với
Khử x1 trong phương trình thứ i=2,3,4,…, n bằng cách:
Thay dòng i bởi dòng i – dòng 1 * ai1 . Nghĩa là:
a(1)ij = aij - a(1)1j *ai1 với j=1,n
và: b(1)i=bi - b(1)1*ai1
Hệ đã cho tương đương với:
Bước 2: Giả sử a(1)22≠0, chia dòng 2 cho a(1)22. Hệ đã cho tương đượng với:
17

















=

































)1(
)1(
3
)1(
2
)1(
1
3
2
1
)1()1(
3
)1(
2
)1(
3
)1(
33
)1(
32
)1(
2

)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

x
x
aaa
aaa
aaa
aaa









−=+−
=+−
=−+
2
11
2
5
2
7

2
1
2
5
2

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(

13
)1(
12


.
0

0
10
1
n
n
nnnn
n
n
n
b
b
b
b
x
x
x
x
aaa
aaa
aa
aaa










−=+−
−=−
=−+
2
11
2
5
2
7

3
1
3
5

2
3
2
1
2
1
32

32
321
xx
xx
xxx
111
)1(
1111
)1(
1
/ ,/ abbaaa
jj
==
), ,2,1(,/ ,/
)1(
22
)1(
2
)2(
2
)1(
22
)1(
2
)2(
2
njabbaaa
jj
===
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH

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

n
n
n
n
n
b
b
b
b
x
x
x
x
a
aa
aaa









=
−=−
=−+
2
3

1
3
5

2
3
2
1
2
1
3
32
321
x
xx
xxx









=
−=−
=−+
2
3

1
3
5

2
3
2
1
2
1
3
32
321
x
xx
xxx

















=

































)2(
)2(
3
)2(
2
)1(
1
3
2
1
)2()2(
3
)2(
3
)2(
33
)2(
2
)2(
23
)1(
1
)1(
13
)1(

12


.
00

00
10
1
n
n
nnn
n
n
n
b
b
b
b
x
x
x
x
aa
aa
aa
aaa










−=
−=−
=−+
3
20
3
10
-
3
1
3
5

2
3
2
1
2
1
3
32
321
x
xx

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 0

a a 1 0
a a a 1
(n)
2n
(n)
23
(n)
1n
(n)
13
(n)
12
)(n
A

=
−=
n
k
k
kk
p
aA
1
)(

.)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 KỸ THUẬT LẬP TRÌNH
2.2 HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH
2.2.1 THUẬT TOÁN CRAMER
Xét hệ gồm n phương trình n ẩn:
(I)
A.x=b
Ma trận A
j
là ma trận được thành lập từ ma trận A bằng cách từ ma trận A bỏ đi
cột thứ j và thay vào đó cột vế phải.
Lần lượt tính định thứ của các ma trận thay thế rồi tìm nghiệm theo công thức
Cramer là x
j
=
2.2.2 GIẢI THUẬT
detA = 1;
 Với mỗi dòng k
o Chọn t sao cho
o Nếu a
tk
=0 thì det(A)=0; dừng thuật toán.
o Nếu a
tk
≠ 0 thì làm các việc sau đây:
21
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
-Thay b vào từng cột của ma trân A để tính các định thức
-Cho k=1,2,3,…, n
-Với mỗi dòng k nếu hàng i=k thì thay r[j][i]=b[j]
-Ngược lại r[j][i] = a[j][i]

 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>

#include<ctype.h>
void main()
{
float b[10],x[10];
float dt[50] ;
float r[50][50];
float a[10][10];
int i,j,k,n,t,ch,ok1,ok2;
float c,d;
char tl;
do
{
clrscr();
printf("1.Nhap ma tran \n");
printf("2.Hien thi ma tran\n");
printf("3.Tinh dinh thuc cua ma tran\n");
printf("4.Nhap cac he so cua phuong trinh tuyen tinh \n");
printf("5.Hien thi he so phuong trinh\n");
printf("6.Giai he phuong trinh\n");
23
ĐỒ ÁN KỸ THUẬT LẬP TRÌNH
printf("Lua chon:");scanf("%d",&ch);
switch(ch)
{
case 1:
{

printf("\n");
printf("Nhap cap cua ma tran A la n=");
scanf("%d",&n);

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;

i=1;
ok2=1;
while((ok2)&&(i<=n))
{
if(a[i][i]==0)
{
ok1=1;
k=k+1;
while((ok1)&&(k<=n))
if(a[k,i]!=0)
{
for(j=i;j<=n;j++)
{
c=a[i][j];
a[i][j]= a[k][j];
a[k][j]=c;
}
25

×