Tải bản đầy đủ (.docx) (13 trang)

Matlab

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (217.91 KB, 13 trang )

Tài liệu bước đầu học Matlab để ứng dụng vào môn học:
ICEC(InternalCombustion Engine Calculation).
Biên soạn,tổng hợp : Đỗ Tấn Thích.
E-mail: Sđt :01682698426.
Cần chú ý 5e-1 chính là 5*10^(-1)
Còn exp(2) chính là e2 = 7.2

I)

Giới thiệu về Matlab:

+ 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 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++.MATLAB được sử dụng trong nhiều lĩnh
vực, bao gồm xử lý tín hiệu và ảnh, truyền thông, thiết kế điều khiển tự động, đo
lường kiểm tra, phân tích mô hình tài chính, hay tính toán sinh học. Với hàng triệu
kĩ sư và nhà khoa học làm việc trong môi trường công nghiệp cũng như ở môi
trường hàn lâm, MATLAB là ngôn ngữ của tính toán khoa học.
+ Trong bài học này chỉ trình bày về vẽ đồ thị là chủ yếu và hướng dẫn làm bài tập
lớn, các câu lệnh cơ bản về Matlab trong toán học,các phần khác về matlab sẽ được
tìm hiểu ở các môn học như ứng dụng máy tính trong mô phỏng động cơ và ô tô,hệ
thống điều khiển tự động ô tô.
II) Thực hành:
• Matlab trong toán học :
1) Giải phương trình vi phân bằng matlab
Ex:

Giải phương trình vi phân : X’=-a*X



>> X=dsolve('Dx=-a*x') enter được nghiệm X =C2/exp(a*t)
Ex: Giải phương trình vi phân : Y’=y+sin(t)
Y=dsolve('Dy=y+sin(t)') enter được nghiệm Y =C4*exp(t) - sin(t)/2 - cos(t)/2
Ex: Giải hệ phương trình vi phân : X’=y, y’=-x


Z=dsolve('Dx=y','Dy=-x')(ta dùng 1 biến Z để làm trung gian )
Z = x: [1x1 sym]
y: [1x1 sym]
Rồi bấm tiếp Z.x enter thì được Z.x enter
ans =

Là dấu chấm chứ ko phải dấu nhân ,lấy tất cả các nghiệm của x trong biến trung gian Z

C6*cos(t) + C5*sin(t)--->>>>Vậy suy ra được nghiệm x= C6*cos(t) + C5*sin(t).
Bấm Z.y enter
ans =
C5*cos(t) - C6*sin(t) --->>>>Vậy suy ra nghiệm của y = C5*cos(t) - C6*sin(t).
2)Tính giá trị của hàm số tại 1 điểm
Ban đầu ta phải khai báo biến
Syms x
>> f=2*x^2+1
f=
2*x^2 + 1
>> subs(f,x,2)(ĐÂY là tính giá trị của hàm tại x=2)
ans =
9
Tiếp theo ta tính giới hạn của hàm số tại 1 điểm nào đó
>> limit(f,x,0)

ans =
1
Tương tự cho việc tính giới hạn của hàm số ví dụ như limit(sin(x)/x,0) thì được 1 ,miễn là khai báo biến
syms x y
Trong mable giá trị vô cùng được thực hiện bởi inf
Nhớ là khai báo biến syms x y
Cú pháp limit(((1+x)./x).^x,x,inf) được kết quả exp(1)


3)Tính giới hạn của hàm số về phái trái và về phía phải
Syms x y
Cú pháp f=x^2 -3*x+1
>> limit(f,x,0,'left')
ans =
1
Tương tự cho trường hợp tính giới hạn của hàm số về bên phải > limit(f,x,0,'right ')
ans =
1
3) Tính đạo hàm của hàm số
Đạo hàm cấp 1
Syms x y
Khai báo hàm f=sin(x)
Cú pháp diff(f,x) enter
ans =
cos(x)
tính tiếp đạo hàm cấp 2
cú pháp diff(ans,x) enter
ans =
-sin(x)
Tính đạo hàm lần thứ n cú pháp như sau diff(f,x,n)

4) Tính nguyên hàm của hàm số
F=x^2 -3*x+1

Cú pháp int(f,x) được kết quả như sau 
Còn nếu
vô cùng
là inf


