1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo phương pháp phần tử hữu hạn

34 230 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 770,56 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

MATLAB (Matrix Laboratory) vừa là một ngôn ngữ lập trình vừa là một phần mềm ứng dụng tính toán rất hiệu quả MATLAB cho phép tính toán số với ma trận, vẽ đồ thị hàm số hay biểu đồ thông tin, thực hiện thuật toán, tạo các giao diện người dùng và liên kết với những chương trình máy tính viết trên nhiều ngôn ngữ lập trình khác. MATLAB giúp đơn giản hóa việc giải quyết các bài toán tính toán kĩ thuật so với các ngôn ngữ lập trình truyền thống như C, C++, và Fortran. MATLAB là ngôn ngữ của tính toán khoa học.

Trang 1

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

Trang 2

MỤC LỤC

Mở đầu

Chương 1: Giới thiệu Matlab

1.1 Khái niệm về Matlab

1.2 Ứng dụng của MatLab

1.3 Vẽ đồ thị trong Matlab

Chương 2: Lập trình phần tử hữu hạn 21

2.1.Tổng quan về lập trình phần tử hữu hạn .21

2.2.Thực hành lập trình .21

Kết luận 36

Tài liệu tham khảo 37

2

Trang 3

Nhiều phần mềm ứng dụng ra đời dựa trên cơ sở phương pháp phần tử hữu hạn như: SAP, NASTRAN, ABAQUS,SAMCEF, MIDAS, ANSYS … Trong bản báo cáo này, chúng em sử dụng Matlab - một công cụ phần mềm có lợi thế trong kỹ thuật lập trình phần tử hữu hạn, đáp ứng được nhiều bài toán.

MATLAB là một môi trường tính toán số và lập trình, được thiết kế bởi công ty MathWorks

MATLAB (Matrix Laboratory) vừa là một ngôn ngữ lập trình vừa là một phần

mềm ứng dụng tính toán rất hiệu quả

MATLAB cho phép tính toán số với ma trận, vẽ đồ thị hàm số hay biểu đồ thông tin, thực hiện thuật toán, tạo các giao diện người dùng và liên kết với những

chương trình máy tính viết trên nhiều ngôn ngữ lập trình khác MATLAB giúp đơn giản hóa việc giải quyết các bài toán tính toán kĩ thuật so với các ngôn ngữ lập trình truyền thống như C, C++, và Fortran

MATLAB là ngôn ngữ của tính toán khoa học

Bản báo cáo của nhóm chúng em bao gồm các nội dung: giới thiệu về phần mềm Matlab, tóm tắt một số lệnh cơ bản trong Matlab nhằm phục vụ cho lập trình phần

tử hữu hạn và thực hiện lập trình phần tử hữu hạn để giải bài toán cụ thể Do trình

độ và thời gian nghiên cứu còn hạn chế nên những vấn đề mà nhóm tôi trình bày sẽkhông tránh khỏi thiếu sót Chúng em kính mong nhận được sự chỉ bảo, góp ý của thầy và các bạn để bài báo cáo được hoàn thiện hơn

3

Trang 4

CHƯƠNG I: GIỚI THIỆU VỀ MATLAB

trận (matrix-based programming language)

Steve Bangert là người đã viết trình thông dịch cho MATLAB

Năm 1984, Jack Little kết hợp với Moler và Steve Bangert quyết định đưa MATLAB thành dự án thương mại - công ty The MathWorks ra đời thời gian này.Phiên bản đầu tiên MATLAB 1.0 ra dời năm 1984 viết bằng C cho MS-DOS PC

Ban đầu Matlab được phát triển để hỗ trợ sinh viên sử dụng hai thư

viện LINPACK và EISPACK dùng cho đại số tuyến tính (viết bằng Fortran) mà không cần biết lập trình Fortran

Năm 1986, MATLAB 2 ra đời trong đó hỗ trợ UNIX

Năm 1987, MATLAB 3 phát hành

Năm 1990 Simulink 1.0 được phát hành gói chung với MATLAB

Năm 1992 MATLAB 4 thêm vào hỗ trợ 2-D và 3-D đồ họa màu và các ma

