Tổng quan về Matlab

Một phần của tài liệu (LUẬN văn THẠC sĩ) sử dụng một số mô hình dao động và sóng điện tử được xây dựng bằng ngôn ngữ lập trình matlab để giảng dạy chương dao động và sóng điện tử vật lý lớp 12 ban nâng cao (Trang 42)

CHƢƠNG 2 : TỔNG QUAN VỀ MƠ HÌNH MATLAB VÀ ỨNG DỤNG

2.2 Tổng quan về Matlab

2.2.1. Quá trình hình thành và phát triển của Malab

Malab ban đầu đƣợc viết bởi ngôn ngữ Fortran, cho đến 1980 nó vẫn chỉ là một bộ phận đƣợc dùng trong nội bộ của trƣờng Đại học Stanford. Năm 1983, Jack Little, một ngƣời đã học ở MIT và Stanford, đã viết lại MATLAB bằng ngôn ngữ C và nó đƣợc xây dựng thêm các thƣ viện phục vụ cho thiết kế hệ thống điều khiển, hệ thống hộp công cụ (tool box), mô phỏng... Jack xây dựng MATLAB trở thành mơ hính ngơn ngữ lập trính trên cơ sở ma trận, Steve Bangert là ngƣời đã viết trính thơng dịch cho MATLAB. Cơng việc này kéo dài gần 1½ năm. Sau này, 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 - năm 1984[ 11 ].

Nhƣ vậy, Matlab là sản phẩm của công ty phần mền Mỹ MathWorks, có thể chạy đƣợc dƣới nhiều hệ điều hành, trên nhiều loại máy tình, từ các máy vi tình đến các siêu máy tình. Đây là phần mềm để giải các bài tốn khoa học, kỹ thuật, kinh tế và tài chình trên máy tình một cách dễ dàng và tiện lợi. MatLab là phần mền thƣơng mại lớn, nó đã đƣợc sử dụng rộng rãi tại nhiều trƣờng đại học, viện nghiên cứu trong nƣớc và trên thế giới. Tên MatLab bắt nguồn từ chữ matrix laboratory, hết sức tiện lợi khi cần tình tốn và xử lý trên các đối tƣợng có cấu trúc ma trận, là một ngơn ngữ bậc cao, có số lƣợng các hàm trong và ngoài rất lớn cho phép viết chƣơng trính rất ngắn, dễ lập trính

2.2.2 Matlab là ngơn ngữ lập trình

Matlab là phần mềm cho phép ta viết các chƣơng trính phức tạp bằng cách nhanh nhất. Mỗi lệnh của nó đƣợc coi nhƣ một chƣơng trính con.

Vì dụ: Tím nghiệm xn của phƣơng trính s sin(x)/(x^2+1)+0.1*x-0.53=0 trong đó 0<= xn < 10

Giải:

sin(x)/(x^2+1)+0.1*x-0.53=0 xn : 0<= xn < 10

2.2.3 Các đặc điểm chính của ngơn ngữ lập trình Matlab

Là ngơn ngữ lập trính, Matlab có các đặc điểm chình sau:

 Dễ xử lý các cấu trúc ma trận thực và phức, các xâu ký tự.

 Có thể xử lý các biểu thức toán và dễ dàng kết hợp với các tình tốn số.

 Khả năng đồ hoạ mạnh và dễ dàng kết hợp với các tình tốn số.

 Số lƣợng các hàm rất lớn,chúng ln hồn thiện, bổ sung và phát triển.

 Cho phép ghép nối với các hàm viết bằng ngôn ngữ C và Fortran.

 Có thể dịch để chạy độc lập ngồi mơi trƣờng MatLab.

 Dễ phát triển các ứng dụng trên các lĩnh vực khoa học và công nghệ riêng. So sánh MatLab với các ngôn ngữ lâp trinh khác: do dễ lập trính và chƣơng trính ngắn nên hiệu suất lập trính cao hơn hẳn so với khi viết chƣơng trính bằng Basic, Pascal, Fortran, C. Nó có thể làm việc đƣợc ở cả 2 chế độ:

Chế độ đối thoại: cho các bài tốn có cấu trúc ngắn, đơn giản và chỉ chạy một

lần.

Chế độ lập trình: cho các bài tốn có cấu trúc lớn, phức tạp.

2.2.4 Các lệnh trong Matlab

 Để khởi động: ta kìch chuột trái vào biểu tƣợng MatLab.

