Tải bản đầy đủ (.pdf) (212 trang)

Lập trình tính kết cấu

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 (7.32 MB, 212 trang )

Thạc s ĩ BÙI ĐỨC TIEN
Lập trinh
TÍNH KÍT CÂU
NHÀ XUẤT BÀN XÂY DỰNG
1995
LỜI NÓI ĐẦU
“Một người lo bằng kho người làm “
(LỎI CỔ nhân)
Tôi đã tròn bốn muui tuổi kết cấu và có hai muơi năm tìm hiểu về máy vi
tính, mà trước đãy gọi là máỵ tính điện tử.
về kết cấu, tôi đã thiết kế những công trình lớn của Quân Đội ở miền Bắc,
đã thiết kế các công trình chính của Thủy sản trong cả nuớc, trong đó có cả việc
quy hoach các bến cá từ Bắc chí Nam.
về máy tỉnh trong hai năm 1974 và 1975 tôi đã được Phó tiến sĩ'Trần Bình
hướng dẫn nhập môn với ngôn ngữ Algol 6 0 ; nhưng lúc này cả nước mới có 2
máy Minsk 22, nên chủ yếu là tìm hiểu thuật toán ; Tuy nhiên tôi đã giải thử tấm
tường lắp ghép với hệ phuơng ưình tuyến tính 15 ẩn bằng ma trận nghich đảo,
cũng như kiểm tra cung trượt của đập hồ cá Thác Bà và kiêm tra kết cấu cầu tầu
Diên Hiền ở Thái Bình. Thời kỳ này giáo SƯ.HỒ Anh Tuấn cũng hướng dẫn yiệc
dùng ma trận giải kết cấu, 'nhung tôi chưa có điều kiện áp dụng.
Đến năm 1987, Phó tiến SI Nguyễn Vãn Nghiễm, hướng dẫn sử dụng hệ
máy vi tính của phương Tẳy với ngôn ngữ Fortron 77, đồng thơi gféo sưNguỹẽn
Trâm và giáo sư Phạm Khấc Hùng hướng dẫn cắc phuơng pháp giải kết cẩu trên
máy vi tính, trong đó có phương pháp phần tử hữu hạn. Tôi nung nấu một hoài
bão là sẽ sư dụng mảy VI tính để giải tất cả các bài toẩn kết cấu.
Sau khi biên soạn quyền "Cẩm nang kết cấụ" tôi bắt tay vào nghiên cúu
thuật toán giải các bài toán kết cấu ưênmáy vi tỉnh. Lúc đầu cũríg bỡ ngỡ và bị
động với máy, nhưng sau quen dần vằ làm chủ được máy. Máy 386 mà tôi hiện
dùng cấu tạo theo ngon nghữ Pascal. Có thể máy chế tạo cho công tắc văn
phòng và kế toán thong kê là chính nên khi giải toán kỹ thuật bị hạn chế: máy


