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

Matlab tìm hiểu và ứng dụng giải một số bài toán kĩ thuật

60 2K 3
Tài liệu đã được kiểm tra trùng lặp

Đ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 60
Dung lượng 642,39 KB

Nội dung

Matlab tìm hiểu và ứng dụng giải một số bài toán kĩ thuật

Trang 1

Trường đạI học giao thông vận tảI

thuyết minh

đề tàI nghiên cứu khoa học cấp trường

matlab tìm hiểu và ứng dụng giải một số bài toán kĩ thuật

HANOI - 2002

Trang 2

mục lục

Phần 1 Giới thiệu về Matlab

1 Bắt đầu với Matlab

9 Các toán tử điều khiển

10 Các loại file trong Matlab

11 Xử lí tín hiệu

12 Vẽ đồ thị

Trang 3

Phần 2 ứng dụng Matlab giải một số bài toán kĩ thuật

1 Bài toán về mạch điện

2 Giải bài toán động học cơ cấu phẳng

3 Giải bài toán cân bằng máy

Trang 4

Giới thiệu

MATLAB là một bộ phần mềm dùng để tính toán các bài toán kĩ thuật,

được viết bằng ngôn ngữ C do hãng Math Works Inc sản xuất Nó được tạo trên cơ sở những phần mềm do các nhà lập trình của các dự án LINPACK và EISPACK viết ra bằng ngôn ngữ Fortran dùng cho việc thực hiện các phép tính và thao tác trên ma trận

Tên của phần mềm MATLAB là chữ viết tắt của ‘ matrix laboratory’ có nghĩa là ‘phương pháp ma trận’ Đến khi thực hành sử dụng phần mềm ta

sẽ thấy mỗi phần tử cơ bản của MATLAB là một ma trận

MATLAB liên tục được bổ sung và hoàn thiện Thời gian gần đây hãng sản xuất đã cho ra phiên bản mới nhất là MATLAB 6.0

Matlab là một phần mềm rất mạnh, cho phép giải rất nhanh các bài toán phân tích số liệu, tính toán ma trận, xử lí tín hiệu, mô phỏng và tạo vẽ đồ thị Lí do vì Matlab đã có một loạt các hàm chuyên giải quyết các vấn

đề đó được đặt trong Toolbox Thêm nữa, Matlab lại rất dễ sử dụng: nó không cần khai báo biến, các câu lệnh được viết rất gần gũi như khi viết các biểu thức toán học, tiết kiệm rất nhiều thời gian cho việc lập trình

Một đặc điểm nổi bật nữa của Matlab là nó có khả năng mở rộng: người

sử dụng có thể tự sáng tạo những file hàm đặt vào Toolbox để thực hiện giải những baì toán trong lĩnh vực chuyên môn của mình

Sau một thời gian tự tìm hiểu và ứng dụng chúng tôi thấy rằng MATLAB

là một phần mềm rất thích hợp cho việc giải các bài toán kĩ thuật trong nhiều lĩnh vực Đặc biệt trong các trường Đại học kĩ thuật nó có thể giúp cho các cán bộ nghiên cứu và sinh viên có được một công cụ sắc bén để nâng cao năng lực tính toán, tiết kiệm thời gian lập trình

Đó là lí do để nhóm nghiên cứu chúng tôi mạnh dạn thực hiện đề tài có tính chất tìm hiểu, giới thiệu và thử ứng dụng này

Trang 5

Phần 1 giới thiệu về matlab

1 Bắt đầu với Matlab

Sau khi bật máy tính, để khởi động Matlab, từ màn hình Destop, nhắp đúp trỏ chuột trái vào biểu tượng của Matlab trên màn hình

sẽ xuất hiện cửa sổ Command Window như hình dưới đây:

Ví dụ 1: Cần ttực hiện phép tính 201+191x32/44, từ dấu nhắc trên

Command Window ta gõ vào như sau:

Trang 6

Hình 2

Ví dụ 2: Nếu bạn muốn vẽ đồ thị hàm số y=5sinx+2cos2x+0,2x với biến

x chạy từ -10 đến 10, gia số của x là 0,1, trên Command Window bạn có thể gõ vào các lệnh như được thể hiện trong hình 3 dưới đây:

Hình 3 Sau khi bấm Enter ở dòng lệnh cuối cùng, chương trình chạy và cho kết quả là đồ thị như trong hình 4

Trang 7

trªn mµn h×nh sÏ xuÊt hiÖn mét cöa sæ so¹n th¶o Editor/ Debugger víi

