<< Chapter < Page Chapter >> Page >

Qui cách xây dựng hàm được mô tả như sau:

function [out1,out2,…]=tenham(in1,in2,…)

% ---------------------------------------------------------------------------------------

%Phần này sẽ hiển thị khi người sử dụng dùng lệnh help tenham

% ----------------------------------------------------------------------------------------

[global<tênbiến1, tênbiến2, …>]%khai báo biến toàn cục(nếu có)

<Các câu lệnh thực hiện hàm>

out1=kết quả1%kết quả trả về của hàm

out2=kết quả2

% Các hàm con (nếu có)

[ function [subout1,subout2,…]=tenhamcon(subin1,subin2,…)

<Các câu lệnh của hàm con>

end ] %từ khóa end khong can doi voi Matlab Version 6.x

Xây dựng hàm gptb2 để giải phương trình bậc hai ax2+bx+c=0. Nội dung hàm như sau:

function [x1,x2]=gptb2(a,b,c)

% Giai phuong trinh bac hai ax^2+bx+c=0

% [x1,x2]=gptb2(a,b,c)

% Trong do: x1,x2 nghiem thuc hoac phuc

% a,b,c la 3 he so cua phuong trinh

%

% Vi du: [x1,x2]=gptb2(1,-3,2)

%

% Copyright 2003 Nguyen Chi Ngon TcAD - CIT - Cantho University

% Email: ncngon@cit.ctu.edu.vn

if nargin<3

error('Vui long nhap du 3 he so cua phuong trinh')

elseif a==0

x1=-c/b;

x2=[];

else

D = b^ 2 - 4*a*c;

x1 = (-b+sqrt(D))/(2*a);

x2 = (-b-sqrt(D))/(2*a);

end

Sau khi lưu file này với tên gptb2.m, sinh viên thử kiểm chứng kết quả:

>>help gptb2

>>[x1,x2]=gptb2(1,6,-7)

>>[x1,x2]=gptb2(2,7,14)

>>[x1,x2]=gptb2(0,4,3)

>>[x1,x2]=gptb2(1,6)

 Cho biết ý nghĩa của từ khóa nargin?

 Sinh viên hãy viết lại hàm này để kết quả chỉ trả về nghiệm số thực.

Xây dựng hàm vdcongdb(a,m,method) để vẽ một số đường cong đặc biệt trong hệ tọa độ cực, với a là bán kính và m là số đường cong vẽ trên cùng trục tọa độ. Trường hợp này hàm không trả về giá trị nên ta không cần biến ngõ ra.

Tuỳ theo giá trị của tham số ‘method’ mà ta vẽ đồ thị tương ứng:

Nếu method = ’Becnulli’: Vẽ đường Lemniscat Becnulli: r = a 2 cos size 12{r=a sqrt { lline 2"cos"2θ rline } } {}

Nếu method = ’Astroit’: Vẽ đường Astroit: r = a 1 sin 4 size 12{r=a sqrt { lline 1 - { {"sin"3θ} over {4} } rline } } {}

Nếu method = ‘Xoanoc’: Vẽ đường xoắn ốc: r = cos θ + 1 size 12{r="cos"θ+1} {}

Nội dung hàm như sau:

function vdcongdb(a,m,method)

% Ve duong cong trong toa do cuc: vdcongdb(a,m,method)

% method = 'Becnulli' - Ve duong Lemniscat Becnulli:

% r=a*sqrt(abs(2*cos(2*theta)))

% 'Astroit' - Ve duong Astroit:

% r=a*sqrt(abs(1-sin(3*theta)/4))

% 'Xoanoc' - Ve duong xoan oc:

% r=a*cos(theta)+1

% Voi: a-ban kinh; m-so duong cong ve tren cung he truc

% Vi du: vdcongdb(0.5, 4, 'Becnulli')

%

% Copyright 2003 Nguyen Chi Ngon, TcAD - CIT - CTU

% Email: ncngon@cit.ctu.edu.vn

if nargin<3

error('Vui long nhap du 3 thong so cua ham')

else

theta=0:0.01:2*pi; method=upper(method);

switch method

case 'BECNULLI'

r=a*sqrt(abs(2*cos(2*theta)));

case 'ASTROIT'

r=a*sqrt(abs(1-sin(3*theta)/4));

case 'XOANOC'

r=a*cos(theta)+1;

otherwise

error('Chon: ''Becnuli'', ''Aristod'' hoac ''Xoanoc''')

end % end of switch

% ve do thi

close all; figure('Color','w');

for k=1:m

hold on

r1=r*k;

mau=[rand(1,1) rand(1,1) rand(1,1)];

h=polar(theta,r1);

set(h,'color',mau,'LineWidth',2);

axis equal;

end % end of for

hold off;

axis off

end % end of if

Sinh viên hãy kiểm chứng lại hoạt động của hàm, ví dụ:

>>help vdcongdb

>>vdcongdb(1,5,’Becnulli’)

>>vdcongdb(1,5,’ Astroit’)

>>vdcongdb(1,5,’Xoanoc’)

>>vdcongdb(1,5,’saikieu’)

>>vdcongdb(5,’becnulli’)

>>….

Xây dựng hàm dudoan() để dự đoán kết quả sau mỗi lần tung một xúc xắc đồng nhất, 6 mặt. Nội dung hàm như sau:

function dudoan()

% Du doan ket qua sau moi lan tung ngau nhien mot xuc xac 6 mat

% Chuong trinh lap lai cho den khi nguoi su dung khong doan tiep

%

% Copyright 2003, Nguyen Chi Ngon TcAD - CIT, Cantho University

% Email: ncngon@ctu.edu.vn

tiep = 'y'; sai=0; dung=0;

disp('Chao mung ban den voi Casino nay!')

while(lower(tiep)=='y')

doan=input('Moi ban du doan ket qua (1-6):');

kqua=tungxx;

if (doan ~= kqua)

disp('Xin loi, ban da doan sai!')

sai=sai+1;

else

disp('Xin chuc mung!')

dung=dung+1;

end

tiep=input('Ban muon choi tiep(''y''/''n''):');

end

disp(['Dung ' num2str(dung) ' trong tong so ' num2str(sai+dung) ' lan doan'])

% subfunction --------------

function mat = tungxx()

mat=floor(6*rand(1,1))+1;

% end

Sinh viên thử sử dụng hàm này và cho biết sự khác nhau giữa script file và hàm không có tham số vào.

Tự chọn

Viết chương trình tìm nghiệm thực của phương trình bậc 2.

Viết chương trình in tam giác Pascal n dòng trong màn hình đồ họa với n được nhập từ bàn phím.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Thí nghiệm cad (computer-aided design). OpenStax CNX. Jul 29, 2009 Download for free at http://cnx.org/content/col10797/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Thí nghiệm cad (computer-aided design)' conversation and receive update notifications?

Ask