không có hàm vòng ngược cũng như hàm.hỵperbolíc nên không giải được các
phương trình bậc ba, mà trong kỹ thật xây dụng rất hay gặp : như tìm góc xoay
hay độ võng các thánh dầm.
Quyển "Lập trình giải kết cấu" này gồm 60 chương trình, chia thành 5
chương:
- Chương 1 : Lập trình giải nhũng bài toán về con số mà trong kỹ thuật
thông thường cũng như kỹ thuật xây dụng rất hay gặp.
- Chương 2 .Lập trinh giải cắc phương trình thõng thường và hệ phương
trình tuyến tính. Đây là tính ưu việt cua máy vi tính, nó giúp ta giải cắc bài toán
phúc tạp trong thời gian rất ngắn chùng vài chục giẫy, mà nếu không có máy vi
tính chúng ta phải giải cà tháng mà không tránh được sai sót, nhầm lẫn.
- Chương 3 : Lập trình giải các dầm một nhịp cơ bản. Đây là cách giải
chính xác bằng phương trình giải tích trên máy vi tinh : cho ta biết nội lực tại
mọi điểm hất kỳ của kết cấu. Nhờ máy giải cho mọi điểm ta có thể nắm được
giá trị cực đại về lục cắt, moment, góc xoay hay độ võng xảy ra tại điềm nào
trong dầm.
- Chuơng 4 : Lập trình giả i các hệ kết cấu tĩnh định và siêu tĩn h : Đây là bài
toán tổng hợp để giải cả hệ kết cấu chứ không phải giải riêng từng thánh. Trừ
dàn kèo giả i theo phần tử hữu hạn của hệ thanh hai đầu chốt, các kết cấu còn
lại: dầm lên tục, khung nhà 1 tầng, khung nhà 2 tằng và cầu tầu 2 nhịp giải theo
phương pháp chuyển vị cổ điển.
- Chường 5 : Lập trình thiết kế kết cấu: gạch đá, bé tông cốt thểp, gỗ, thép
và nền móng. Đây la công việc thiết thân của kỹ sư xây dựng mà hàng ngày họ
phải tính toán tra bảng, nay ró thể hoàn toàn chạy tự đọng trần máy, với kết quả
nhanh chóng và chính xác.
M ỗi cnuơng trình đều có 4 phần: thuật toán, chương trình, kết quả và ứng
dụng. Cả 60 chương trình đều chạy kiểm tra trên máy và cho ra kết quả cụ thế.
Phần chương trình và kết quả tôi lấy đúng theo bản in của máỵ.
Muốn sử dụng có hiệu quả quyển sách này, cũng như sư dụng tốt máy vi
tính, xin lưu ý bạn đọc mấy điềm sáu-

1. Cần nắm thật chắc thuật toá n : ta dùng phương pháp nàoĩ Để đạt mục
đích gì? Đường đi nước bước ra saoĩ Cách chuẩn bị thế nào? Để <ập trình cho
máy giải. Thuạttoán là linh hồn của chương trình. Nếu không nắm được, chúng
ta trơ thành máy móc, không rõ mục đích, ý nghĩa công việc làm của mình'.
Chương trình chỉ là nhũng lệnh rất súc tích, không thừa, không thiếu cho máy
thực hiện thôi, còn chúng ta phải hiểu nguồn góc và nội dung sâu sắc của những
lệnh này.
2. Tính ưu việt của máy là giải những bài toán tổng quát, chung cho mọi
trường hợp, cho nên cần hợp thành những chương trình mẫu có thế vận dụng
m ọi luc, m ọi n ơ i: cụ thề là phải biến các bảng, biếu thành các hàm tương quan,
để máy cho giá trị của hàm mỗi khi biết giá trị của biến cần tận dụng tối đa biến
nguyen (integer), và biến không thứ nguyên để máy tự dụng cho cac giá trị của
ham theo giắ trị của biến chạy.
3. Can nắm vũng cách điều hành máy, dối với nhũng bạn mới làm quen
v ộ i máy xin nêu vắn tắt quy trình sau: -
- MỞ máy chờ 30 glâỵ khi máỵ xuất hiện ỏ cuối c\>.
T Bấm TP Enter (túc là gọi turbo Pascal máỵ hiện màu xanh)
- Bấm F3 (túc là mở File máy hiện bảng đế ghi tên chương trình)
- Chi tên chương trình, bấm Enter, máy trở iạ i màu xanh.
- Vào chương trình bấm F9 đề kiềm tra.
- Nếu máy hiện băng đỏ ở trên /à có lỗ i pha sựa
- Bấm Ctrl - F9 màu hình hiện màu đen để /ào sõ liệ u .
- Vào hết số liệu, bấm Enter máy cho ngay kết quả.
Đẫy là một quyền sách thực hành rất th ié thục cho cán bộ xây dụng, nhất
là cắc kỹ sư thiết kế. Mong muốn của tôi là giúp các bạn đ ì nhanh đến kết quả
chính xác, bỏ qua những con tính phúc tạp dai dừng. Bước đàu lập trình cho
máy tính không khỏi có sai sót, mong cắc bạn bổ sung.
Chúc các bạn thănh cõng bong sự nghiệp. l ị niệm ^ vịo tuól 70
Thạc Sĩ: BÙI ĐỨC TIỄN.
CHƯƠNG 1