Để được kết quả đẹp hơn thì ta thự hiện cú pháp

>> expand(ans)

Như sau expand(ans) và được kết quả như sau

ans =
x^3/3 - (3*x^2)/2 + x

2

∫ x^2 - 3*x + 1
0

Tính tích phân của hàm số f=

int(f,x,0,2)

Cú pháp như sau :int (f,x,0,2)

ans =

-4/3

5)Tính giá trị của 1 hàm chứa các biến x ,y tại 1 điểm
Ex:

Hàm f=x^2*y^3 -3*x*y^2

Subs(subs(f,x,2),y,3) được kết quả 54 hoặc cách hay hơn là subs(f,{x,y},{2,3})
Ex :Cho hàm f=x*y*z^3
Subs(f,{x,y,z},{2,4,3})

subs(f,{x,y,z},{2,4,3})
ans =
216

6) Tính giá trị của đa thức :
Ex: P1=2*x2+ 2*x-1,tính giá trị của biểu thức này tại x=2
Giải:
Khai báo ma trận p1=[2 2 -1]
Polyval(p1,2)=11
Ex: Tìm nghiệm của đa thức trên : P1=2*x2+ 2*x-1
Giải : p1=[2 2 -1]
Roots(p1)= -1.3660


Và 0.3660
Ex: phân tích đa thức sau thành nhận tử f=x^6+1
>> syms x
>> f=x^6+1


f=

x^6 + 1

>> factor(f)

ans =

(x^2 + 1)*(x^4 - x^2 + 1)


Thực hành cơ bản ứng dụng vào môn tính toán động cơ đốt trong:
1) Nhập ma trận giá trị (mảng giá trị):
A=[0:2:10] theo đó được hiểu là giá trị ban đầu là 0 ,giá trị cuối cùng là
10 và bước nhảy là 2.Hoặc cách thứ 2 là viết không cần dấu ngoặc vuông
cũng ra kết quả như nhau ,nhưng trong bài làm ta để dấu ngoặc vuông
cho dễ coi:
Ex: >> A=[0:2:10]
A=
0 2 4
>> A=0:2:10

6

8

10

A=
0 2 4 6 8 10

Nếu A=[0:10] thì mặc định bước nhảy là 1.
Ex: >> A=[0:10]


A=
0 1 2 3 4 5 6 7 8 9 10
Trong màn hình Command window nếu cuối một câu lệnh về giá trị ma
trận nếu đánh dấu chấm phẩy thì nó không hiện ra các giá trị đầu ,cuối và
bước nhảy .Còn nếu không đánh thì nó sẽ tính ra các giá trị đó.
A=linspace(a,b,c) trong đó a là giá trị đầu ,b là giá trị cuối và c là số giá
trị cần chia giữa hai giá trị đầu và cuối.
Ex: A=linspace(0,10,5)
A=
0 2.5000 5.0000 7.5000 10.0000
Tạo mảng với ma trận đại số:
A= đây là cách viết của ma trận trong đại số.Bây giờ ta triển khai chúng
trong matlab bằng cách viết như sau :
Ex:A=[1 2 3 ;4 5 6;7 8 9] ngăn cách một hàng là một dấu chấm phẩy
A=
1 2 3
4 5 6
7 8 9
Ma trận chuyển vị thì A’
2) Các phép toán ma trận .
A*B hai ma trận nhân với nhau
A.*B từng phần tử trong ma trận A nhân với ma trận B.
EX: Với ma trận trên A ở trên bây giơ fta thực hiện phép tính nhân hai
ma trận với nhau và nhân từng phần tử trong ma trận A với ma trận A và
tính định thức của ma trận.
A=[1 2 3; 4 5 6;7 8 9]

Giải:
A=
1
4

2
5

3
6


7

8

9

>> A*A
ans =
30 36 42
66 81 96
102 126 150
>> A.*A
ans =
1 4 9
16 25 36
49 64 81
+ Muốn biết kích thước của ma trận có bao nhiều hàng ,bao nhiêu cột ta
dùng lệnh Size(tên ma trận) được .

EX: >> A=[ 0 1 2;3 4 5]
A=
0
3

1
4

2
5

>> size(A)
ans =
2 3
(Trong đó: ‘2’ là số hàng ,’3’ là số cột ).
3) Vẽ đồ thị:
Nhập biến chạy ,dùng lệnh plot.
Cấu trúc chung: plot (trục hoành ,trục tung ,’ màu đồ thị’)