tªn file lµ [Untitled1] nh− trªn h×nh 6 d−íi ®©y:

Trang 8

Hình 6 Viết chương trình vẽ đồ thị trên màn hình soạn thảo đó ( Hình 7)

Hình 7

Khi viêt xong ta đặt tên cho file và cất nó bằng cách bấm chọn File

\ Save as trên màn hình Editor / Debugger ( Hình 8) Cửa sổ Save as xuất hiện (hình 9): ta gõ

Trang 9

Hình 8

tên file, ví dụ dothi vào ô File name rồi bấm chọn Save Chương trình sẽ

được tự động cất vào thư mục Work của Matlab với tên là dothi và với

đuôi mặc định là m ( file vừa cất sẽ là dothi.m)

Hình 9

Để chạy chương trình trong file này, tại chỗ dấu nhắc trên màn hình

Command Window ta chỉ việc gõ tên file :

>> dothi

Trang 10

rồi bấm Enter.Chương trình sẽ được thực hiện và kết quả cho ra là đồ thị

a-Câu lệnh và biến trong Matlab

Các câu lệnh trong Matlab thường có dạng sau:

biến = biểu thức

Tên biến được bắt đầu bằng một chữ cái, sau đó có thể là các chữ và số

Ví dụ:

a2=4/5 Matlab chấp nhận tên biến (cũng như tên hàm) có đến 19 kí tự và phân biệt chữ in hoa với chữ in thường Ví dụ : A và a là tên hai biến khác nhau

Không giống với một số phần mềm lập trình khác, ở đây biến không phải khai báo trước Nếu không viết tên biến và dấu = trước biểu thức thì

chương trình sẽ tự động tạo tên biến là ans ( đứng cho chữ answer)

Ví dụ:

>> 4/5

ans =

0.8000 Nếu cuối câu lệnh ta đánh dấu kết thúc ‘ ; ‘ thì các phép tính được thực hiện nhưng không xuất kết quả ra màn hình Ngược lại nếu không gõ dấu kết thúc lệnh thì kết quả tính được in ra màn hình Ví dụ:

>> b20=30+3^4/35

b20 =

32.3143 Nếu câu lệnh quá dài không thể viết hết được trên một dòng thì có thể dùng dấu ba chấm ( ) để viết tiếp trên dòng thứ hai Ví dụ:

>> b = 22.334 - 45.12 + 89.222 – ( 123.30+330.2)/217.22

+ 87.32 – 443.112 ; Muốn viết lời chú dẫn, trước dòng đó ta gõ dấu % Ví dụ:

% Day la chuong trinh giai phuong trinh vi fan bậc hai

Khi chạy chương trình, máy sẽ bỏ qua dòng này

b Các phép toán

• Các phép toán số học: nối các toán hạng trong biểu thức

được với nhau Dấu các phép toán như sau:

- trừ

* nhân

Trang 11

~ không Các phép toán quan hệ và lô gíc thường được dùng trong các biêủ thức của các toán tử điều khiển như if, while

c Số dùng trong Matlab

Matlab dùng số thập phân truyền thống với số chữ số thập phân tuỳ chọn Bạn cũng có thể dùng số dưới dạng luỹ thừa của 10 và số có đơn vị phức Dưới đây là một số ví dụ về các số hợp thức dùng trong Matlab:

3.09837412 12.6529E4 20.2908e-2

d- Nhập số liệu từ bàn phím

Dùng lệnh input với qui cách viết như sau:

a=input(‘ Hãy nhập giá trị của a : a = ‘)

Khi chạy chương trình máy sẽ dừng để đợi ta gõ vào từ bàn phím giá trị

của a, sau đó bấm Enter

Trang 12

Ma trËn ®−îc biÓu thÞ trong dÊu ngoÆc vu«ng, mçi phÇn tö trªn mét hµng

®−îc c¸ch nhau b»ng c¸c « trèng hoÆc dÊu phÈy (,), cßn mçi hµng ®−îc ng¨n c¸ch bëi dÊu chÊm phÈy (;)

VÝ dô : viÕt ma trËn A gåm 3 hµng 3 cét trªn mµn h×nh Command Window

Matlab cã thÓ thùc hiÖn ®−îc c¸c phÐp to¸n vÒ sè phøc Sè phøc

®−îc biÓu thÞ nhê hµm i vµ j VÝ dô viÕt sè phøc z dïng i vµ j nh− d−íi ®©y cho kÕt qu¶ nh− nhau:

- sinh : sin hypecb«lic

- cosh : cosin hypecb«lic