LẬP TRÌNH GIẢI
CÁC BÀÍ TOẨN VỀ CON só
Chương 1 gồm 14 chương trình để giải các bài toàn thường
gặp về các con số. Mục đích của chương này là để các bạn làm
quen với việc lập trình từ dề đến khó, từ đơn giản đến phức tạp.
Qua chương này các hạn nắra được cơ cấu của một chương
trình gồm tên chương trình, phần mô tả biến, phần vào sô' liệu
phần ra lệnh tính toán, phần ra số liệu, chủ yếu nhất vẫn là thuật
toán của mỗi chương trình.
Ba chương trình ỉ, 2 và 3 mang dáng chung là so sánh các
con sô' tìm ra max, min hay sắp xếp các sô' Iđn đàn hay nhỏ dần.
Ba chương trình 4, 5 và 6 là những bài toán vê tính chia hết.
Chúng đêu dựa trên thuật toán Euclide được mô tả kỹ trong chương
trình ưđc sô' chung lđn nhất.
Ba chương trình -7, 8 vã 9 thuộc dạng cộng dồn hay nhân dồn,
đây là một dạng thường hay gặp trong giải tích với tên gọi là phép
quy nạp hay đệ quy rất thích hợp vơi cách vận hành chạy máy. ■
Năm chương trình sau cùng thuộc vê các bài toán của mảng
số, hay còn. gọi là ma trận. Đây tà trọng tâm của chương vì thuật
ngữ ma trân sẽ đơn giản cách viết và cách giải các bài toán. Quy
5
ước các phép tính vê ma trận sẽ thực hiện hàng trăm phép tính
một lúc, nhất là khi cấp ma trận càng cao.
Thí dụ như ghi A X B = c r.ếu A, B, c là những con sô' thực
thì đây chỉ là một phép nhân. Nhưng nếu A, B, c là ma trận hay
mảng thì phải lây mỗi phần tử trong m ột hàng của A, nhân với
mỗi phần tử trong một cột của B lồ i cộng kết quả thành một phần
tử của c. Như vậy là sô' cột 1 .của A phải lồ n g sô' hàng 1 của B,
và nếu A có n hàng và B có m cột th i c có n X m phần tử ? Tổng
cộng đã có n X m X 1 phép nhân và cũng bằng ấy phép cộng hai

con số một.
Việc chuyển trí hay ọộng ma trận thì dễ hiểu nhưng việc nhân
ma trận phải có quy ưđc như A[n, i] X B [1, m] = c [n, m] hai
sô' 1 phải đối nhau,và khi vào c thì biến m ất. Như vậy nếu n, m,
1 khác nhau thì không có tính giao hoán trong phép nhân ma trận.
Ma trận nghịch đảo là thuật toán giải hệ phương trình tuyến
tính. Khi cho A X X = B Ta có thể rú t ra X = A 1 X B.
Việc lập trình tính ma trận nghịch đâo khá phức tạp, nên
trong quyển này chỉ giới thiệu cách lập trinh tính ti'ực tiếp ma
trận nghịch đảo cấp 2 và cấp 3 thôi, để giúp các bạn vận dụng
giải các hệ có hai hay ba phương trìn h tuyến tính.
6
CHƯƠNG TRÌNH 1
Tìm max của 2 số
Trong kỹ thuật ta thường gặp bài toán tìm max cùa hai số,
hay hai đại lượng, cho dưói dạng ẩn tàng, mà theo trực giác ta
không thể xác định nhanh được nên phải đưa vào máy cho chắc
chắn.
Thuật toán ở đây là phép so sánh trực tiếp: nếu A < Đ thì
max là B, còn không thì max là A.
Thí dụ cho A = X mũ 3; và B = 30x
Gán cho X một trị số, máy sẽ tính ngay giá trị của A, giá trị
của B và cho biết max là A hay B.
Chương trình
-

[ ■ ] TIMMAX2S.PAS
Program TIMMAX2S;
Var X, A, B, Max: real;
Begin Writeln (Tim max cua 2 so:’);

