You are on page 1of 6

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN


Khoa Vật lý - Bộ môn Tin học Vật lý
P. 408-T5, 334 Nguyễn Trãi, Thanh Xuân, Hà Nội – ĐT: 04. 35584085

Buổi 01: MỞ ĐẦU VỀ MATLAB

I/ Mục đích
1. Làm quen với môi trường làm việc của MATLAB
2. Các lớp dữ liệu trong MATLAB
3. Thực hành về mảng số
4. Thực hành về đồ họa trong MATLAB

II/ Nội dung


1. Ví dụ
Ví dụ 1.1: m-script file
-----------------------------------------------------------------------------------------
% m-scrip file: Giai phuong trinh bac 2: a.x^2+b.x+c=0
clc; clear all;
disp('Giai phuong trinh a.x^2+b.x+c=0')
a=1; b=2; c=3; % Gian gia tri a, b, c
d=sqrt(b^2-4*a*c);% Tinh can biet thuc
x1=(-b-d)/(2*a) % Nghiem thu 1
x2=(-b+d)/(2*a) % Nghiem thu 2
-----------------------------------------------------------------------------------------
Ví dụ 1.2: function file
-----------------------------------------------------------------------------------------
function [x1,x2]=ptb2(a,b,c)
% function file: Giai phuong trinh bac 2: a.x^2+b.x+c=0
d=sqrt(b^2-4*a*c);% Tinh can biet thuc
x1=(-b-d)/(2*a); % Nghiem thu 1
x2=(-b+d)/(2*a); % Nghiem thu 2
-----------------------------------------------------------------------------------------
Ví dụ 1.3: Các lớp dữ liệu
-----------------------------------------------------------------------------------------
% Cac lop du lieu
clc;clear all;
% Lop double
a=1, b=[1 2 3], c=[1 2;3 4], z=1+2i, ca=class(a), cb=class(b), cz=class(c),
cz=class(z)
% Lop char
t='Khoa Vat ly, Truong DHKH Tu Nhien, DHQGHN', ct=class(t)
% Lop sym
syms x;y=x^2,cy=class(y)
% Lop inline
f=inline('x^2','x'), cf=class(f)
-----------------------------------------------------------------------------------------
Ví dụ 1.4: Khởi tạo mảng số
-----------------------------------------------------------------------------------------
% Khoi tao mang so % + A=zeros(siz)
clc; clear all; A1=zeros([3,4]),A2=zeros(3,4)
% 1.Bang liet ke: A3=zeros(4,4), A4=zeros(4) % M=N=4
% + Ma tran % + B=ones(siz)
a=[1+2i 3 4-5j], A=[1 2 3; 4 5 6] B=ones([3,4])
% + Mang 3 chieu % + C=eye(siz)
B(:,:,1)=[5 7 9; 0 2,4];B(:,:,2)=A C=eye([3,4])
% 2.Bang phep toan <:> % + D=rand(siz)
x1=0:3:10, x2=10:3:0 D=rand([3,4])
x3=10:-3:0, x4=0:-3:10 % + E=randn(siz)
x5=0:1:10, x6=0:10 E=randn([3,4])
% 3.Bang cac ham: % + [X,Y]=meshgrid(x,y)
% + xi=linspace(x1,xn,n) xi=0:5; yi=-2:2;[X,Y]=meshgrid(xi,yi)
xi=linspace(0,pi,30),xj=linspace(pi,0,30) % + a=diag(A,k), B=diag(a,k)
% + yi=logspace(d1,dn,n) A=E, a=diag(A,1), B=diag(a,-1)
yi=logspace(0,1,30), yj=logspace(pi,0,30)

-----------------------------------------------------------------------------------------
Ví dụ 1.5: Vẽ đồ thị 1D
-----------------------------------------------------------------------------------------
% + Bang ham plot:
% - plot(<x>,<y>,<frm>,<x1>,<y1>,<frm1>,...)
% - plot(<x>,<y>,<x1>,<y1>,...)
figure(1)
x = 0:0.5:10;
y1 = cos(2*x)./(x+1)+1.2;
y2=0.1*x.*cos(2*x)+1.2;
plot(x,y1,':+b',x,y2,'-*r');
% Them tieu de cho hinh ve, cac truc,cac duong bieu dien va
% ghi chu o cac diem dac biet:
title('Do thi 2 dao dong');
xlabel('t-thoi gian');ylabel('x-li do');
legend('x= cos(2*t)/(t+1)+1.2','x= 0.1*t*cos(2*t)+1.2',2);
text(9.2,2.2,'Cuc dai');gtext('Cuc tieu');

% + Bang ham fplot:


% - fplot(<f(x)>,<lim x,y>,<frm>)
% - fplot(<f(x)>,<lim x,y>)
figure(2)
fx='sin(x^3)';
xlim=[0 5];
fplot(fx,xlim,'.r-');

% + Bang cac ham ezplot


% - ezplot(<f(x)>,<lim x,y>)
figure(3)
xylim=[0 4 -1 1];
subplot(2,1,1); %<fx>- bieu thuc char
ezplot(fx,xylim);
syms x ; fx1=sin(x^3)
subplot(2,1,2); %<fx1>- bieu thuc sym
h=ezplot(fx1,xlim); set(h,'color','r');

% Ve ham tham so: x=x(t);y=y(t);


% - h=ezplot(<x(t)>,y(t),<lim t>)
% set(h,...)
figure(4);
x=16*sin(t)^3;
y=13*cos(t)-5*cos(2*t)-2*cos(3*t);
h=ezplot(x,y,[0 2*pi]);
set(h,'color','r','linewidth',3);
axis square;shg;
-----------------------------------------------------------------------------------------
2. Bài tập
Bài 1.1: Viết các function file để thực hiện
a/ Nhập 3 điểm thành phần, tính điểm tổng kết với trọng số:
Điểm tổng kết=Thường xuyên*20%+Giữa kỳ*20%+Cuối kỳ*60%
b/ Nhập độ dài các cạnh đáy và chiều cao của một hình thang, tính diện tích hình thang đó.
Bài 1.2: Vật dao động điều hòa với biểu thức ly độ theo thời gian:
x(t) = Acos(w*t+α) (cm)
Với: A=15, w=pi/2, α=-pi/2, t=[0 15] (s)
a/ Trên figure 1, hãy vẽ đồ thị biểu diễn x(t), v(t), a(t) với 3 màu khác nhau bằng lệnh fplot, ghi chú để phân
biệt các đường bằng lệnh legend.
b/ Trên figure 2, hãy vẽ đồ thị biểu diễn không gian pha của dao động nói trên, có nhận xét gì về năng lượng
của vật dao động điều hòa?

Thực hành Vật lý tính toán 1 Ngôn ngữ lập trình Matlab 2
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
Khoa Vật lý - Bộ môn Tin học Vật lý
P. 408-T5, 334 Nguyễn Trãi, Thanh Xuân, Hà Nội – ĐT: 04. 35584085

Buổi 02: CÂU LỆNH ĐIỀU KHIỂN, HÀM DO NGƯỜI DÙNG LẬP

I/ Mục đích
1. Thực hành về nhập/xuất dữ liệu: input, disp, fprintf, save, load, menu
2. Thực hành về các lệnh điều khiển: if…end, switch…end, for…end, while…end
3. Thực hành về các hàm do người dùng tự lập: function, inline

II/ Nội dung