- Không gian làm việc( work space ) để lƣu trữ các biến trong q trính tình tốn.

- 1 cửa sổ lệnh(command window) để nhập lệnh và hiển thị kết quả dạng số, xâu ký tự và biểu thức.

- Nhiều cửa sổ đồ hoạ( Figure ) để hiển thị các kết quả dạng đồ thị, hính ảnh. - 1 cửa sổ soạn thảo ( Editor )để soạn thảo chƣơng trính.

- Một số cửa sổ phụ khác. - Các thƣ viện hàm ngoài

 Để nhận sự trợ giúp của MatLab hãy:

- kìch chuột trái vào biểu tƣợng help của MatLab hoặc - gõ help+<từ cần trợ giúp>

 Để đóng MatLab: kìch chuột trái vào [x] ở cửa sổ lệnh MatLab

 Làm việc ở chế độ hội thoại:

 Trong chế độ hội thoại MatLab cho phép ta nhập trực tiếp các lệnh từ bàn phìm và nhận kết quả xử lý các lệnh này. Mỗi lần MatLab chỉ xử lý từng dòng lệnh

nhập một .

 Tại dấu mời >> của MatLab trong cửa sổ lệnh ta nhập dòng lệnh cần xử lý , rồi bấm Enter để thực hiện dòng lệnh này.

 Trên một dịng lệnh có thể nhập nhiều lệnh, các lệnh cách nhau bởi dấu phẩy < , > hoặc dấu chấm phẩy < ; > .

 Với một lệnh dài hoặc dịng lệnh dài, để thơng báo cho MatLab biết dòng hiện thời còn tiếp tục xuống dòng dƣới, ta dùng 3 dấu chấm liền nhau < … > , bấm Enter để xuống dòng, rồi lại gõ tiếp

 Khi gặp lệnh thực hiện đƣợc :

- nếu kết quả có dạng số, dạng ký tự hoặc biểu thức tốn và sau lệnh này khơng có dấu chấm phẩy < ; > ,thí MatLab sẽ đƣa kết quả ra ở cửa sổ lệnh.

 Khi gặp lệnh không thực hiện đƣợc: MatLab sẽ thông báo lỗi ở cửa sổ lệnh và dừng lại ở lệnh này.

 Chế độ hội thoại chỉ nên sử dụng khi giải các bài tốn nhỏ ,có cấu trúc đơn giản, chỉ sử dụng 1 lần.

 Các lệnh cơ bản trong Matlab

Lệnh Clear: Xóa tất cả các biến trong bộ nhớ Matlab Lệnh clc: Lệnh xóa cửa sổ lệnh (command window) Lệnh pause: Chờ sự đáp ứng từ phìa ngƣời dùng Lệnh =: lệnh gán

Lệnh %: câu lệnh sau dấu này đƣợc xem là dịng chú thìch Lệnh input: lệnh lấy vào một giá trị.

Ví dụ: x = input(„Nhap gia tri cho x:‟);

Lệnh help: lệnh yêu cầu sự giúp đở từ Matlab Lệnh Save: Lƣu biến vào bộ nhớ

Ví dụ: Save test A B C (lưu các biến A, B, C vào file test)

Lệnh Load: load biến từ file hay bộ nhớ

Ví dụ: Load test Lệnh Rẻ nhánh: cú pháp nhƣ sau Lệnh If: IF expression statements ELSEIF expression statements ELSE statements END Lệnh Switch:

SWITCH switch_expr CASE case_expr, statement,..., statement

CASE {case_expr1, case_expr2, case_expr3,...} statement,..., statement ... OTHERWISE, statement,..., statement END Lệnh lặp: cú pháp nhƣ sau: Lệnh For:

FOR variable = expr, statement,..., statement END

Lệnh While:

WHILE expression statements

END

Lệnh Break: Thốt đột ngột khỏi vịng lặp WHILE hay FOR.

Lệnh Continue: Bỏ qua các lệnh hiện tại, tiếp tục thực hiện vòng lặp ở lần lặp

tiếp theo.

Lệnh Return: lệnh trả về Lệnh clf: xóa hính hiện tại

Lệnh plot(signal): vẽ dạng sóng tìn hiệu signal

Lệnh stairs(signal): vẽ tìn hiệu signal theo dạng cầu thang. Lệnh stem(signal): vẽ chuỗi dữ liệu rời rạc

Lệnh bar(signal): vẽ dữ liệu theo dạng cột