trận truy tìm Năm này cũng cho phát hành phiên bản MATLAB Student

Edition(MATLAB ấn bản cho học sinh).

Năm 1993 MATLAB cho MS Windows ra đời Đồng thời công ty này có trang web là www.mathworks.com

Năm 1995 MATLAB cho Linux ra đời Trình dịch MATLAB có khả năng chuyển dịch từ ngôn ngữ MATLAB sang ngôn ngữ C cũng được phát hành trong dịp này

Năm 1996 MATLAB 5 bao gồm thêm các kiểu dữ liệu, hình ảnh hóa, bộ truy sửa lỗi (debugger), và bộ tạo dựng GUI

Năm 2000 MATLAB 6 cho đổi mới môi trường làm việc MATLAB, thay thếLINPACK và EISPACK bằng LAPACK và BLAS.[1]

Năm 2002 MATLAB 6.5 phát hành đã cải thiện tốc độ tính toán, sử dụng

4

Trang 5

phương pháp dịch JIT (Just in Time) và tái hỗ trợ MAC.

Năm 2004 MATLAB 7 phát hành, có khả năng chính xác đơn và kiểu

nguyên, hỗ trợ hàm lồng nhau, công cụ vẽ điểm, và có môi trường phân tích số liệu tương tác

Đến tháng 12, 2008, phiên bản 7.7 được phát hành với SP3 cải thiện

Simulink cùng với hơn 75 sản phẩm khác

Năm 2009 cho ra đời 2 phiên bản 7.8 (R2009a) và 7.9 (R2009b)

Năm 2010 phiên bản 7.10 (R2010a) cũng đã được phát hành

Matlab được dùng rộng rãi trong giáo dục, phổ biến nhất là giải các bài toán

số trị (cả đại số tuyến tính lẫn giải tích) trong nhiều lĩnh vực kĩ thuật

1.2 Vài nét về thao tác trong Matlab

Các lệnh vẽ đồ họa trong matlab: matlab cung cấp một loạt hàm để vẽ biểu diễn

các vecto số liệu cũng như giải thích và in các đường cong này

Plot đồ họa 2-D với số liệu 2 trục vô hướng và tuyến tính

Plot3 đồ họa 3-D với số liệu 2 trục vô hướng và tuyến tính

Polar đồ họa trong hệ tọa độ cực

Loglog đồ họa với các trục logarit

Semilogx đồ họa với các trục x logarit và trục y tuyến tính

Semilogy đồ họa với trục y logarit và trục x tuyến tính

Plotyy đồ họa với trục y có nhãn ở bên trái và bên phải

Đặc tả màu và kích thước đường vẽ: Để đặt tả màu và kích thước

đường vẽ ta dùng các tham số sau:

Linewidth: độ rộng đường thẳng tính bằng điểm

5

Trang 6

MarkerEdgeColor: màu của các cạnh của khối đánh dấu

MarkerFaceColor: màu của khối đánh dấu

MarkerSize: kích thước của khối đánh dấu

Các phép toán logic và quan hệ:

< = (> =) Một biểu thức nhỏ hơn (lớn hơn) hoặc bằng biểu thức khác

< ( > ) Một biểu thức nhỏ hơn (lớn hơn) biểu thức khác

Phép toán logic “not”

Trang 7

Cond Số điều kiện của 1 ma trận

Bảng dấu:

BT Màu BT Ðánh dấu BT Kiểu nét vẽ

Trang 8

Lệnh và hàm sử dụng rất đơn giản

Có thể xây dựng những hàm riêng cho những ứng dụng đặc biệt

Cung cấp thư viện hàm đồ họa rất mạnh

Cung cấp gói ứng dụng Simulink đầy đủ để mô phỏng

Nhìn chung, Matlab là công cụ hữu ích cho các thao tác tính toán như

ma trận, vectơ, tính tích phân, đạo hào, vẽ đồ thị,v.v… Các thao tác này là phần cơ bản trong phương pháp phần tử hữu hạn Sau đây chúng tôi xin giới thiệu tóm tắt các lệnh cơ bản trong Matlab nhằm phục vụ cho việc lập trình phần tử hữu hạn.