- tanh : tang hypecb«lic

Trang 13

- asinh : sin hypecb«lic ng−îc

- acosh : cosin hypecb«lic ng−îc

- atanh : tang hypecb«lic ng−îc

Trang 15

+ Vết của ma tr ận : Dùng lệnh diag để tạo một ma trận cột mà

các phần tử của nó là các phần tử nằm trên đường chéo của ma trận cho

trước Ví dụ: muốn có vết của ma trận h ở trên ta làm như sau:

Trang 18

Ví dụ: Nhân số 3 với ma trận a ở trên

>> t=3*a

t =

3 9 -12 15

6 -3 6 0

12 18 -3 3

0 3 9 15

- Nhân ma trận với ma trận Điều kiện để hai ma trận nhân được với nhau là số cột của ma trận thứ nhất phải bằng số hàng của ma trận thứ hai Ví dụ ta nhân ma trận b dưới đây với ma trận a: >> b=[3 7 0 9]; >> tich=b*a tich = 17 11 29 60

Ví dụ nữa là ta nhân ma trận a với ma trận chuyển vị của b: >> tich2=a*b' tich2 = 69

-1

63

52

- Chia ma trận Ma trận x= A\B với điều kiện : A*x=B (*)

Ví dụ: A=[ 2 1 9 7; 1 3 8 5; 5 3 4 2; 9 0 6 6] A = 2 1 9 7

1 3 8 5

5 3 4 2

9 0 6 6

B=[12; 2; -6; 8 ]' B = 12

2

-6

8

x= A\B

Trang 19

- Ma trận nghịch đảo : Dùng hàm inv

Ví dụ: Tính ma trận nghịch đảo của ma trận A ở trên

gọi An là ma trận nghịch đảo của ma trận A thì:

Thử tìm nghiệm x từ phương trình (*) khi dùng ma trận nghịch đảo:

Ta có nghiệm x được viết như sau: x=A-1.B

Gõ vào dòng lệnh sau:

Trang 21

6 Các hàm thực hiện các phép tính với đa thức

- Hàm poly : Xác định đa thức khi biết trước nghiệm

Quy các viết p=poly(b)

trong đó b là một ma trận hàng

Kết quả sẽ cho ra là một ma trận hàng mà mỗi phần tử của nó là một hệ

số của một đa thức có nghiệm là các phần tử của ma trận b ( theo số mũ giảm dần)

Trang 22

x4- 2x3 - 13x2 + 38x - 24 = 0

- Hàm roots : Xác định nghiệm của đa thức

trong đó b là ma trận hàng với các phần tử là các hệ số của đa thức (theo

số mũ giảm dần) Kết quả cho ra là một ma trận cột mà các phần tử là nghiệm của đa thức

Ví dụ: Thử tìm lại nghiệm của đa thức trên Ta viết các lện như sau:

Quy cách viết: a=conv(b,c) trong đó b,c là hai ma trận hàng có các phần

tử là các hệ số của các đa thức cần nhân Kết quả cho ra là ma trận a có các phần tử là hệ số của ma trận tích

Ví dụ : cần nhân hai đa thức x3+2x2+6 và 3x4-6x2+5x-10 ta làm như sau:

- Hàm deconv : Dùng chia hai đa thức

Qui cách viết như sau: [ m , n] = deconv(p,q)

với p và q là hai ma trận hàng có các phần tử là các hệ số của đa thức bị chia và đa thức chia, còn các phần tử của ma trận m,n là các hệ số của đa thức thương và phần dư

Ví dụ : Ta thử chia ngay đa thức tích vừa có ở trên cho đa thức có các hệ

số là các phần tử của ma trận c, tức đa thức: 3x4-6x2+5x-10

a=[3 6 -6 11 0 -56 30 -60];

c=[3 0 -6 5 -10];

[b,d]=deconv(a,c)

Trang 23

Các hàm tìm giá trị cực đại, cực tiểu và trung bình

- Hàm max : Tìm giá trị lớn nhất

Qui cách viết ln=max(a)

với a là ma trận hàng Kết quả cho ra là một phần tử có giá trị lớn nhất của a

Trang 24

- Hàm Interp1 : Dùng tìm các giá trị bị khuyết

Ví dụ: Đã biết giá trị của hàm y=x3-3x+4 tại các điểm có x=0,1,2,3,4 và

5 Hãy xác định giá trị của y tại các điểm có x= 0,3, 0,5, , 4.2, 4,8

Trang 25

Columns 8 through 10

65.6800 100.4800 114.0000