2.2.5 Đồ hoạ trong Matlab

2.2.5.1 Ðiểm và đường

Hàm Plot - Vẽ các điểm và đƣờng trong mặt phẳng (2D)

Phần lớn các câu lệnh để vẽ đồ thị trong mặt phẳng đều là lệnh plot. Lệnh plot vẽ đồ thị của một mảng dữ liệu trong một hệ trục thìch hợp và nối các điểm bằng đƣờng liên tục.

Ví dụ:

>>x=linspace(0,2*pi,30); >> y=sin(x);

>> plot(x,y)

Lệnh plot mở ra cửa sổ đồ họa gọi là cửa sổ figure:

Trong cửa sổ này nó sẽ tạo ra độ chia phù hợp với dữ liệu, vẽ đồ thị qua các điểm, và đồ thị đƣợc tạo thành bởi việc nối các điểm này bằng đƣờng nét liền. Có thể vẽ nhiều hơn một đồ thị trên cùng một hính vẽ bằng cách đƣa thêm vào plot một cặp đối số, plot tự động vẽ đồ thị thứ hai bằng màu khác trên màn hính. Nhiều đƣờng cong có thể cùng vẽ một lúc nếu nhƣ cung cấp đủ cặp đối số cho lệnh plot.

2.2.5.2 Kiểu đường, đánh dấu và màu sắc

MATLAB mặc định đƣờng vẽ là đƣờng liền, không đánh dấu, màu xanh da trời. Ta có thể thay đổi kiểu đƣờng vẽ và đánh dấu lên đồ thị bằng cách đƣa vào một đối số thứ ba. Các đối số tùy chọn này là một xâu kì tự, có thể chứa một hoặc nhiều hơn theo bảng dƣới đây. Nếu một màu, dấu và kiểu đƣờng tất cả đều chứa trong một xâu, thí kiểu màu chung cho cả dấu và kiểu nét vẽ. Ðể khai báo màu khác cho dấu, ta phải vẽ cùng một dữ liệu với các kiểu khai báo chuỗi khác nhau.

Ví dụ:>>plot(x,y,'m*',x,y,'b--')

Ðộ rộng của đƣờng vẽ (lines) đƣợc xác định kèm với mô tả Linewidth trong lệnh plot. Ðộ rộng đƣờng vẽ đƣợc mặc định là 0.5 point ≈ 1/72 inch.

Chiều cao của dấu (marker) đƣợc xác định kèm với mô tả Markersize trong lệnh plot. Chiều cao của dấu đƣợc mặc định là 6 point.

Ví dụ:

>>plot(x,y,'p-','linewidth',4,'markersize',6)

2.2.5.3 Ðồ thị lưới, hộp chứa trục, nhãn và lời chú giải

Lệnh grid on sẽ thêm đƣờng lƣới vào đồ thị hiện tại. Lệnh grid off xóa bỏ các nét này.

Ta có thể đƣa tên trục x, y và tên của đồ thị vào hính vẽ nhờ các lệnh xlabel và

ylabel. Lệnh title sẽ thêm vào đồ thị tiêu đề ở đỉnh.

Dòng ghi chú đƣợc đƣa vào đồ thị nhờ hàm legend. Trong legend thí màu và kiểu của mỗi loại đƣờng phù hợp với các đƣờng đó trên đồ thị.

Ví dụ(Xem phụ lục)

2.2.5.4 Thao tác với đồ thị

Ta có thể thêm nét vẽ vào đồ thị đã có sẵn bằng cách dùng lệnh hold. Khi dùng lệnh hold on, MATLAB không bỏ đi hệ trục đã tồn tại trong khi lệnh plot mới đang

đƣợc thực hiện, thay vào đó, nó thêm đƣờng cong mới vào hệ trục hiện tại. Tuy nhiên, nếu dữ liệu không phù hợp hệ trục tọa độ cũ, thí trục đƣợc chia lại.

Dùng lệnh hold off sẽ bỏ đi cửa sổ figure hiện tại và thay vào bằng một đồ thị mới. Lệnh hold khơng có đối số sẽ bật tắt chức năng của chế độ thiết lập hold trƣớc đó.

Ví dụ: >> x=linspace(0,2*pi,30); >> y=sin(x); >> z=cos(x); >>plot(x,y) >> plot(x,y) Hính 2.3

Bây giờ giữ nguyên đồ thị và thêm vào đƣờng cos:

>> hold on >> plot(x,z,'m')

Hính 2.4.

Mặt khác, một cửa sổ figure có thể chứa nhiều hơn một hệ trục. Lệnh subplot(m,n,p) chia cửa sổ hiện tại thành một ma trận m x n khoảng để vẽ đồ thị, và chọn p là cửa sổ hoạt động. Các đồ thị thành phần đƣợc đánh số từ trái qua phải, từ trên xuống dƣới, sau đó đến hàng thứ hai… Ví dụ: >> subplot(2,2,1) >> plot(x,y) >> subplot(2,2,2) >> plot(y,x) >> subplot(2,2,3) >> plot(x,z) >> subplot(2,2,4) >> plot(z,x)

Hính 2.5

2.2.5.5. Hàm plot3 - Vẽ điểm và đường trong không gian

Hàm plot3 cho phép vẽ các điểm và đƣờng trong khơng gian. Ngồi việc có thêm trục z, cách sử dụng hàm này giống nhƣ cách sử dụng hàm plot.

Hính 2.6

2.2.5.6 Các hàm vẽ loglog, semilogx và semilogy vẽ các đường trong mặt phẳng

loglog: tƣơng tự nhƣ plot nhƣng thang chia là logarithm cho cả hai trục.

semilogx: tƣơng tự nhƣ plot nhƣng thang chia của trục x là logarithm còn thang

chia trục y là tuyến tình.

semilogy: tƣơng tự nhƣ plot nhƣng thang chia của trục y là logarithm còn thang

chia của trục x là tuyến tình.

Ví dụ: (Xem phụ lục)

2.2.5.7 Ðồ thị bánh (pie) và đồ thị cột (bar)

 Ðồ thị bánh

Ðể vẽ đồ thị bánh trong mặt phẳng ta dùng hàm pie, cịn muốn vẽ trong khơng gian, ta dùng hàm pie3. Về mặt cú pháp hai hàm pie và pie3 giống nhau. Cú pháp có dạng: pie(V)

Trong đó V là vectơ chứa các phần tử đƣợc thể hiện trên đồ thị bánh. Nếu tổng các phần tử trong vectơ nhỏ hơn hoặc bằng 1 thí đồ thị bánh sẽ thể hiện các phần tử nhƣ là thành phần phần trăm. Nếu tổng các phần tử lớn hơn 1, thí mỗi phần tử đƣợc chia cho tổng đó để xác định phần chia trên đồ thị bánh ứng với mỗi phần tử.

Thứ tự phân chia trên đồ thị bánh theo đúng thứ tự phần tử mô tả trong vectơ. Ðƣờng chia đầu tiên là đƣờng nối tâm và điểm cao nhất trên đƣờng tròn, các đƣờng kế tiếp đƣợc phân chia theo thứ tự ngƣợc chiều kim đồng hồ. Muốn tách phần chia nào đó ra khỏi đồ thị thí ta thêm vào hàm pie một vectơ nữa có cùng kìch thƣớc với vectơ đƣợc mô tả ở trên. Phần tử của vectơ này tƣơng ứng với phần cần tách ra khỏi đồ thị thí ta cho giá trị khác 0, phần tử tƣơng ứng với phần không tách ra ta cho giá trị bằng 0. Các màu của từng phần trong đồ thị bánh đƣợc MATLAB lựa chọn không trùng nhau và rất dễ phân biệt. Ví dụ: >> subplot(2,1,1) >> pie([5 12 15 20]) >> subplot(2,1,2) >> pie([5 12 15 20],[0 0 0 1])

Hính 2.7 Đồ thị tỉ lệ sản phẩm các xƣởng

 Đồ thị cột (bar)

Hàm bar và bar3 cho phép vẽ đồ thị trong mặt phẳng và trong không gian. Hàm barh và hàm barh3 cho phép vẽ đồ thị cột nằm ngang trong mặt phẳng và trong không gian.

Cú pháp: bar(Vx, Vy, kích thước)

Trong đó Vx và Vy là những vectơ có cùng kìch thƣớc, các giá trị độ cao của cột trong Vy sẽ tƣơng ứng với các giá trị trên trục ngang của Vx, điều chú ý quan trọng là các giá trị trong Vx phải đơn điệu tăng hoặc giảm. Tham số kìch thƣớc xác định bề rộng của cột.

Ví dụ: Vẽ đồ thị cột với các số liệu:

Hính 2.8. Đồ thị dạng cột