1.4 Ma trận trong Matlab.

1.3.1 Các cách nhập ma trận trong Matlab.

Matlab cung cấp một vài phương tiện cho người sử dụng để tạo ra một

ma trận, mỗi phương tiện có những ưu điểm của nó và được sử dụng tùy theotừng yêu cầu bài toán Nói chung Matlab cung cấp ba phương tiện

- Nhập ma trận trực tiếp từ cửa sổ Command Window

- Nhập ma trận từ m-file

- Nhập ma trận từ những hàm có sẵn trong Matlab

a Nhập ma trận trực tiếp từ cửa sổ Command Winodow.

Trong môn học toán cao cấp chúng ta đã biết nhập một ma trận như sau: A=

Đây là một ma trận có số hàng m=3 và số cột n=3 Để nhập ma trận trên trong Matlab ta nhập trực tiếp như sau:

Từ dòng nhắc lệnh trong cửa sổ command Window ta nhập

>> A=[2,7,0;4,8,6;5,3,1] và nhấn Enter sẽ cho kết quả là:

Trang 9

Ta có thể nhập một ma trận bằng cửa sổ soạn thảo M-file, mở cửa sổ này

bằng cách vào File New M-file Một cửa số soạn thảo sẽ được thực hiện ra

cho phép bạn soạn thảo dưới dạng text, do là cửa sổ soạn thảo dạng text cho nênbạn có thể soạn thảo từ file word sau đó sau đó copy vào cửa sổ M-file Để nhập

ma trận ta soạn thảo tương tự như trong cửa sổ command window sau đó lưu vào file như sau:

Ví dụ: A=[2,7,0;4,8,6;5,3,1]; %không có dấu chấm phẩy sẽ in ra kết quả

Cũng tương tư như trên nếu số phần tử trên một hàng quá nhiều thì ta có thể xuống dòng

>> A=[1,2,3,4, 5,6,7,8,9];

Sau khi kết thúc soạn thảo ta lưu vào tên_file

Để thực thi các lệnh nhập trong M-file ta dùng lệnh sau trong command window như sau:

Trang 10

>> ten_file;

c Nhập ma trận từ những hàm có sẵn trong Matlab.

Matlab có một thư viện các hàm cho phép tạo ma trận Sau đây là một số hàm:

- ones(m,n) tạo ma trận kích thước m x n, với các phần tử đều bằng 1, ones(m) tạo

ma trận vuông cấp m, với các phần tử đều nhau là 1

- zeros(m,n) tạo ma trận kích thước m x n, với các phần tử đều bằng 0, zeros(m) tạo ma trận vuông cấp m

- eyes(m) tạo ma trận đơn vị cấp m

Trang 11

Ma trận chuyển vị: Để tìm chuyển vị của ma trận A, chúng ta nhập:

là hàng đầu tiên của ma trận A

Cộng ma trận: Cộng hai ma trận được thực hiện như sau:

Trang 12

Chú ý rằng, C là một ma trận mới, không còn là tổng của hai ma trận A và B

Nhân hai ma trận: Tích hai ma trận A và B được thực hiện như sau:

Trang 13

S : biểu thức lấy tích phân

v : tên biến lấy tích phân

a,b : khoảng lấy tích phân

Trang 14

Tính

2

2 2 0

Cú pháp: Plot(tên biến, tên hàm)

Ý nghĩa: Vẽ đồ thị hàm 1 biến bằng cách nối các điểm dữ liệu

Các bước vẽ:

 Bước 1 : Khai báo biến

 Bước 2 : Chia miền đồ thị

biến, tên hàm)

CHÚ Ý

:

Điểm 14

Trang 15

dữ liệu càng nhiều (hay chia khoảng càng nhỏ) thì hình vẽ càng đúng với đồ thị hàm số liên tục (đường cong trơn liên tục)

• Cách 1 : x=[ xmin: bước : xmax]

 Ví dụ: x=[-10:1:10]

Nghĩa là x chạy từ -10 đến 10 bước 1 (bước nhỏ)