Đỏ
Xanh lá cây
Lục lam
Đỏ sậm
Vàng
Đen
Trắng

Ex : >> x=[0:0.002:pi]; bước nhảy càng nhỏ thì càng mịn
>> y=sin(x);

>> plot(x,y)
plot(x,y,'r') lệnh này dùng để vẽ đồ thị ứng với đường màu gì tuỳ thích’ ở đây là
màu đỏ.
xlabel('gia tri x') : tên của trục hoành được hiển thị trên đồ thị
ylabel('gia tri y') : tên của trục tung được hiển thị trên hình
title('do thi xy') : tên của đồ thị cần vẽ
grid on
: tạo lưới cho đồ thị cần vẽ
grid off : bỏ lưới cho đồ thị
Hold on: vẽ 2 đồ thị lên cùng hệ trục tọa độ.
Legend (‘đối tượng cần chú thích’): chú thích đồ thị đã vẽ vị trí này được phần
mềm mặc định tại một chổ .
Gtext ( ‘đối tượng cần chú thích’) : chú thích đối tượng đã vẽ bất cứ ở vị trí nào.
Plot(x,y,’ màu đồ thị’,’linewidth’,a) trong đó a là độ dày của đường đồ thị.
+ Nếu muốn vẽ đồ thị nằm trong một đoạn nào đó thì ta thực hiện lệnh fplot


Cú pháp như sau : khai báo hàm số cần vẽ ,tiếp theo là dùng lệnh fplot(hàm cần
vẽ ,[đoạn cần vẽ])
EX: Vẽ đồ thị của hàm số sin(x) khi x chạy từ 0 đến pi
>> f='sin(x)' cần chú ý là khai báo nằm trong dấu nháy trên

f=

sin(x)

>> fplot(f,[0,pi])
*Muốn biết chi tiết về một đối tượng nào đó thì gõ theo cú pháp : doc A trong đó A
là đối tượng cần tìm hiểu ,ex: doc plot…
Ex: vẽ đồ thị y=7*x+5 và đồ thị z=5*x-2 với x =[0 ;8] trên cùng một trục toạ độ và

trên 2 trục toạ độ khác nhau ,với đồ thi y thì có màu đỏ ,đồ thị z thì có màu xanh lá
cây.
Giải:
Hai đồ thị năm trên cùng một trục toạ độ.
x=[0:0.01:8];
y=7*x+5;
z=-5*x-2;
plot(x,y,'r');
hold on;
plot(x,z,'g');

EX: Vẽ đồ thị hàm số y=sin(2*a)*cos(2*a) với a là góc chạy từ 0 đến 2*pi trong

đồ thị toạ độ cực :
Giải:
a=[0:0.01:2*pi];
y=sin(2*a).*cos(2*a);
polar(a,y)


*Hai đồ thị nằm trên hai hình khác nhau thì thay lệnh hold on thành figure
*Một số lệnh khác:
Subplot(a,b,c): chia 1 của sổ thành nhiều vùng để vẽ đồ thị.Trong đó a là tổng số
hàng cần vẽ ,b là tổng số cột cần vẽ ,c là vị trí của hình .
Vd: vẽ đồ thị sin(x) và cos(x) :
a=[0:0.001:2*pi];
x=sin(a);
y=cos(a);
subplot(1,2,1)
plot(a,x,'r')

title('do thi sin')
subplot(1,2,2)
plot(a,y,'b')
title('do thi cos')
Figure : vẽ đồ thị trên các cửa sổ riêng biệt.
Vd: vẽ đồ thị sin và cos ở 2 của sổ riêng biệt:
a=[0:0.001:2*pi];
x=sin(a);
y=cos(a);
plot(a,x,'r')
figure
plot(a,y,'b')
Đồ thị tại những chổ hiệu đính của bài tập lớn cần dùng hàm nội suy interp1


Ví dụ: Tại kì nạp piston đi từ tử điểm thượng đến tử điểm hạ ,trong kì nạp này có
điểm đặc biệt đó là suppap thải đóng muộn ,nên cần hiệu đính
giả sử suppap thải đóng muộn ở 220
al1=[ 0

4

8

12

16

phc=[ 0.1100 0.1042 0.0992 0.0947


22 ]; % 22 la suppap thai dong muon
0.0907

0.0880];