Đó là 10 giá trị của y ứng với 10 giá trị của x ( trong chương trình tính là x2) Còn đồ thị sẽ cho thấy sự ppù hợp của các kết quả này: Các điểm vẽ bằng dấu ‘+’ là biểu thị các điểm cần tìm, còn các điểm vẽ bằng dấu ‘o’

Trang 26

12.0517

b Hàm để tìm nghiệm phương trình phi tuyến và các hàm tối

ưu

- Hàm fzero : xác định nghiệm của hàm một biến

- Hàm fmin : tính giá trị cực tiểu của hàm một biến

- Hàm fmins : tính các giá trị cực tiểu của hàm nhiều biến

Ví dụ: Dùng hàm fzero tìm nghiệm của phương trình sau tại vị trí gần

Chạy chương trình chính, kết quả cho trên màn hình như sau:

Zero found in the interval: [0.36, 1.4525]

Ta thấy y~ 0 và có thể nói kết quả đủ chính xác

c Hàm để giải phương trình vi phân : hàm ode23 và ode34

Ví dụ: Giải phương trình vi phân Van de Pol có dạng như sau:

Trang 27

xc=zeros(2,1);

xc(1)=x(1).*(1-x(2).^2)-x(2);

xc(2)=x(1);

Viết file chính có tên ftvf0.m như dưới đây:

9 Các toán tử điều khiển

Cũng như các phần mềm lập trình khác, các toán tử điều khiển cũng có

trong Matlab Đó là toán tử vòng lặp for, while và toán tử lựa chọn if

- Toán tử for

for biến = biểu thức các câu lệnh end

Biểu thức ở đây thường có dạng m:n hoặc m:i:n, trong đó m, n là

giá trị đầu và cuối, còn i là gia số

Trang 28

- To¸n tö ®iÒu kiÖn if

To¸n tö cã d¹ng chung nh− sau:

if biÓu thøc c¸c c©u lÖnh

Trang 29

a=5*k+4

10 các loại file dùng trong matlab

Có hai loại file là M-File và file dữ liệu (data file) Các file có chứa các lệnh của Matlab được gọi là M- file Sở dĩ gọi là M- file vì phần mở rộng của các file này là m

Có hai loại M- file là script file và function file (file hàm)

Script File

Khi Script được kích hoạt Matlab đơn giản thực hiện các lệnh tìm thấy trong file Các câu lệnh trong file này thì hoạt động trên toàn bộ các dữ liệu trong Workspace

Ví dụ : file lg.m dưới đây là một script file:

% File dung tinh ham luong giac va ve do thi

Là một M-File có chứa từ function tại vị trí đầu tiên trên dòng đầu của

file Với function file, các biến được định nghĩa và hoạt động chỉ trong

phạm vi file, chứ không có tính toàn cục như trong script file Function file rất tiện ích trong việc mở rộng thêm khả năng của Matlab, cụ thể là tạo thêm được các Matlab file mới

Dưới đây là một ví dụ về function file được tạo để giải phương trình bậc

hai, tên file là ftb2.m :

function [x1 , x2] = ftb2(a,b,c) % File ham nay dung de giai Fuong trình bac hai : ax^2+bx+c=0 % voi a, b, c la cac hang so cho truoc Cac nghiem là x1 va x2

File dữ liệu ( data file)

Ta có thể ghi số liệu vào một file gọi là file số liệu với phần mở rộng là dat Khi cần file có thể được gọi ra

Trang 30

Dưới đây là ví dụ về tạo và gọi file số liệu:

Giả sử ta có một ma trận hàng a như sau:

>>a=1:8

a =

1 2 3 4 5 6 7 8

Giờ ta muốn ghi các giá trị của ma trận a vào một file dữ liệu có tên là

sl1.dat, ta dùng lệnh save với qui cách viết như sau:

>> save sl1.dat a -ascii

Khi đó ma trận a đã được lưu trong fil sl1.dat Nếu muốn gọi ra các số

liệu này và gán cho cho nó một tên biến mới, ví dụ là x, ta dùng lệnh

load với qui cách viết như sau:

Matlab có một số hàm dùng để xử lí tín hiệu số dưới đây:

abs - giá trị (mô đun) của số phức

angle – góc pha

conv - tích chập ( convolution)

deconv – ( deconvotution)

fft - biến đổi Fu ri ê nhanh

ift - biến đổi ngược Fu ri ê

Trang 31

12 vẽ đồ thị

Matlab rất mạnh với việc vẽ đồ thị Dưới đây trình bày cách vẽ đồ thị trong không gian hai chiều (2D) và ba chiều (3D)