1. Ví dụ
Ví dụ 2.1: Nhập/xuất dữ liệu bằng input/disp, fprintf
-----------------------------------------------------------------------------------------
% Nhap/xuat du lieu: input, disp, fprintf
clc;clear all;close all;
disp('---Chuong trinh giai phuong trinh bac 2---');
a=input('Nhap a= ');
b=input('Nhap b= ');
c=input('Nhap c= ');
% [a b c]=input('Nhap [a b c]= ');
d=sqrt(b^2-4*a*c); % Tinh can biet thuc
fprintf('Nghiem x1=\t %6.2f \n',(-b-d)/(2*a)); % Nghiem thu 1
fprintf('Nghiem x2=\t %6.2f \n',(-b+d)/(2*a)); % Nghiem thu 2
-----------------------------------------------------------------------------------------
Ví dụ 2.2*: Nhập/xuất dữ liệu bằng load/save
-----------------------------------------------------------------------------------------
% Nhap/xuat du lieu bang load/save
clc;clear all;close all;
A=fix(1+49*rand(4));B=ones(4);C=A+B;
save mydata.mat C A B %Luu du lieu vao file
clear all %Xoa du lieu trong bo nho may tinh
load Cdata.mat %Goi du lieu tu file
D=C.^2-A-B
-----------------------------------------------------------------------------------------
Ví dụ 2.3: Lệnh rẽ nhánh if…end | Ví dụ 2.4*: Lệnh rẽ nhánh switch…end
-----------------------------------------------------------------------------------------
% Lenh re nhanh if...end % Lenh re nhanh switch...end
clc;clear all;close all; clc;clear all;close all;
t=input(' Nhap so tuoi cua ban= '); k=input('Nhap k= ');
if (t>1)&(t<=10) switch k
disp('Ban la nhi dong'); case 2
elseif (t>10)&(t<=15) disp('Monday');
disp('Ban la thieu nien'); case 3
elseif (t>15)&(t<=35) disp('Tuesday');
disp('Ban la thanh nien'); case 4
elseif (t>35)&(t<=50) disp('Wednesday');
disp('Ban la trung nien'); case 5
elseif (t>50)&(t<=100) disp('Thursday');
disp('Hay gia nhap hoi nguoi cao case 6
tuoi'); disp('Friday');
else case 7
disp('Ban qua gia hoac khong ton disp('Saturday');
tai'); case 8
end; disp('Sunday');
otherwise
disp('Have no idea');
end
-----------------------------------------------------------------------------------------

Thực hành Vật lý tính toán 1 Ngôn ngữ lập trình Matlab 3
Ví dụ 2.5: Vòng lặp với số bước xác định for…end
-----------------------------------------------------------------------------------------
% Vong lap for...end
% Tinh tong rieng khai trien ham y=cos(x) n+1 so hang
clc;close all; clear all;
N=10; % So lan lap
ak=1;fcos=0;
x=pi/4;
for k=1:N
fcos=fcos+ak;
ak=((-1)^k).*(x.^(2*k))./factorial(2*k);
end;
fcos,cos(x)% So sanh
-----------------------------------------------------------------------------------------
Ví dụ 2.6: Vòng lặp với số bước không xác định while…end
-----------------------------------------------------------------------------------------
% Vong lap while...end
%Tinh tong rieng khai trien ham y=cos(x) den sai so tol
clc;close all; clear all;
tol=1e-12; % Sai so
k=1;ak=1;fcos=0;
x=pi/4;
while abs(ak)>tol
fcos=fcos+ak;
ak=((-1)^k).*(x.^(2*k))./factorial(2*k);
k=k+1;
end;
fcos(k),cos(x),k% So sanh
-----------------------------------------------------------------------------------------
Ví dụ 2.7: Hàm do người dùng lập inline/@
-----------------------------------------------------------------------------------------
% Ham do nguoi dung lap: inline
% y=f(x)=x^2-4*x+3
% 1.Khoi tao ham bieu thuc inline truc tiep
f1=inline('x.^2-4.*x+3','x') % f1=@(x) (x.^2-4.*x+3)
% Hoac tu bien sym
syms x, f=x^2-4*x+3;
f2=inline(vectorize(f),'x') % f2= eval ([‘@(x)’,vectorize(f)])

% 2.Goi ham
xx=0:.1:5;
yy1=subs(f1,x,xx); % Cach 1
yy2=f2(xx); % Cach 2
% 3.Ve do thi
figure(1);plot(xx,yy1,'r')
figure(2);plot(xx,yy2,'b')
-----------------------------------------------------------------------------------------
III/ Bài Tập
Bài 2.1: Viết chương trình nhập độ dài 3 cạnh của tam giác, kiểm tra xem có hình thành tam giác
không? Nếu có, hãy tính diện tích của tam đó sử dụng công thức Heron
Bài 2.2: Viết chương trình nhập 1 sô nguyên dương N, kiểm tra xem số đó có là số nguyên tố không?
Bài 2.3: Viết chương trình nhập hai số tự nhiên, tìm ước chung lớn nhất (UCLN), bội chung nhỏ nhất
(BCNN) của 2 số đó?
Bài 2.4: Viết hàm tính giá trị của hàm sin(x), arctan(x), sinh(x), cosh(x), exp(x), ln(1+x),… theo công
thức khai triển Taylor với sai số cho trước tol

Thực hành Vật lý tính toán 1 Ngôn ngữ lập trình Matlab 4
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
Khoa Vật lý - Bộ môn Tin học Vật lý
P. 408-T5, 334 Nguyễn Trãi, Thanh Xuân, Hà Nội – ĐT: 04. 35584085

Buổi 03: CÁC LỆNH TÍNH GIẢI TÍCH VÀ ĐẠI SỐ CƠ BẢN

I/ Mục đích
1. Thực hành các lệnh tính toán về mảng số và ma trận
2. Thực hành các lệnh giải tích cơ bản trong Matlab tính: Giới hạn, đạo hàm

II/ Nội dung


1. Ví dụ
Ví dụ 3.1: Phép toán với mảng số và ma trận
-----------------------------------------------------------------------------------------
% Phep toan voi mang so va ma tran
clc;clear all;close all;
A=[1 2;3 4];B=eye(2);
C=A+B, %Phep cong
D1=A*B, D2=A.*B %Phep nhan
E1=B/A, E2=B./A %Phep chia
F1=A\D1, F2=D1/B
-----------------------------------------------------------------------------------------
Ví dụ 3.2: Xử lý mảng số
-----------------------------------------------------------------------------------------
% Xu ly mang so
clc, clear all
A=[1 2 3 4 5; 6 7 8 9 10; 11 12 13 14 15;16 17 18 19 20]
% Xu ly tren cac phan tu
x=A(1,2)+A(3,2), y=A(2)+A(9), z=A(2,1)+A(9)% 2+12, 6 +3, 6+3
% Xu ly tren cac khoi *
B1=A(1:2,1:3)+A(3:end,3:end) % [1 2 3;6 7 8]+[13 14 15; 18 19 20]
B2=A([3 1],[5 2])+ A(6) % [15 12; 5 2]+ 7
B3=[A([2,4],[5 3 1]),eye(2);A(3,:)] % [10 8 6;20 18 16],[1 0;0 1]
% [11 12 13 14 15]
I=[2 4], J=[5 3 1]
B4=[A(I,J),eye(2);A(3,1:end)]
-----------------------------------------------------------------------------------------
Ví dụ 3.3*: Các phép biển đổi ma trận
-----------------------------------------------------------------------------------------
% Cac phep bien doi ma tran
clc;clear all;close all;
A=[1 2 3 4;5 6 7 8;9 0 1 2]
% Phan xa trai-phai
B=fliplr(A)
% Phan xa len-xuong
C=flipud(A)
% Quay n goc vuong theo chieu duong
n=2; D=rot90(A,n)
% Quay n goc vuong theo chieu a
n=1; E=rot90(A,-n)
% Chuyen vi ma tran
F=A.', F1=permute(A,[2,1])
-----------------------------------------------------------------------------------------
Ví dụ 3.4: Tính giới hạn
-----------------------------------------------------------------------------------------
% Tinh gioi han
clc;clear all;close all;
syms x t h a
s1=limit(sin(x)/x,x,0)
s2=limit((x-2)/(x^2-4),x,2)

Thực hành Vật lý tính toán 1 Ngôn ngữ lập trình Matlab 5
s3=limit((1+2*t/x)^(3*x),x,inf)
s4=limit(1/x,x,0,'right')
s5=limit(1/x,x,0,'left')
s6=limit((sin(x+h)-sin(x))/h,h,0)
v = [(1 + a/x)^x, exp(-x)];s7=limit(v,x,inf,'left')
-----------------------------------------------------------------------------------------
Ví dụ 3.5: Tính đạo hàm
-----------------------------------------------------------------------------------------
clc;clear all;
% Ham 1 bien
syms x
y=4*x^3-3*x^2+5*x;
dy=diff(y,'x')
d2y=diff(y,'x',2)
% Ham 2 bien
syms u v x y z
f=u*exp(-u^2-v^2),F=[x*y*z; y; x+z]
funf=inline(vectorize(f),'u','v')
% Tinh dao ham
Dfu=diff(f,u), Dfv=diff(f,v)
Dfuu=diff(f,u,2), Dfvv=diff(f,v,2)
Dfuv=diff(Dfu,v), Dfvu=diff(Dfv,u)
% Tinh jacobian*
J=jacobian(F,[x y z])
J1=[diff(F(1),x),diff(F(1),y),diff(F(1),z);
diff(F(2),x),diff(F(2),y),diff(F(2),z);
diff(F(3),x),diff(F(3),y),diff(F(3),z)]
-----------------------------------------------------------------------------------------
2. Bài tập
Bài 3.1:
Cho ma trận magic A (5x5)
a/ Tính vết của ma trận A
b/ Tính tổng của các phần tử trên đường chéo đối lập với đường chéo chính.
c/ Tạo ma trận B từ ma trận A bằng cách thay cột đầu tiên của A bởi véc tơ V1=(4 8 4 4 8), cột thứ 3
bởi véc tơ V2=(2 4 2 2 4). Tính định thức của A, B,
d/ Tính A+B, A*B, A.*B, B/A, A\B, B./A, A.\B
Bài 3.2: Tính các giới hạn sau

( x 2  x  2) 20 x100  2 x  1 x x x
a. lim b. lim c. lim
x  2 ( x 3  12 x  16)10 x 1 x 50  2 x  1 x   x 1
x 3 x 4 x sin x  sin a
d. lim e. lim f. lim x cos x
x   2x  1 x  a xa x  0

Bài 3.3: Tính đạo hàm riêng của các hàm số sau
x3  y 3 x2  y 2  x
a. f ( x, y )  b. f ( x, y )  ln c. f ( x, y)  e xy cos x sin y
x2  y 2 x y x
2 2

Thực hành Vật lý tính toán 1 Ngôn ngữ lập trình Matlab 6

You might also like