a1=[0: 0.01: 22];
F=pi*10.22^2/4
x1=5.11.*[(1-cosd(a1)+(1-cosd(2.*a1))*(0.27/4))];
v1=x1.*F+46.6; %the tich lam viec
p1=interp1 (al1,phc,a1,'spline');
plot(p1,v1)
Bài tập:
Cho một động cơ 4 kì ,4 xi lanh có thể tích làm việc 2.7 (l) .Động cơ hình
vuông,động cơ có công suất cực đại 118kW ở số vòng quay 5200RPM,hệ số ma sát
là 85% .Yêu cầu vẽ đồ thị biểu diễn chuyển vị (x),vận tốc (v),gia tốc (j) theo công
thức gần đúng và theo công thức chính xác .Chọn thông số kết cấu ().
yêu cầu : vẽ trên các đồ thị khác nhau ,có ô lưới , có biểu diễn đồ thị, có phân biệt
màu đồ thị và độ dày của đồ thị.
Bài giải :
a=[0:0.01:360];
x=47.5*10^(-3)*(1+1/0.25-cosd(a)-1/0.25*cosd(asind(0.25*sind(a))));% chinh xac
x1=47.5*10^(-3)*(1+0.25/4-cosd(a)-0.25/4*cosd(2*a));% gan dung
plot(a,x)
figure
plot(a,x1,'r','linewidth',7)
figure
v=47.5*10^(-3)*pi*5200/30*sind(a+asin(0.25*sind(a)))./cosd(asin(0.25*sind(a)))
% cong thuc chinh xac
v1=47.5*10^(-3)*pi*5200/30*(sind(a)+0.25/2*sind(2*a));
plot(a,v,'r');

figure
plot(a,v1);
figure


j=47.5*10^(3)*(pi*5200/30)^2*(cosd(a+asind(0.25.*sind(a)))./cosd(asind(0.25.*sind(a)))
+0.25*(cosd(a)).^2./(cosd(asind(0.25.*sind(a)))).^3);
plot(a,j)
figure
j1=47.5*10^(-3)*(pi*5200/30)^2*(cosd(a)+0.25.*cosd(2*a));
plot(a,j1)

4)Cơ sở lý thuyết phục vụ cho bài tập lớn :
Để làm tốt bài tập lớn các bạn cần có kiến thức về môn Nguyên lý động cơ đốt
trong ,các bạn nên đọc giáo trình Động cơ đốt trong 1, phần thi vấn đáp sẽ bao gồm
các nội dung các bạn làm và những kiến thức về môn nguyên lý động cơ ,đặc biệt
là chương về chu trình nhiệt động học.
1)

2)

3)

Kì nạp :
Kì nạp là xuppap đi từ ĐCT xuống ĐCD ( 0-1800) đồ thị có dạng là đường
cong và một đường thẳng song song với trục hoành (do nạp đẳng áp) ,ở
trong kì nạp này có chứa điểm đặc biệt đó là điểm xuppap thải đóng muộn 
cần hiệu đính  dùng hàm nội suy ( đã giới thiệu ở trên ) ,và một đường
thẳng song song với trục hoành .
Kì nén và cháy giãn nở :

Piston đi từ ĐCD lên ĐCT khi gần cuối ĐCT thì có hiện tượng đánh lửa sớm
(động cơ xăng ) và phun dầu sớm (động cơ Diesel )nên cần hiêu đính tại vị
trí từ điểm đó đến 3600,có áp dụng công thức
+ nén :Vớivn=[Vc:n:Va]
pxn=pa*((Va./vn).^n1);
+ giãnnở : Với vg=[Vz:n:Va]
pxg=pz*((Vz./vg).^n2);
đ/cxăng : Vz=Vc
đ/c diesel :Vz=ρ.Vc
Kì xả : là đường thẳng song song trục hoành.
Qua đó ta có thể vẽ được đồ thị P-V với các thông số cho trước như
đường kính piston ,số vòng quay ,thể tích ,áp suất cực đại ….từ đó có thể
liên hệ vẽ tất cả các đồ thị theo yêu cầu đề bài ( đồ thị động lực học,đồ thị
động học,đồ thị P-

α

…)


Chú ý đơn vị đo



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×