• Cách 2 : linespace(điểm đầu,điểm cuối,số điểm cần vẽ)

 Ví dụ : x=linspace(-10,10,100)

Nghĩa là Chia x từ -10 đến 10 thành 100 điểm

Plot(real(y),imag(y))

Với real (y) là phần thực, imag(y) là phần ảo

2 Đặt tiêu đề, tạo nhãn, vẽ lưới cho đồ thị :

Title(‘tên đồ thị’) : tạo tiêu đề đồ thị

Xlabel(‘nhãn trục x’) : tạo nhãn cho trục x

Ylabel(‘nhãn trục y’) : tạo nhãn cho trục y

Trang 16

linespec Tùy chỉnh các đối tượng của đồ thị ngoài cách dùng các lệnh, có thể tùy chỉnh trực tiếp trên đồ thị bằng cách sau :

 Tại cửa sổ Figure

 Click vào View trên thanh công cụ

 Chọn Property Editor

 Chọn đối tượng cần tùy chỉnh và thay đổi

16

Trang 18

4 Vẽ nhiều đồ thị trên cùng một trục tọa độ

Cách 1: plot(tên biến, tên hàm 1,tên biến, tên hàm 2)

Trang 20

 legend('y=sin(x)','y=cos(x)')

6 Vẽ nhiều đồ thị trong cùng

1 cửa sổ

Trong đó : -

m : số hàng được chia

- n : số cột được chia

- p : vùng hiển thị của đồ thị

Trang 21

21

Trang 22

CHƯƠNG 2: LẬP TRÌNH PHẦN TỬ HỮU HẠN

2.1 Tổng quan về lập trình phần tử hữu hạn

Trình bày cách viết các chương trình trong môi trường Matlab để giảiphương trình vi phân tuyến tính cấp hai bằng phương pháp phần tử hữu hạn.Tìmhiểu các bước cơ bản trong lập trình phần tử hữu hạn, sau đó minh họa các bướcnày thông qua một ví dụ cụ thể

Một cách tổng quát, có thể tóm tắt các bước lập trình giải phương trình viphân bằng phương pháp phần tử hữu hạn như sau:

1 Đọc dữ liệu đầu vào và xây dựng cơ sở dữ liệu để lưu thông tin các phần tử hữu hạn

2 Tính toán ma trận và vector trên mỗi phần tử hữu hạn

3 Lắp ghép các ma trận và vector phần tử để nhận được ma trận toàn cục A và vector toàn cục F

4 Tích hợp điều kiện biên vào ma trận A và vector F để nhận được hệ phương trìnhtuyến tính = �

5 Giải hệ phương trình tuyến tính để nhận được nghiệm xấp xỉ U

2.2 Thực hành lập trình.

Cho PTVP cấp 2 tuyến tính hệ số không phải là hàm hằng cùng với điều kiện biên Dirichlet hoặc Newman hoặc điều kiện hỗn hợp

1 Giải phương trình tìm nghiệm chính xác

2 Viết công thức nghiệm yếu

Trang 23

Ta có: (*)

⟺Xét PTTN: (1)

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

Xử lí điều kiện biên:

2 Công thức nghiệm yếu:

Trang 24

3 Ma trận và vector phần tử:

a) Tính chính xác ma trận và vec tơ trên phần tử thứ i:

Từ công thức nghiệm yếu ta có được ma trận trên phần tử thứ i là:

Trang 27

e=[1:n;2:n+1]; %ma trận cơ 2×n chứa

thông tin các phần tử hữu hạn

end

B2: TÍNH TOÁN MA TRẬN VÀ VECTO CHO MỖI PHẦN TỬ HỮU HẠN

function[Ae Fe]=element_matrice(x1,x2)

27

Trang 28

%Ma tran phan tu thu i

