Tải bản đầy đủ (.docx) (49 trang)

Báo cáo, tiểu luận phương pháp phần tử hữu hạn

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 (1.33 MB, 49 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC SƯ PHẠM
KHOA TOÁN HỌC

BẢN BÁO CÁO

PHƯƠNG PHÁP PHẦN TỬ
HỮU HẠN

Giảng viên:

xxx

Sinh viên thực hiện: xxx

Đà Nẵng, ngày tháng năm


BẢNG PHÂN CÔNG NHIỆM VỤ

STT Họ và tên

Nhiệm vụ

1

xxx

Giải PT tìm nghiệm chính xác, tìm tài liệu, tìm
hiểu sơ lược về phương pháp phần tử hữu hạn và
matlab



2

xxx

Tính ma trận và vectơ phần tử, lập trình
ma trận và vectơ phần tử của bài toán

3

xxx

Tìm hiểu về M_file, vẽ đồ thị trong Matlab, lập
trình vẽ đồ thị của bài toán

4

xxx

Tìm hiểu về ma trận trong matlab,viết công thức
nghiệm yếu, lập trình

5

xxx

Tìm hiểu về biến, các hàm toán học thông
thường, vòng lặp for, tích phân trong matlab



MỤC LỤC
BẢNG PHÂN CÔNG NHIỆM VỤ...............................................................................1
MỞ ĐẦU....................................................................................................................... 3
Chương 1: TỔNG QUAN VỀ PHƯƠNG PHÁP PHẦN TỬ HỮU HẠN......................4
1.1.

Khái quát phương pháp phần tử hữu hạn..........................................................4

1.1.1.

Khái niệm:.................................................................................................4

1.1.2.

Cơ sở phương pháp:...................................................................................4

1.1.3.

Bản chất toán học......................................................................................4

1.1.4.

Ứng dụng:..................................................................................................4

1.2.

Bài toán minh họa:.....................................................................................5

1.3.


Nhận xét:.................................................................................................10

Chương 2: GIẢI BÀI TOÁN BẰNG MATLAB..........................................................11
2.1.

Khái quát về MATLAB..................................................................................11

2.1.1.

Giới thiệu về MATLAB...........................................................................11

2.1.2.

Tổng quan về cấu trúc dữ liệu của Matlab, các ứng dụng........................11

2.2.

Hướng dẫn các chức năng chính dùng trong giải bài tập................................12

2.2.1.

Biến.........................................................................................................12

2.2.2.

Các hàm toán học thông thường..............................................................13

2.2.3.

Tính tích phân:.........................................................................................15


2.2.4.

Vòng lặp for.............................................................................................17

2.2.5.

Ma Trận-các phép toán về ma trận...........................................................18

2.2.6.

Định nghĩa m-file và hàm trong MATLAB..............................................23

2.2.7.

Vẽ đồ thị trong MATLAB........................................................................26

2.3.

Giải bài tập bằng MATLAB:..........................................................................41

2.4.

Nhận xét:........................................................................................................46

TÀI LIỆU THAM KHẢO...........................................................................................48


MỞ ĐẦU
Ngày nay, với sự tiến bộ của công nghệ thông tin, việc ứng dụng máy tính vào

việc giải quyết các bài toán kỹ thuật đã trở nên gần gũi. Để có thể ứng dụng máy tính,
ta cần phải mô phỏng các ứng xử của hệ thật, chuyển chúng thành các hệ phương
trình, sử dụng tốc độ và độ tin cậy của máy tính để giải các hệ phương trình này.Trong
tính toán kết cấu, ta có thể dùng nhiều phương pháp khác nhau: phương pháp lực,
phương pháp chuyển vị, phương pháp Phần tử hữu hạn (PTHH). Trong đó, phương
pháp phần tử hữu hạn, với sự trợ giúp của máy tính, đang được ứng dụng rộng rãi
trong các bài toán kỹ thuật. Một trong những ưu điểm của phương pháp phần tử hữu
hạn là chương trình máy tính để tìm nghiệm xấp xỉ có thể được phát triển dễ dàng cho
các loại bài toán khác nhau. Đặc biệt, bất kỳ một miền có hình dạng phức tạp với các
điều kiện cho trước có thể xử lý được một cách dễ dàng khi dùng phương pháp phần tử
hữu hạn.
Trong bài báo cáo này, trên cơ sở phương pháp phần tử hữu hạn và MATLAB,
nhóm chúng em đặt mục đích xây dựng bài toán phương trình vi phân tuyến tính cấp 2
và giải bài toán như tìm nghiệm chính xác, tính toán ma trận và vectơ phần tử.. Kết
quả số của các phương pháp trên được biểu diễn bằng đồ thị và kết hợp so sánh.
Do trình độ có hạn và thời gian còn hạn chế, bài báo cáo không thể tránh khỏi
thiếu sót. Chúng em mong nhận được sự góp ý của thầy cô và các bạn để bài báo cáo
của nhóm em được hoàn thiện hơn.


Chương 1: TỔNG QUAN VỀ PHƯƠNG PHÁP PHẦN TỬ HỮU HẠN
1.1.

Khái quát phương pháp phần tử hữu hạn

1.1.1. Khái niệm:
Phương pháp phần tử hữu hạn là phương pháp số gần đúng để giải các bài toán
được mô tả bởi các phương trình vi phân đạo hàm riêng trên miền xác định có hình
dạng và điều kiện biên bất kỳ mà nghiệm chính xác không thể tìm được bằng phương
pháp giải tích.

1.1.2. Cơ sở phương pháp:
Cơ sở của phương pháp này là làm rời rạc hóa miền xác định của bài toán, bằng
cách chia nó thành nhiều miền con (phần tử). Các phần tử này được liên kết với nhau
tại các điểm nút chung. Trong phạm vi của mỗi phần nghiệm được chọn là một hàm số
nào đó được xác định thông qua các giá trị chưa biết tại các điểm nút của phần tử gọi
là hàm xấp xỉ thoả mãn điều kiện cân bằng của phần tử. Tập tất cả các phần tử có chú
ý đến điều kiện liên tục của sự biến dạng và chuyển vị tại các điểm nút liên kết giữa
các phần tử. Kết quả đẫn đến một hệ phương trình đại số tuyến tính mà ẩn số chính là
các giá trị của hàm xấp xỉ tại các điểm nút. Giải hệ phương trình này sẽ tìm được các
giá trị của hàm xấp xỉ tại các điểm nút của mỗi phần tử, nhờ đó hàm xấp xỉ hoàn toàn
được xác định trên mỗi một phần tử.
1.1.3. Bản chất toán học
Phương pháp phần tử hữu hạn (PPPTHH) được sử dụng để giải gần đúng bài
toán phương trình vi phân từng phần (PTVPTP) và phương trình tích phân, ví dụ
như phương trình truyền nhiệt. Lời giải gần đúng được đưa ra dựa trên việc loại bỏ
phương trình vi phân một cách hoàn toàn (những vấn đề về trạng thái ổn định), hoặc
chuyển PTVPTP sang một phương trình vi phân thường tương đương mà sau đó được
giải bằng cách sử dụng phương pháp sai phân hữu hạn, vân vân.
PPPTHH không tìm dạng xấp xỉ của hàm trên toàn miền xác định V của nó mà
chỉ trong những miền con Ve (phần tử) thuộc miền xác định của hàm.Trong PPPTHH
miền V được chia thành một số hữu hạn các miền con, gọi là phần tử. Các miền này
liên kết với nhau tại các điểm định trước trên biên của phần tử được gọi là nút. Các
hàm xấp xỉ này được biểu diễn qua các giá trị của hàm (hoặc giá trị của đạo hàm) tại
các điểm nút trên phần tử. Các giá trị này được gọi là các bậc tự do của phần tử và
được xem là ẩn số cần tìm của bài toán.
1.1.4. Ứng dụng:
Phương pháp phần tử hữu hạn thường được dùng trong các bài toán Cơ học (cơ
học kết cấu, cơ học môi trường liên tục) để xác định trường ứng suất và biến dạng của
vật thể.
Ngoài ra phương pháp phần tử hữu hạn cũng được dùng trong vật lý học để giải

các phương trình sóng, như trong vật lý plasma, các bài toán về truyền nhiệt, động lực
học chất lóng trường điện từ


1.2.

Bài toán minh họa:
Dạng bài toán

Xét
Để thuận lợi cho việc chọn bài toán ta chia (*) thành 2 phần :
và đều bằng 0.

Bài toán
Cho phương trình vi phân tuyến tính cấp 2 hệ số không hằng

( x5 .u ') ' 5x 3 .u  x3 , x �(1, 2)

u (1)  0, u (2)  1


Tìm nghiệm chính xác
Viết công thức nghiệm yếu của phương trình
Tính ma trận và vectơ phần tử
Vẽ đồ thị so sánh khi n=3,10,20,30.
Giải
a)Nghiệm chính xác
Ta có
5 x 4u ' x 5u '' 5 x 3u  x3
5 x3 5x3

x3

u

x5
x5
x5
5
5
1
1
u '' u ' 2 u  5 f ( x)  g ( x)  2
x
x
x
x
u ''

Xét phương trình thuần nhất:
5
5
u '' u ' 2 u  0
x
x

Ta có: u1  x

(1)



 p ( x ) dx
e �
5
u2  u1 � 2 dx
p( x) 
u1
x
với
5

 dx
x
e �
u2  x � 2 dx
x
1
1
u2  x �7 dx � u2   5
x
6x
1
� U TN  C1 x  C2 .(  5 )
6x


� 1 �
C1 ' x  C2 '. �
 5 � 0



� 6x �
��
1
�5 �

C1 '.1  C2 '. � 6 � g ( x )  2

x
�6 x �


� 1 �
C1 ' x  C2 ' � 5 � 0


� 6x �
��
1
�5 �

C1 ' x  C2 ' � 5 � x.g ( x) 

x
�6 x �


(2)
(3)

Lấy (2) – (3), ta có:

� 1 �
�5 � 1
C2 ' � 5 � C2 ' � 5 � 
� 6x �
�6 x � x
5 � 1
� 1
C2 ' � 5  5 � 
� 6x 6x � x
� C2 '  x 4 � C2 

x5
5

� 1 �
C1 ' x  x 4 . �
 5 � 0
� 6x �
1
1
� C1 '  2 � C1  
6x
6x

Tìm nghiệm riêng phương trình dưới dạng
� 1 �
U R  C1 ( x).x  C2 ( x). �
 5�
� 6x �
1

x5 � 1 �
U R   .x  �


6x
x � 6 x5 �
1 1
1
UR   

6 30
5

Nghiệm tổng quát của phương trình đã cho được tìm dưới dạng:


U TQ  U TN  U R
 C1 x 

1
1
C2 
5
6x
5

Xử lý điều kiện biên:
u1  0



u2  1

1
� 1
� 191
C1  C2   0
C 


� 6
� 1 315
5
��
��
1
1
256

2C 
C  1 �
C 
� 1 192 2 5
� 2 105
191
256 1 1
� U TQ 
x
.

315

105 6x 5 5
191
128
1

x

5
315
315x 5

b) Phương trình công thức nghiệm yếu