2.2.5.8. Vẽ các mặt

 Vẽ các mặt từ một ma trận bằng các lệnh mesh, meshz, meshc, waterfall

MATLAB định nghĩa bề mặt lƣới bằng các điểm theo hƣớng trục z ở trên đƣờng kẻ ơ hính vng trên mặt phẳng x - y. Nó tạo lên mẫu một đồ thị bằng cách ghép các điểm gần kề với các đƣờng thẳng. Kết quả là nó trơng nhƣ một mạng lƣới đánh cá với các mắc lƣới là các điểm dữ liệu. Đồ thị lƣới này thƣờng đƣợc sử dụng để quan sát những ma trận lớn hoặc vẽ những hàm có hai biến.

Bƣớc đầu tiên là đƣa ra đồ thị lƣới của hàm hai biến z = f(x,y), tƣơng ứng với ma trận X và Y chứa các hàng và các cột lặp đi lặp lại, MATLAB cung cấp hàm meshgrid cho mục đìch này:

X,Y] = meshgrid (x,y): tạo một ma trận X, mà các hàng của nó là bản sao của vetơ x,

và ma trận Y có các cột của nó là bản sao của vectơ y. Cặp ma trận này sau đó đƣợc sử dụng để ƣớc lƣợng hàm hai biến sử dụng đặc tình tốn học về mảng của MATLAB.

Để vẽ bề mặt ta sử dụng các hàm:

mesh (X,Y,Z): nối các điểm với nhau trong một lƣới chữ nhật. meshc (X,Y,Z): vẽ các đƣờng contour bên dƣới đồ thị.

meshz (X,Y,Z): vẽ các đƣờng thẳng đứng viền quanh đồ thị. waterfall X,Y,Z): vẽ mặt với hiệu ứng nhƣ thác đổ.

Ví dụ: phƣơng trính của một bán cầu: z = 1− x2 − y2

>> x=-1:0.2:1; >> y=-1:0.2:1; >> [X,Y]=meshgrid(x,y); >> Z=sqrt(1-X.^2-Y.^2); >> Z=real(Z); >> mesh(X,Y,Z) Hính 2.9. Đồ thị bán cầu z = 1− x2 − y2

 Vẽ các mặt đƣợc tơ bóng từ một ma trận bằng các lệnh surf, surfc Vì dụ:

>> x=-2:0.5:2; >> y=-2:1:2;

>> [X,Y]=meshgrid(x,y); >> Z=X.*exp(-X.^2-Y.^2);

>> surf(X,Y,Z) >> colormap(hot)

Ta có thể tạo nhiều lƣới hơn để có một mặt mịn hơn:

>> x=-2:0.2:2; >> y=-2:0.4:2; >> [X,Y]=meshgrid(x,y); >> Z=X.*exp(-X.^2-Y.^2); >> surf(X,Y,Z) >> colormap(cool) Hính 2.10 Đồ thị hàm zxex2y2 Lệnh surfc (X,Y,Z): vẽ mặt có các đƣờn contour phìa dƣới.

Lệnh surfl (X,Y,Z,s): vẽ mặt có bóng sáng. Đối số s xác định hƣớng của nguồn sáng trên bề mặt vẽ. s là một vectơ tuỳ chọn trong hệ toạ độ decac hay trong toạ độ cầu. Nếu không khai báo giá trị mặc định của s là 45o theo chiều kim đồng hồ từ vị trì ngƣời quan sát. Khi vẽ đồ thị ta có thể thay đổi một số đặc điểm của đồ thị nhƣ tỉ lệ trên các

trục, giá trị giới hạn của các trục, màu và kiểu đƣờng cong đồ thị, hiển thị

legend…ngay trên figure bằng cách vào menu tools rồi vào mục axes properties, line properties hay show legend…

2.3 Ứng dụng Matlab xây dựng mơ hình vật lý học ứng dụng trong giảng dạy

Việc xây dựng các mơ hính vật lý học phù hợp với cơng tác giảng dạy tại trƣờng Trung học phổ thông phải dựa trên nhiều tiêu chì. Tiêu chì đầu tiên phải kể đến đó là

Một phần của tài liệu (LUẬN văn THẠC sĩ) sử dụng một số mô hình dao động và sóng điện tử được xây dựng bằng ngôn ngữ lập trình matlab để giảng dạy chương dao động và sóng điện tử vật lý lớp 12 ban nâng cao (Trang 42)