a.Vẽ đồ thị 2D

Vẽ các đường cong thông thường:

Dùng lệnh plot với qui cách viết như sau:

plot(x,y) trong đó x và y là các ma trận hàng (hoặc cột ) cùng cỡ Matlab sẽ vẽ ra một đường cong của y theo x

Nếu bạn muốn chọn màu và kiểu nét vẽ cho đương cong có thể làm theo

ví dụ sau:

plot(x,y, 'r*')

Khi chạy, Matab sẽ cho bạn đường cong tạo bởi các dấu *** và có màu

đỏ (chữ r đứng cho từ red trong tiếng Anh, nghĩa là đỏ)

Dưới đây là bảng kí hiệu màu và kiểu nét vẽ dùng khi vẽ đồ thị:

Đỏ Xanh lá cây Xanh nước biển Trắng

Đen

°

ì +

- : -

Điểm Vòng tròn Dấu nhân Dấu cộng Dấu sao Nét liền Nét chấm Nét đứt Nét chấm gạch

Cũng có thể vẽ nhiều đường cong trên cùng một hệ trục toạ độ

Ví dụ: lệnh vẽ sau sẽ cho 3 đường cong khác nhau trên một hình:

plot(x1,y1,’r *’,x2,y2,’g+’x3,y3,’w -‘)

Nếu bạn muốn đặt tên cho đồ thị hãy dùng lệnh title

Bạn cũng có thể đặt tên cho các trục toạ độ x và y bằng cách dùng lệnh

Còn để tạo lưới trên hình vẽ dùng lệnh grid

Cụ thể ta làm một ví dụ dưới đây:

Vẽ trên cùng hệ trục toạ độ đồ thị hai hàm số sau

y1=e-5tsin5t ; y2= e-5t cos5t;

Trang 32

với biến t chạy từ - 4 đến +4:

Ta viêt file p2d.m để vẽ đồ thị nh− sau:

% Chuong trinh ve do thi 2D

t=-4:.05:4;

y1=exp(-.5*t).*sin(5*t);

y2=exp(-.5*t).*cos(5*t);

xlabel(' Gia tri t ')

ylabel('gia tri y1, y2')

Ví dụ: ta vẽ hai đồ thị y1=y1(t) và y2=y2(t) vừa nêu trên cùng một hình

nh−ng lại trên hai hệ trục riêng biệt, ta viết lại các các lệnh ( tính từ lệnh

plot(t,y1, ) nh− sau:

subplot(211)

Trang 33

ylabel('gia tri y2')

Trang 34

Vẽ Đồ thị dạng thanh (Bar)

Đồ thị bar biểu diễn giá trị của một véc tơ hay một ma trận dưới dạng

các thanh thẳng đứng hay nằm ngang Bar(y) biểu diễn các phần tử của

véc tơ y nếu y là một véc tơ Nếu y là một ma trận, một nhóm thanh sẽ

biểu diễn các phần tử trong một hàng, trục x sẽ biểu diễn số hàng

Ví dụ: Vẽ đồ thị biểu thị số sinh viên tốt nghiêp của một trường Đại học

từ năm 1995 đến 2001, biết số sinh viên tốt nghiệp tương ứng là 1000,

Lệnh Pie(x) biểu thị thành phần phần trăm theo dữ liệu trong x Mỗi

phần tử trong x được đại diện bằng một phần của đồ thị Pie

Pie(x,explode) đặt các phần tử cho đồ thị Pie Explode là một véc tơ hay

một ma trận của số 0 và 1 tương ứng với x Các phần tử là 0 sẽ tương ứng

với các phần tạo thành một khối liền trong đồ thị pie Nếu là giá trị 1 thì

phần tử tương ứng với mẩu trên đồ thị sẽ được tách rời khỏi khối liền

trong đồ thị Pie Explode phải có cỡ giống với x

Ví dụ : Biểu diễn thành phần phần trăm của các loại vật liệu có

trong một hỗn hợp

x=[7 15 56 12 10];

Ngày đăng: 24/04/2013, 21:44

HÌNH ẢNH LIÊN QUAN

Đồ thị pie. - Matlab tìm hiểu và ứng dụng giải một số bài toán kĩ thuật
th ị pie (Trang 34)
Đồ thị chính xác của i1 và i2 có dạng nh− hình d−ới đây: - Matlab tìm hiểu và ứng dụng giải một số bài toán kĩ thuật
th ị chính xác của i1 và i2 có dạng nh− hình d−ới đây: (Trang 41)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w