Write (’Nhap X = ’);
Readln (x);
A: = x*Sqr(x);
B: = 30*x;
Begin if A < B then
Max: = B else
Max: = A;
End;
Writein (’A = ’,A);
Writeln (’B = ’,B);
Writeln ('Max = ’,Max);
Readln;
End.
Thuật toán:
16:7
7
C:\>tp
Turbo pascal
Tim max cua 2 so:
Nhap X = 6
A = 2 1600000000E +02
B = 1. 8QOOOOOOQOE+02
Max = 2.1600000000E+02
Tim max cua 2 so:
Nhap X = 5
A = 1.2500000000E+02
B = 1 5000000000E+Q2
Max = 1 5000000000E+02
ứng dụng:
Nếu là hai số âm thì tìm min.

Nếu là hai số trá i dấu thì tìm abs để có giá trị tuyệt đối max.
Kết quả:
8
CHƯƠNG TRÌNH 2
Tìm max của 4 số
Trong giải pháp kỹ thuật, thường có nhiêu đáp sô' mà ta phải
chọn đáp số max cho an toàn. Các đáp số này thường là những
công thức phức tạp nên phải đưa vào máy cho nhanh và chính xác.
Thuật toán ở đây là chia từng cặp để so sánh trực tiếp và cuối
cùng là so sánh trực tiếp hai sô' lớn đã chọn để lấy sô' max chung
của cả 4 số.
Chương trình:

— [ ■ ]

MAX4S.PAS


Program MAX4S;
Var a, b, c, đ, maxi, max2, max: real;
Begin
Writeln (Tim max cua 4 so’);
Write (’Nhap a, b, c, d s ’);
Readln (a, b, c, d);
Begio
if a > b then maxi: = a
else maxi: at b;
if c > d then max2: = c
else max2: = d;
if maxi > max2 then max: = maxi

else max: = max2;
Writein (’max = ’,max);
Readln;
End;
End.
-

:

17:7


L
Thuật toán:
9
C:\>tp
Turbo pascal
Tim max cua 4 so
Nhap a, b, c, d = 5.2 - 3.6 4.0 8.4
max = 8.4Ồ00000000E+00
ứ n g dung:
Có thể mô rộng cho nhiêu số bằng cách chia cặp loại trực
tiếp.
Nếu nhiêu số quá như trong thống kê thì dùng cách sắp xếp
số lớn dần hay nhỏ dần ỏ bài toán 3.
Có thể gán cho 4 số các công thức phức tạp mà máy sẽ tìm
ra giá trị của số theo giá trị gán cho biến như chương trình 1 õ
trên.
Chú ý: Khi nhập 4 số theo hàng ngang thì chỉ dùng nút cách
dài ở cuối cùng để phân biệt chúng, không được dừng dấu phẩy

hay nút Enter. Khi vào đủ 4 số, ấn nứ t Enter máy sẽ cho ngay kết
quả. -
SỐ nguyên và số thập phân cách nhau bằng dấu. chấm, không
phải dấu phẩy
Kết quả:
10
CHƯƠNG TRÌNH 3
Sắp SỐ lớn dần
Trong thống kê thường sắp xếp số đo hay số quan sát theo
thứ tự lớn dần để tiện cho việc tính tần suất.
Thuật toán ỏ đây là lấy từng số, lần lượt so với số ở sau nó, nếu
số trước lớn hơn sô' sau thi đổi chỗ của chúng. Cuối cùng khi không
còn nghịch thế nào thì ta sẽ có dãy số sắp theo thứ tự lổn dãn.
Thuật toán:
Chương trình
11
Vào 5 sô' bất kỳ, máy xếp lại thứ tự từ nhỏ đến lớn.
M[1] = - 3.6
M[2] = 18.4
M [3] = 9.5
M[4] = - 1.6
M[5] = 15.3
Sau khi sap so:
M[1] = - 3.6000000000E + 00
M[2] = - 1.600000000ÓE + 00
M [3] = 9.5000000000E + 00
M [4] = 1.5300000000E + 01
M[5] = 1.8400000000E + 01
ứ ng dung:
Nếu xếp theo thứ tự nhò dần thì thay dấu > bằng dâu <

Sô' lượng không hạn chế, nhưng nên vào 24 sô' một. Tân để máy
báo ra vừa hết màn hình.
Dãy số báo cho máy là theo mảng.
Mỗi sô' vào máy phải bấm n út E nter để máy xuống hàng.
Kết quả:
12
CHƯƠNG TRÌNH 4
ƯỚC SỐ Chung lớn nhất
Muốn thu gọn các sô' hay phân sô' ta thường chia cho ước số
chung Iđn nhất của chúng.
Thuật toán dùng ở đây là thuật toán Eucliđe: “nếu một số chia
hết cho hai sô' thì nó cũng chia hết cho hiệu của chúng”. Như vậy
ta lần lượt lây số lớn trừ sô' nhỏ, cho đến khi còn hai số bằng nhau
thì đó là ước số chung lớn nhất.
Thuật toán:
Chương trình:
13
C:\>tp
Turbo Pascal
Tim uoc so chung lon nhat
Nhap a, b = 18 60
USCLN = 6
Các bước giải của máy như sau:
- Bước 1: 60 - 18 = 42 và 18
- Bưđc 2: 42 - 18 = 24 và 18
- Bưđc 3: 24 - 18 = 6 và 18
- Bước 4: 18 - 6 = 12 và 6
- Bước 5: 12 - 6 = 6 và 6
Hai số này bằng nhau vậy đó là ước số chung lđn nhất,
ứ n g d ụng:

Thuật toán này được vận dụng mỗi khi cần tìm ước số chung
lớn nhất.
Chú ý là tên của chương trình chỉ được ghi 8 ký tự, quá máy
sẽ cắt.
Kết quả:
14
CHƯƠNG TRÌNH 5
Bội SỐ chung nhỏ nhất
Thuật toán:
Khi hòa đồng mẫu sô* của hai tỷ số thường phải tìm bội số
chung nhỏ nhất.
Thuật toán dùng ỗ đây là theo định lý: Tích cùa hai số băng
tích của ước sô" chung lổn nhất với bội số chung nhỏ nhất của
chúng.
Như vậy ta dùng thủ tục hàm (Function) để tìm ước số’ chung
lớn nhâ't của chúng là có bội số chung nhỏ nhất.
Chương trình:

[ ■ ]—

BSCNN.PAS
Program BSCNN;
Var a, d, t: integer;
Function USCLN (x, y; integer): integer;
Begin
Repeat if (x > y) then x: = X - y
else y: = y - x;
Until X = y;
USCLN: = x;
End;

Begin
Write (’Nhap a:’’);
Read In (a);
Write (’Nhap b:’);
Readln (b);
t: = (a*b) div USCLN (a, b);
Wrlteln (BSCNN= \t);
Readln;
End,
-

-
— 2:20

-

15
C:\>tp
Turbo Pascal
Nhap a: 12
Nhap b: 18
BSCNN = 36
ứ n g dụng:
Chỉ ứng dụng cho hai sô' một.
Ghi chú:
- Phần Function ở trên là chương trìn h con.
- Phần ở dưđi là chương trình chính.
- Khi viết nhập theo 2 dòng thì khí vào mỗi số phải bấm
Enter, để máy xuống dòng theo đúng yêu câu không được bấm cách
dài ở dưới theo cách viết một dòng ở trên.

Kết quả:
16
CHƯƠNG TRÌNH 6
Tối giản phân số
Thuật toán ở đây là định lý: Khi ta chia tử và mẫu của một
phân số cho cùng một sô' thì giá trị phân sô' không thay đểi Nếu
sô' chia là ước sôi* chung lđn nhất thì tử và mẫu nguyên tô' với nhau
và ta có phân sô' tối giản.
Ta vẫn dùng thủ tục hàm (Function) để tìm ước sô' chung lớn
nhất, rồi chia cả tử và mẫu cho ước sô' chung lớn nhất này.
Chương trình:

[ ■ ] TGPS.PAS

Program TGPS;
Var a, b: integer;
ts, ms: integer;
Function USCLN (x, y: integer): integer;
Begin
Repeat if (x > y) then x: = X - y
else y: = y - x;
Until x = y;
USCLN: = x;
End;
Begin
Write (’Nhap ts = ’);
Read In (a);
Write (’Nhap ms = ’);
Readln (b);
ts: = a div USCLN (a, b);

ms: = b dlv USCLN (a, b);
Writeln (’Phan so toi gian = \ts,7’,ms);
Readln;
End.
Thuật toán:
18:45

17
C:\>tp
Turbo Pascal
Nhap ỉs = 18
Nhap ms = 48
Phan so toi gian = 3/8
18 3
Vào phân số — máy cho ra phân số — tối giản
48 8
ứng dụng:
- Chú ý trong kết quả đưa ra:
Phần trong dấu nháy viết th ế nào máy đưa ra đúng thế!
Phần không có nháy máy lấy kết quả ở trên điên vào giữa các
phần có dấu phẩy để máy hiểu ngâm, vì nó không đưa vào kết quả
in ra.
Kết quả;
18
Tổng của n số tự nhiên
Thuât toán:
Thuật toán ở đây là phép cộng dfôn: “tổng của n số bằng tổng
của n - 1 số ở trước cộng với sô' n ?”
Dùng biến chạy là sô' i tự nhiên từ 1 đến n
CHƯƠNG TRÌNH 7

Cho tổng đầu tiên bằng không và cho máy cộng đồn từ 1 đến n.
Chương trin h :
Kết quả:
C:\>tp
Turbo Pascal
Tim tong cua n so tu nhiên
n = 9
Tong = 45
ứng dụng:
Chú ý trong cộng đồn bao giờ cũng lấy tổng xuất phát là số
không.
19
CHƯƠNG TRÌNH 8
Giai thùa n số
Thuật toán:
Thuật toán ở đây là phép nhân đồn: “tích của n sô' bằng tích
của n - 1 số ỏ trước nhân với số n ”.
Dùng biến chạy là sô' i tự nhiên từ 1 đến n.
Lấy tích xuất phát đầu tiên khi i = 0 là 1.
Chương trình:
____
ị p-Ị
__


G1AITHUA.PAS.

Program GIAITHUA;
Var n, i, G: integer;
Begin

Writeln (Tinh giai thua cua n so tu nhien’);
Write ('Nhap n = ’);
Readln (n);
i: = 0;
G: = 1;
While i < n do
Begin
i: = i + 1;
G. = G*i;
End;
Writeln (’Giai thua = \G);
Readln;
End.
— .

.—

-

16:3

-

-

A- ■
Kết quả:
C:\>tp
Turbo Pascal Version 6.0
Tinh giai thua cua n so íu nhien

Nhap n = 6
Giai thua = 720
ứng dụng:
Chứ ý trong tích đôn bao giờ cúng ỉấy tích xuất phát bằng 1.
20
CHƯƠNG TRÌNH 9
Tính e mũ X
T h u ật to án:
2 3 „n
Ta biết rằng : e* = 1 ~
1! 2! 3! n!
Phân tích số hạng thứ n ta thấy nó bằng số hạng trước nó
nhân vđi — cụ thể là — = —-

X —
n n! (n -1 ) ! n
Như vậy ta dùng phép qui nạp.
Số' hạng đầu tiên lấy bằng 1, số hạng thứ hai bằng X. Khi ta
cho giá trị của X máy sẽ tính các số hạng và cộng đồn.
Chương trìn h

{ » ] EMUX.PAS

-


-
Program EMUX;
Var Emu, Eps, X , t: real;
n: integer;

Begin
Writeln (Tinh Emux’); .
Write (’Nhap X = ’);
Readln (x);
Write (’Do chinh xac Eps = ’);
Readln (Eps);
Emu; = 1;
n: = 1;
t: = x;
While t > eps do
Begin Emu: = Emu + t;
• n: = n + 1;
t: = t*x/n;
End;
Writeln (’Emu\x,’= ’,Emu);
Readln;
End.
21
Kết quả:
C:\>tp
Turbo Pascal Version 6.0
Tinh Emux
Nhap X = 2
do chinh xac Eps = 0.001
Emu 2.0000000000E+00 = 7.3887125220E+00
Ta yêu cầu tính e2 (bình phương) vđi 3 số thập phân nhưng
máy đã cho kết quả với 10 số thập phương (quá yêu .cầu)
ứng dung:
Khi cho giá trị của X và eps máy sẽ cho ngay kết quả.
22

CHƯƠNG TRÌNH 10
Chuyển trí ma trận
Trong việc tính ma trận nghịch đảo, cũng như trong phép
nhân ma trận, phải chuyển trí ma trận.
Thuật toán chuyển trí là đểi hàng ra cột: nếu là ma trận chữ
nhật ngang khi chuyển trí thành ma trận chứ nhật dọc, nếu là ma
trận vuông thì là xoay quanh đường chéo chính 180 độ.
Chương trình:

[ ■]<

CTRIMT.PAS



-
Program CTRÍMT;
Const n = 3; m = 2; phay =
Var a: array [1. n, 1 mJ of real;
at: array [1 m, 1 n] of real;
i, J': integer;
Begin
Writeln (’chuyên tri ma tran’);
For i: = 1 to n do
For j: = 1 to m do
Begin
Write (’a[’,i, phay.j,’] =');
Readln (a[i, j]);
End;
For i: = 1 to m do

For j : = 1 to n do
Begin
at [i, j]: a a u, I];
End;
For i: = 1 to m do
For j: '= 1 to n do
Writeln ('at[’,i,phay,j,’] = \at[i,j])’;
Readln;
End.
Thuật toán:
23
Chuyên tri ma tran
a*[1, 1] = 6
a [t, 2] = - 2
a [2, 1] = 5
a [2, 2) = 3
a [3, 1] = 0
a [3,2] = - 4
at [1, 1] = 6. OOOOOOOOOOE+00
at [1, 2] = 5. OOOOOOOOOOE+00
at [1,3]= O.OOOOOOOOOOE+QO
at [2, 1] = - 2:OOOOOOOOOOE+O0
at [2, 2] = 3.0000000000E+00
at [2, 3] = - 4.0000000000E+00
Ma trận
Kết quả:
6 -2
a = 5 3
0 - 4
Chuyển trí thành

T
a =
6 5 0
-2 3 -4
ứ n g dụ ng: Chuyển trí m ột ma trận vuông bằng ký hiệu như
sau:
a =
al l a12 a13
a21 a22 a23
T
a =
al l a21a31
a12a22a32
a31a32a33
a13 a23 a33
24
CHƯƠNG TRÌNH II
Cộng ma trận
Trong kỹ thuật thường phải cộng hai ma trận cùng cỡ cùng
cấp.
Thuật toán:
Hai ma trận A và B phải có cùng số hàng và cùng số cột.
Thuật toán cộng ma trận là lấy từng phần tử ờ vị trí giống
nhau (hàng và cột như nhau) cộng lại với nhau aÿ + bjj = Cjj.
Như vậy nếu hai ma trận có n hàng m cột thì chỉ có n X m
phép cộng.
Chương trình:

[ ■ ] CONGMT.PAS —— —
Program CONGMT;

Const n = 3; m = 2; phay =
Var a, b, c: array [i.'n, 1 m] of real;
i, j: integer;
Begin For i: = 1 to n do
For j : = 1 to m do
Begin write (’a [’,i,phay,j,’] - ’);
readln (a [i,j]);
End;
For i: = 1 to n do
For j: = 1 to m do
Begin write ('b [',i,phay,j,'] = ’);
readln (b [i,j]>;
End; '
For i: = 1 to h do
For j: = 1 to m do
Begin c = a{i,j] + b(i,j];
End;
Writeln (’Tong 2 ma tran = ’);
For i: = T to n do
For j: = 1 to m do
Writeln (‘c|’,i,phay,j,’] = c[i,j]);
Readln;
End.
25

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×