( x 5u ') ' 5 x3u  x 3 , x �(1, 2)

u (1)  0, u (2)  1


Ta có:
b

( L[u ]  f )vdx  0, x �L (a, b)

2

a

2

��

(( x5u ') ' 5 x3u  x 3 )vdx  0, x �L2 (1, 2)
1

2

2

2

1

1

1

( x 5u ') ' vdx  �
5 x 3uvdx  �
x 3vdx


Lấy tích phân từng phần số hạng đầu tiên, đặt
U  v � dU  dv


5
5
�dV  ( x u ') ' dx � V=x u '
2

2


��
( x u ') ' vdx  vx u ' |  �
x 5u ' v ' dx
5

5

2
1

1

1

2

2

2

1

1

� vx 5u ' |12  �
x 5u ' v ' dx  �
5 x 3uvdx  �
x 3vdx
1


2

2

2

��
( x u ') ' v ' dx  �
5 x uvdx  v( x u ') |  �
x 3vdx
5

1

3

1

c) Tính ma trận và vectơ phần tử:

5

2
1

1


H �

H '�


v  � 1 �� v '  � 1 �
H2 �
H 2 '�



u   H1
Ai 

F 
i

xi1

��
H1 ' �

H
�p � �

H '�
��
xi

2

xi1


H1 �

�dx
2�

1

' H 2 '  q  H 1

H1 �


H2  � �
dx

H2 �



�f �
H

xi

H1 

H 2  � u '   H1 ' H 2 '

xi 1  x

x  xi
; H2 
hi
hi

hi  xi 1  xi
A 
i

xi1

� 5�
H1 ' �
H
3 �1�

x
H
'
H
'

5
x


 H1

1
2





H 2 '�
H2 �



xi �

xi1

� 5 � H1'2
H1 ' H 2 '� 3 �H12
 �
x

� 5 x �
� �
H1 ' H 2 '
H 2' 2 �
H1 H 2


xi �


H1 H 2 �
dx




H 22 �


� �( xi 1  x) 2 �
1�
 2 � xi1
��

hi
hi2


3

�dx  5 x


1 �
( x  x)( x  xi )
xi
� i 1
2 �
hi �
hi2


�1

xi1
�h 2
i
Ai  �
 x5 �
�1
xi
 2

� hi


xi6
( xi 1 )6
( x  x )(10 xi3  6 xi2 xi 1  3 xi xi21  xi31 )


 i i 1

12
6( xi  xi 1 ) 2 6( xi  xi 1 ) 2

� Ai  �
6
6
xi
( x  x )( x  x )(2 xi2  xi xi 1  2 xi21 )
� xi 1

 i i 1 i i 1


12
�6( xi  xi 1 )2 6( xi  xi 1 )2


Vectơ phần tử thứ i
�xi 1  x �
� h �
H1 �

i
�dx
Fi  �
x3 � �
dx  �
x3 �
H

x

x
� 2�
i �
xi
xi
�h

� i

xi 1


xi 1

� ( xi  xi 1 )(4 xi3  3 xi2 xi 1  2 xi xi21  xi31 ) �



20

�
� ( xi  xi 1 )( xi3  2 xi2 xi 1  3 xi xi21  4 xi31 ) �



20



Tính gần đúng:


H2  �
dx


xi61

( xi 1  x )( x  xi ) �

hi2


dx
2

( x  xi )

hi2


( x  x )( x  x )(2 xi2  xi xi 1  2 xi21 ) �

 i i 1 i i 1

12
6( xi  xi 1 ) 2 6( xi  xi 1 ) 2


6
6
3
2
2
3
xi
xi 1
( xi  xi 1 )( xi  3 xi xi 1  6 xi xi 1 10 xi 1 ) �



12


6( xi  xi 1 )2 6( xi  xi 1 ) 2



xi6


Để tính gần đúng ma trận và vectơ phần tử ta dùng 3 qui tắc:
Qui tắc hình thang hai điểm
( f(a) + f(b))
Qui tắc Simpson ba điểm
( f(a) + f() + f(b))
Qui tắc Gauss-Legendre một điểm
)
Từ công thức nghiệm yếu đã tính ở câu b, ta suy ra được :
xi1
�5 �
H1 �
H1 ' �

A �
H1 ' H 2 '  �
5 x3 � �
�x � �

 H1
� H '
H2 �


xi � � 2 �
xi
xi 1
H �

i
F  �
x3 � 1 �
dx
H2 �

xi
i


H2  �
dx



xi 1

Với số mũ lớn, để đơn giản ta áp dụng quy tắc hình thang hai điểm để tính :
xi1

xi1
H1 ' �
H �



Ai  �
x � �
H1 ' H 2 ' dx  �
5 x 3 � 1 �

 H1
H 2 '�
H2 �


xi
xi
5

�x  x
 � i 1 2 i
� 2hi
Ai 

��
 xi51  xi5
�� 5
5
��xi 1  xi

xi51  xi5 � �xi 1  xi
� �
 xi51  xi5 � � 2hi2

( xi5  xi51 )( xi  xi 1 )  5 xi3 ( xi  xi 1 )3

1 �

2hi2 �
( xi5  xi51 )( xi  xi 1 )

H 2  dx

��
5 xi3 ( xi 1  xi )2
��
0
��


0
2�
5 x ( xi 1  xi ) �
3
i 1

( xi5  xi51 )( xi  xi 1 )



( x  x )( xi  xi 1 )  5 x ( x i  xi 1 ) �
5
i

5
i 1


3
i 1

3

�xi 1  x �
� h �
�3 �
H1 �

i
3 �
�dx
Fi  �
x
d
x
=
x
� � �


H

x

xi �
xi � � 2 �
xi


� h �
� i �
xi1

xi 1

�x 3 xi 1  x 4 �
�xi31 xi !  xi41 xi3 xi 1  xi4 �


� h

xi1 �
h
hi
i
i



��xi 1  xi
 � 4
dx 
3
4
3
4
3
�x  x xi �

� xi 1  xi 1 xi xi  xi xi ��
� 2
xi





hi
hi
� hi



�xi3 xi 1  xi4 �


 �4 2 3 �
�xi 1  xi 1 xi �


� 2


�xi3 xi 1  xi4 �


� � hi
�xi 1  xi �


� �4
� 2 �
3
� xi 1  xi 1 xi �




� hi



1.3.

Nhận xét:

Trong việc giải phương trình vi phân thường, thách thức đầu tiên là tạo ra một
phương trình xấp xỉ với phương trình cần được nghiên cứu, nhưng đó là ổn định số
học (numerically stable), nghĩa là những lỗi trong việc nhập dữ liệu và tính toán trung
gian không chồng chất và làm cho kết quả xuất ra xuất ra trở nên vô nghĩa. Có rất
nhiều cách để làm việc này, tất cả đều có những ưu điểm và nhược điểm. PPPTHH là
sự lựa chọn tốt cho việc giải phương trình vi phân từng phần trên những miền phức tạp
(giống như những chiếc xe và những đường ống dẫn dầu) hoặc khi những yêu cầu về
độ chính xác thay đổi trong toàn miền. Ví dụ, trong việc mô phỏng thời tiết trên Trái
Đất, việc dự báo chính xác thời tiết trên đất liền quan trọng hơn là dự báo thời tiết cho
vùng biển rộng, điều này có thể thực hiện được bằng việc sử dụng phương pháp phần
tử hữu hạn.
Việc tính toán ma trận và vectơ phần tử, tính gần đúng đối với số mũ lớn rất
khó khăn nếu tính toán bằng tay, dễ nhầm lẫn.



Chương 2: GIẢI BÀI TOÁN BẰNG MATLAB
2.1.

Khái quát về MATLAB

2.1.1. Giới thiệu về MATLAB
- MATLAB là viết tắt của Matrix Laboratory , là một bộ phần mềm toán học
của hãng Mathworks để lập trình , tính toán số và có tính trực quan rất cao
- MATLAB làm việc chủ yếu với ma trận . Ma trận cỡ mxn là bảng chữ nhật
gồm mxn số được sắp xếp thành m hàng và n cột. MATLAB có thể làm việc với nhiều
kiểu dữ liệu khác nhau. Với chuỗi kí tự MATLAB cũng xem là một dãy các kí tự hay
là dãy mã số của các ký tự.
- MATLAB dùng để giải quyết các bài toán về giải tích số, xử lý tín hiệu số, xử
lý đồ họa, … mà không phải lập trình cổ điển.
Hiện nay, MATLAB có đến hàng ngàn lệnh và hàm tiện ích. Ngoài các hàm cài
sẵn trong chính ngôn ngữ, MATLAB còn có các lệnh và hàm ứng dụng chuyên biệt
trong các Toolbox, đểmở rộng môi trường MATLAB nhằm giải quyết các bài toán
thuộc các phạm trù riêng. Các Toolbox khá quan trọng và tiện ích cho người dùng như
toán sơ cấp, xử lý tín hiệu số, xử lý âm thanh, ma trận thưa, logic mờ,…
2.1.2. Tổng quan về cấu trúc dữ liệu của Matlab, các ứng dụng
a. Dữ liệu
Dữ liệu của Matlab thể hiện dưới dạng ma trận (hoặc mảng - tổng quát), và có
các kiểu dữ liệu được liệt kê sau đây:
• Kiểu đơn single, kiểu này có lợi về bộ nhớ dữ liệu vì nó đòi hỏi ít byte nhớ
hơn, kiểu dữ liệu này không được sử dụng trong các phép tính toán học, độ chính xác
kém hơn.
• Kiểu double kiểu này là kiểu thông dụng nhất của các biến trong Matlab.
• Kiểu Sparse.
• Kiểu uint8, uint8, uint16, uint64...

• Kiểu char ví dụ “Hello”.
• Kiểu cell.
• Kiểu Structure.
Trong Matlab kiểu dữ liệu double là kiểu mặc định sử dụng trong các phép tính
số học.
b. Ứng dụng
Matlab tạo điều kiện thuận lợi cho:


• Các khoá học về toán học.
• Các kỹ sư, các nhà nghiên cứu khoa học.

2.2.

Hướng dẫn các chức năng chính dùng trong giải bài tập

2.2.1. Biến
Giống như những ngôn ngữ lập trình khác, MATLAB có những quy định riêng
về tên biến. Trước tiên tên biến phải là một từ, không có chứa dấu cách, và tên biến
phải có những quy định tuân thủ như sau:
Quy định về tên biến
Tên biến có phân biệt chữ hoa chữ thường.
Ví dụ: Iterms, itErms, và ITERMS là các biến khác nhau
Tên biến có thể chứa nhiều nhất 31 kí tự, còn các kí tự sau kí tự thứ 31 bị lờ đi.
Ví dụ: howaboutthisveriablename
Tên biến bắt đầu phải là chữ cái, tiếp theo có thể là chữ số, số gạch dưới
Ví dụ: how_about_this veriable_name,X51483, a_b_c_d_e
Kí tự chấm câu không được phép dùng vì nó có ý nghĩa đặc biệt
Cùng với những quy định trên, MATLAB có những biến đặc biệt trong bảng sau:


Chúng ta có thể tạo một biến của MATLAB, và chúng ta có thể gán lại giá trị
cho một hoặc nhiều biến.
Ví dụ:
>> erases = 4;
>> pads = 6;
>> tape = 2;
>> iterms = erases + pads + tape


Iterms=
12
>>erases=
6
>>iterms
Iterms=
14
2.2.2. Các hàm toán học thông thường
Các hàm toán học của MATLAB được liệt kê trong bảng dưới đây, chúng đều
có chung một cách gọi hàm như ví dụ dưới đây:

>> x = sqrt (2)/2
x=
0.7071
>> y = sin(x)
y=
0.7584
>> y_deg = y*180/pi
y_deg =
45.0000
Những lệnh này có thể tìm một góc (tính bằng độ) khi biết giá trị hàm sin của nó là /2.

Tất cả các hàm liên quan đến góc của MATLAB đều làm việc với radian.
Bảng các hàm :
Các hàm thông thường


Một số ví dụ:
>> y =sqrt(3^2 + 4^2) % Tính cạnh huyền của tam giác pitago 3-4-5
y=
5
>> y = rem(23/4)

% 23/4 có phần dư là 3

y=
3
>> x=2.6,y1=fix(x), y2 = floor(x), y3 =ceil(x), y4 = round(x)
x=
2.6000
y1=
2
y2 =


2
y3 =
3
y4=
4
>> gcd(18,81)


% 9 là ước số chung lớn nhất của 18 và 81

ans=
9
>> lcm(18,81)

% 162 là bội số chung nhỏ nhất của 18 và 81

ans=
162
2.2.3. Tính tích phân:
Lệnh: int
Nếu f là một biểu thức symbolic thì tích phân của hàm f là
int (f)
Tìm một biểu thức symbolic F thỏa mãn diff(F)=f, thì Flà giá trị trả về của int
(f)
Tương tự hàm int(f,v)
Int(f,v) Sử dụng đối tượng symbolic v như là biến của tích phân,
Ví du: Tạo các biến symbolic sau
Syms a b theta x y n x1 u


Bảng thể hiện kết quả tích phân của một số hàm
Định nghĩa tích phân còn được thể hiện như sau
Int(f,a,b)
Hoặc int (f,v,a,b)_% Tính tích phân f theo biến v từ a đến b
Một số ví dụ


2.2.4. Vòng lặp for

Vòng lặp for cho phép một nhóm lện thực hiện lặp lại một số lần cố định. Cú
pháp của vòng lặp for như sau:
For x = array
Command % khối các lệnh
End
Các câu lệnh giữa hai trạng thái for và end được thực hiện một lần cho tất cả
các cột của mảng (array). Tại mỗi lần lặp lại, x được gán cho phần tử cột tiếp theo như
trong suốt n lần của vòng lặp, x = array(:,n).


2.2.5. Ma Trận-các phép toán về ma trận
a. Khái niệm :
- Trong MATLAB dữ liệu để đưa vào xử lý dưới dạng ma trận.
- Ma trận A có n hàng, m cột được gọi là ma trận cỡ n X m. Được ký hiệu An x m
- Phần tử aij của ma trận An x m là phần tử nằm ở hàng thứ i, cột j.
- Ma trận hàng ( 1 x m ) số liệu được bố trí trên một hàng,
a11 a12 a13... a1m
- Ma trận cột ( n x 1) số liệu được bố trí trên 1 cột.
a11
a21
a31
b. Các quy định để định nghĩa một ma trận:
- Tên ma trận có thể gồm 31 ký tự. Bắt đầu phải bằng chữ cái sau đó có thể là
số, chữ cái, các ký tự đặc biệt... Tên đặt bênn trái dấu bằng, bên phải dấu bằng là các
phần tử của ma trận.
- Bao quanh các phần tử của ma trận bằng dấu ngoặc vuông
- Các phần tử trong ma trận được cách nhau bởi ký tự trống hoặc dấu phẩy ( , ).
- Kết thức một hàng trong ma trận bởi dấu ( ;).
c. Các cách để nhập một ma trận
- Liệt kê trực tiếp: VD >> A = [ 1 2 3; 4 5 6; 7 8 9]



>> B = [1 2 3;
4 5 6;
789]
- Nhập thông qua lệnh . Dùng lệnh input
>> input (‘ Nhap gia tri cho ma tran C =’)
Nhap gia tri cho ma tran C = [ 1 3 4; 4 5 7; 7 5 8]
Ans =
3 4
4 5 7
7 5 8
Chú ý khi kết thúc một câu lệnh có thể dùng dấu (;) hoặc không dùng dấu (;).
- Nếu dùng dấu (;) câu lệnh được thực hiện nhưng kết quả không hiện ra màn
hình.
- Nếu không dùng dấu (;) câu lệnh được thực hiện và kết quả được hiện ra màn
hình.
- Trong cả 2 trường hợp trên sau khi câu lẹnh được thực hiện kết quả đều được
lưu vào trong bộ nhớ và có thẻ sử dụng cho các câu lệnh tiếp theo.
Vd
>> a = [ 1 2 3; 3 2 4; 4 5 1];
>> b = [1 2 3; 4 5 6 ; 7 8 9]
b=
1 2 3
4 5 6
7 8 9
Cả 2 ma trận A, B đều được lưu vào trong bộ nhớ và có thể được sử dụng cho
những câu lệnh tiếp theo.
>> c = a *b
c=

30 36 42
39 48 57
31 41 51


d. XỬ LÝ TRONG MA TRẬN:
d.1. Tạo vectơ từ ma trận
Công thức tổng quát: Biến = giới hạn đầu : bước chạy : giới hạn cuối
Giới hạn đầu, giới hạn cuối, bước chạy: là các số thực
Bước chạy có thể dương hoặc âm.
Vd Tạo 1 vectơ t chạy từ 0 đến 0.6 với bước chạy tiến là 0.1
>> t = 0: 0,1: 0.6
t=
0

0.10000.20000.3000 0.4000

0.5 000

0.6000

Vd Tạo 1 vectơ t chạy từ 0.6 đến 0 với bước chạy lùi là 0.1
>> t = 0.6:-0.1:0
t=
0.60000.50000.40000.30000.20000.10000
Chú ý: Trong trường hợp giới hạn trên, giới hạn dưới là các số nguyên và bước
chạy bằng 1 thì ta không cần đưa bước chạy vào trong biểu thức.
VD >> C = 1:5
C =
1


2

3

4

5

d.2. Gọi các phần tử trong ma trận.
MATLAB cho phép ta xử lý đến từng phần tử của ma trận. Để truy cập đến
từng phần tử của ma trận ta phải gọi được chúng thông qua chỉ số của từng phần tử .
Tên của ma trận ( Chỉ số hàng, chỉ số cột)
VD:
>> A = [ 1:3 ; 4:6 ; 7 :9]
A=
2 3
4 5 6
7 8 9
>>B = A ( 1, 1)
B=
1


>>A(3,3) = A (2,2) +B
A=
1

2


3

4

5

6

7

8

6

Chú ý : Trong trường hợp ta muốn gọi tất cả các hàng hoặc tất cả các cột ta có
thể dùng toán tử hai chấm ( : )
VD :
>>A = [1:3;4:6;7:9]
A=
1

2

3

4

5

6


7

8

9

4

5

6

>>B=A(2,:)
B=

>>C=A(:;2)
C=
2
5
8
d.3.

Gọi 1 ma trận con từ một ma trận lớn
VD
>>A= [1:3;4:6;7:9]
A=
1

2


3

4

5

6

7

8

9

>>B=A(2:3,1:2)
B=


4

5

7

8

>>c =[a(1,1) a(3,3);a(2,3) a(3,1)]
C=
9

6

7

e. Các Ma Trận Đăc Biệt:
e.1. Ma trận zeros.
Tất cả các phần tử trong ma trận đều bằng 0.
VD
>>C=zeros (2,3)
C=
0

0

0

0

0

0

0

0

0

0


0

0

0

0

0

>>d = zeros (3)
d=

e.2. Ma trận ones.
Tất cả các phần tử trong ma trận đều bằng 1
VD
>>C=ones (2,3)
C=
1

1

1

1

1

1


1

1

1

1

1

1

1

1

1

>>d = ones(3)


e.3. Ma trận ma phương Magic:
Tổng tất cả giá trị các phần tử trên hàng = Tổng tất cả giá trị các phần tử trên
cột =Tổng tất cả giá trị các phần tử trên đường chéo của ma trận
Vd
>>A = Magic (3)
A=
8

1


6

3

5

7

4

9

2

e.4. Ma trận eye.
Tất cả các phần tử trên đường chéo có giá trị 1, các phần tử khác có giá trị 0.
VD
>>B=eye(3)
B=
1

0

0

0

1


0

0

0

1

2.2.6. Định nghĩa m-file và hàm trong MATLAB
a. M-file
Một vấn đề cơ bản là, yêu cầu của bạn tại dấu nhắc của MATLAB trong cửa sổ
lệnh là nhanh và hiệu quả. Tuy nhiên vì số lệnh tang lên, hoặc khi bạn muốn thay đổi
giá trị của một hoặc nhiều biến và thực hiện lại một số lệnh với giá trị mới, nếu cứ
đánh lặp lại tại dấu nhắc của MATLAB thì sẽ trở nên buồn tẻ, do vậy MATLAB cung
cấp một giải pháp cho vấn đề này là: nó cho phép thay thế các lệnh của MATLAB
bằng một file văn bản đơn giản, và yêu cầu MATLAB mở file và thực hiện lệnh chính
xác như là đánh tại dấu nhắc của MATLAB tại cửa sổ lệnh, những file này gọi là
script file , hoặc đơn giản là M_file. Danh từ “script” để chỉ rằng thực tế MATLAB
đọc từ file kịch bản tìm thấy trong file. Danh từ “M_file” để chỉ rằng tên script file đó
phải kết thúc bằng phần mở rộng là ‘.m’ như ví dụ example1.m.
Để tạo một script M_file, chọn File New M-file. Thủ tục này sẽ tạo ra màn
hình soạn thảo, và bạn có thể đánh được các lệnh của MATLAB trong đó. Ví dụ dưới
đáy là các lệnh trong ví dụ ước lượng chiều cao ngôi nhà ơ trước :


Chúng ta có thể ghi và lưu giữ file bằng cách chọn Save từ bảng chọn file. Khi
bạn ghi lên file chú ý phải đánh tên file trùng với tên hàm (example) không cần đánh
vào phần mở rộng. MATLAB tự gán vào cho nó. Khi đó từ dấu nhắc ta có thể đánh:

b. Hàm trong MATLAB

Việc xây dựng hàm cũng được thực hiện tương tự như m-file. Tuy nhiên, đối
với hàm ta cần quan tâm đến các tham số truyền cho hàm và các kết quả trả về sau khi
thực hiện. Các điểm cần lưu ý:
◄ Tên hàm phải được đặt trùng với tên file lưu trữ.
◄ Phải có từ khóa function ở dòng đầu tiên.
◄Thân chương trình không bắt đầu bằng từ khóa Begin và không kết thúc bằng
từ khóa End như ngôn ngữ lập trình Pascal.
◄ Trong một hàm có thể xây dựng nhiều hàm con (điều này không có trong
script file). Kết thúc hàm con phải có từ khóa end (điều này không cần trong hàm
‘cha’).
◄Danh sách tên kết quả và tham số đầu vào được cách nhau bằng dấu phẩy.
Cấu trúc của hàm như sau


×