Ae=[(1/12*x2^5-1/3*x2^2*x1^3+1/2*x2*x1^4-1/4*x1^5)/(-hi^2), (-1/12*x2^4*x1+1/12*x2*x1^4)/(-hi^2);(-

%Tinh chinh xác ma tran va veto toan cuc

% Kich thuoc ma tran e

Trang 29

ĐỒ THỊ SO SÁNH

n=3 n=5

29

Trang 30

e=[1:n;2:n+1]; %ma trận cơ 2×n chứa

thông tin các phần tử hữu hạn

end

B2: TÍNH TOÁN MA TRẬN VÀ VECTO CHO MỖI PHẦN TỬ HỮU HẠN

function[Ae1 Fe1]=element1_matrice(x1,x2)

%Ma tran phan tu thu i

x1)),(x1^4+x2^4)./(8*(x2-x1));(x1^4+x2^4)./(8*(x2-x1)),(-5*x2^4-x1^4+8*x2^3*x1-4*x2^2*x1^2)./(8*(x2-x1))];

%Vecto phan tu thu i

Fe1=[(x1*x2-x1^2+x2-x1)./2;(x2^2-x1*x2+x2-x1)./2];

end

B3: LẮP GHÉP CÁC MA TRẬN VÀ VECTO PHẦN TỬ ĐỂ NHẬN ĐƯỢC

MA TRẬN A VÀ VECTO F TOÀN CỤC

function [A1 F1]=Global1_matrice(a,b,n)

%Tinh chinh xác ma tran va veto toan cuc

30

Trang 31

% Kich thuoc ma tran e

Trang 32

%dieu kien bien u(1)=0 va u(2)=1

ĐỒ THỊ SO SÁNH

32

Trang 33

KẾT LUẬN

MatLab là chương trình hỗ trợ rất mạnh về Toán, tất cả các phép toán về

Ma trận, vẽ đồ thị, ngoại suy, nội suy

+ Được tích hợp sẵn rất nhiều các toolbox và các hàm tính toán phức tạp, ta chỉ việc áp dụng

+ Thời gian tính toán tương đối nhanh (nếu biết tối ưu chương trình: MatLab tính toán dựa trên dạng Matrận nên nếu biết đưa các vòng lặp về dạng Matrận sẽrút ngắn được nhiều về thời gian tính toán)

+ Có thể tự học, tự mày mò để áp dụng (MatLab có rất nhiều Toolbox do nó hỗ trợ cho rất nhiều lĩnh vực khác nhau, tùy theo nhu cầu của bản thân mà ta tìm hiểu phần nào cần thiết, đừng để bị choáng trước sự "khổng lồ" của MatLab)

+ Muốn thành thạo sử dụng MATLAB bạn cần phải tự mình gõ các câu lệnh và xem kết quả câu lệnh, mắc lỗi và tìm cách sửa lỗi Cách học "trial and error" này theo tôi là cách tốt nhất để học lập trình Thời gian và công sức bạn bỏ ra bao nhiêu sẽ mang lại cho bạn nhiều kiến thức bấy nhiêu

+ Tài liệu về MATLAB hiện nay đã có rất nhiều, cả tiếng Việt và tiếng Anh Để

sử dụng MATLAB, không nhất thiết phải đọc nhiều sách Bạn hãy chọn một cuốn bất kì liên quan đến lĩnh vực ứng dụng của MATLAB mà bạn quan tâm để đọc, làm theo các ví dụ và suy nghĩ Tài liệu quan trọng nhất chính là Help của MATLAB, nếu như bạn có khả năng tự học tốt, Help là tài liệu duy nhất bạn cần

và nó đã có sẵn khi cài MATLAB

Xét cho cùng MATLAB chỉ là công cụ để thực hiện ý tưởng, MATLAB có thể cho ta kết quả nhưng nó không thay ta suy nghĩ, không mang cho ta kiến thức Nắm chắc kiến thức chuyên môn là chìa khóa để sử dụng MATLAB có hiệu quả

Trang 34

TÀI LIỆU THAM KHẢO

[1] Phương pháp phần tử hữu hạn, TS.Phạm Quí Mười (Chủ biên) – TS Phan Đức Tuấn, Nhà xuất bản thông tin và truyền thông

[2] Giáo trình phương pháp tính, TS.Nguyễn Phú Vinh (Chủ biên)

[3] Một số tài liệu tham khảo khác

Ngày đăng: 27/12/2018, 19:31

TỪ KHÓA LIÊN QUAN

w