You are on page 1of 33

%Bai 1

clc;close all;clear all;


ti=0:2:46;nTf=17;
Tcs=[68.6 64.8 62.1 59.9 57.7 55.9...
53.9 52.3 50.8 49.5 48.1 46.8...
45.9 44.8 43.7 42.6 41.7 40.0...
39.9 39.3 38.6 37.7 37.0 36.4];
T= dsolve('DT=-r*(T-Tf)','T(0)=T0','t');%f la he so nguoi,T0 nhiet do Tcs ban dau luc t=0
disp('Bieu thuc T co dang');pretty(T)
%a)Tim hang so nguoi cua coc caffe
syms T0 Tf r;
symf=subs(T,{Tf,T0,r},{nTf,Tcs(1),'a'});
f=inline(vectorize(symf),'t','a');fn=inline('feval(f,x(:),a)-y(:)','a','x','y','f');
opt = optimset('Tolx',1e-9);
[an1,fan1]=fsolve(fn,.025,opt,ti,Tcs,f);
r=an1;
disp(['He so nguoi r tinh duoc la: ',num2str(r)])
%cau b: Tim su phu thuoc cua T vao t
T=subs(T,{Tf,T0,'r'},{nTf,Tcs(1),r});
disp('Bieu thuc T theo t la:');pretty(vpa(T,5))
%Cau c: Xac dinh thoi gian dat nhiet do 50oC va 30oC
t1=0:2:100;
plot(ti,Tcs,'+',t1,f(t1,an1),'-r',t1,50*ones(size(t1)),'b',t1,30*ones(size(t1)),'g')
title('Qua trinh nguoi cua coc caffe');
xlabel('t(phut)');ylabel('T(do C)');
legend('Gia tri do','Gia tri tinh');
[t01,Tn1]=ginput(2);%Xac dinh cac gia tri ban dau
f1=inline([vectorize(T),'-T00'],'t','T00')
[t50,Tn1]=fsolve(f1,t01(1),optimset('Display','off'),50);
[t30,Tn2]=fsolve(f1,t01(2),optimset('Display','off'),30);
disp(['Thoi diem dat 50 do C la ',num2str(t50)]);
disp(['Thoi diem dat 30 do C la ',num2str(t30)]);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Bai 2
clc;close all;clear all;
ti=0:2:46;nTf=17;
Tcs=[68.6 64.8 62.1 59.9 57.7 55.9...
53.9 52.3 50.8 49.5 48.1 46.8...
45.9 44.8 43.7 42.6 41.7 40.0...
39.9 39.3 38.6 37.7 37.0 36.4];
T= dsolve('DT=-r*(T-Tf)','T(0)=T0','t');%f la he so nguoi,T0 nhiet do Tcs ban dau luc t=0
disp('Bieu thuc T co dang');pretty(T)
%a)Tim hang so nguoi cua coc caffe
syms T0 Tf r;
symf=subs(T,{Tf,T0,r},{nTf,Tcs(1),'a'});
f=inline(vectorize(symf),'t','a');
1
fn=inline('feval(f,x(:),a)-y(:)','a','x','y','f');
opt = optimset('Tolx',1e-9);
[an1,fan1]=fsolve(fn,.025,opt,ti,Tcs,f);
r=an1;
disp(['He so nguoi r tinh duoc la: ',num2str(r)])
%cau b: Tim su phu thuoc cua T vao t
T=subs(T,{Tf,T0,'r'},{nTf,Tcs(1),r});
disp('Bieu thuc T theo t la:');pretty(vpa(T,5))
%Cau c: Xac dinh thoi gian dat nhiet do 50oC va 30oC
t1=0:2:100;
plot(ti,Tcs,'+',t1,f(t1,an1),'-r',t1,50*ones(size(t1)),'b',t1,30*ones(size(t1)),'g')
title('Qua trinh nguoi cua coc caffe');
xlabel('t(phut)');ylabel('T(do C)');
legend('Gia tri do','Gia tri tinh');
[t01,Tn1]=ginput(2);%Xac dinh cac gia tri ban dau
f1=inline([vectorize(T),'-T00'],'t','T00')
[t50,Tn1]=fsolve(f1,t01(1),optimset('Display','off'),50);
[t30,Tn2]=fsolve(f1,t01(2),optimset('Display','off'),30);
disp(['Thoi diem dat 50 do C la ',num2str(t50)]);
disp(['Thoi diem dat 30 do C la ',num2str(t30)]);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Bai 3
clc;close all;clear all;
TKr=14.8;TBr=16.2;
ldKr=log(2)/TKr;ldBr=log(2)/TBr;
eq1='DNKr=-lmdKr*NKr';%So nguyen tu Kr da bi phan ra/1s
eq2='DNBr=lmdKr*NKr-lmdBr*NBr'%So nt Br phan huy/1s=So Br moi sinh - so Br phan ra
eq3='DNSe=lmdBr*NBr';
ints='NKr(0)=1,NBr(0)=0,NSe(0)=0'
eq=[eq1,',',eq2,',',eq3];
dsol=dsolve(eq,ints);
syms lmdKr lmdBr t;
Kr=subs(dsol.NKr,{lmdKr,lmdBr},{ldKr,ldBr});
Br=subs(dsol.NBr,{lmdKr,lmdBr},{ldKr,ldBr});
Se=subs(dsol.NSe,{lmdKr,lmdBr},{ldKr,ldBr});
ti=0:2:200;
Kri=subs(Kr,t,ti);Bri=subs(Br,t,ti);Sei=subs(Se,t,ti);
%Ve do thi m(t)
figure(1);
plot(ti,Kri,ti,Bri,ti,Sei);
grid on;title('Qua trinh phan huy cac chat theo thoi gian');
legend('Kr(t)','Br(t)','Se(t)');
xlabel('Thoi gian (h)');ylabel('Khoi luong (mg)');
%Tinh khoi luong Br cuc dai
fBr1=inline(vectorize(-Br),'t');
[a,b]=ginput(1);

2
tmax=fminsearch(fBr1,a);
mBrmax=subs(Br,t,tmax);
disp(['Br co khoi luong cuc dai la',num2str(mBrmax),'(mg) tai thoi diem:',num2str(tmax),'(h)']);
%Tinh khoi luong Br bang Kr hoac Se
fKrBr=inline(vectorize(Kr-Br),'t');
fBrSe=inline(vectorize(Br-Se),'t');
[x0,y0]=ginput(2);
[t1,f1]=fsolve(fKrBr,x0(1),optimset('Display','off'));
[t2,f2]=fzero(fBrSe,x0(2),optimset('Display','off'));
mBr_Kr=subs(Br,t,t1);
mBr_Se=subs(Br,t,t2);
disp(['mBr = mKr =: ',num2str(mBr_Kr),' (mg) tai thoi diem: ',num2str(t1),'(h)']);
disp(['mBr = mSe =: ',num2str(mBr_Se),' (mg) tai thoi diem: ',num2str(t2),'(h)']);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Bai 5
%Gia thiet van toc chuyen dong la khong lon Fd = k*v voi k =0.15kg/s
%Vi m*dvx/dt=-Fd*cos(th);m*dvy/dt=-mg-Fd*sin(th)
%=>mdvx/dt=-k*vx;m*dvy/dt=-mg-k*vy
clc;close all;clear all;
syms k m g x0 y0 v0 th t
deq1='m*D2x=-k*Dx';%md2x/dt2=-k*dx/dt hay ma=-kv
deq2='m*D2y=-g*m-k*Dy';
deq=[deq1,',',deq2];
int1='x(0)=x0,Dx(0)=v0*cos(th)';
int2='y(0)=y0,Dy(0)=v0*sin(th)';
ints=[int1,',',int2];
dsol=dsolve(deq,ints,'t');
x=dsol.x;vx=diff(x,t);
y=dsol.y;vy=diff(y,t);
disp('Phuong trinh toa do va van toc trong chuyen dong nem xien la')
disp('x= ');pretty(x);
disp('y= ');pretty(y);
disp('vx= ');pretty(vx);
disp('vy= ');pretty(vy);
disp('Bai toan: k=0.15kg/m, m=0.1kg, h=15m, v0=30m/s, th=30o, g=9.8m/s2')
gt1={0.15,0.1,9.8,0,15,30,30*pi/180};
x1=subs(x,{k,m,g,x0,y0,v0,th},gt1);
y1=subs(y,{k,m,g,x0,y0,v0,th},gt1);
vx1=subs(vx,{k,m,g,x0,y0,v0,th},gt1);
vy1=subs(vy,{k,m,g,x0,y0,v0,th},gt1);
t10=solve(y1);
t1=double(t10(find(eval(t10)>0)));%Lay nghiem t theo chieu +
%t11=double(t10)
xcd1=subs(x1,t,t1);
disp(['Tam xa cuc dai khi co ma sat la ',num2str(xcd1),'m Tai thoi diem ',num2str(t1),'s']);
%TRUONG HOM KHONG CO LUC MA SAT

3
xk0=limit(x,k,0);
yk0=limit(y,k,0);
vxk0=limit(vx,k,0);
vyk0=limit(vy,k,0);
disp('xk0= ');pretty(xk0);
disp('yk0= ');pretty(yk0);
disp('vxk0= ');pretty(vxk0);
disp('vyk0= ');pretty(vyk0);
disp('Bai toan: k=0 kg/m, m=0.1kg, h=15m, v0=30m/s, th=30o, g=9.8m/s2')
gt01={0,0.1,9.8,0,15,30,30*pi/180};
x01=subs(xk0,{k,m,g,x0,y0,v0,th},gt01);
y01=subs(yk0,{k,m,g,x0,y0,v0,th},gt01);
vx01=subs(vxk0,{k,m,g,x0,y0,v0,th},gt01);
vy01=subs(vyk0,{k,m,g,x0,y0,v0,th},gt01);
t00=solve(y01);
t0=double(t00(find(eval(t00)>0)));%Lay nghiem t theo chieu +
xcd0=subs(x01,t,t0);
disp(['Tam xa cuc dai khi co ma sat la ',num2str(xcd0),'m Tai thoi diem ',num2str(t0),'s']);
disp(['Nhu vay khi khong co ma sat vat di them duoc mot doan la ',num2str(xcd0-xcd1),' m']);
%Ve do thi
figure(1);
subplot(2,2,1);ezplot(x1,[0,t1]);title('x1(t)');grid on;
subplot(2,2,2);ezplot(y1,[0,t1]);title('y1(t)');grid on;
subplot(2,2,3);ezplot(vx1,[0,t1]);title('vx1(t)');grid on;
subplot(2,2,4);ezplot(vy1,[0,t1]);title('vy1(t)');grid on;
figure(2);
subplot(2,1,1);ezplot(x1,y1,[0,t1]);title('Quy dao khi co ma sat');grid on;
subplot(2,1,2);ezplot(x01,y01,[0,t0]);title('Quy dao khi khong co ma sat');grid on;
%Hinh anh dong
ti=linspace(0,t1,500);
xi=subs(x1,t,ti);
yi=subs(y1,t,ti);
lim=1.2*[min(xi),max(xi),min(yi),max(yi)];
figure(3);
h=plot(xi(1),yi(1),':',xi(1),yi(1),'.');
set(h(1),'erase','non'); %Luu lai dau vet
set(h(2),'erase','xor','markersize',30); %Khong luu lai dau vet
xlabel('x');ylabel('y');
axis equal;
axis(lim);
for n=1:length(ti)
set(h(1),'xdata',xi(1:n),'ydata',yi(1:n));
set(h(2),'xdata',xi(n),'ydata',yi(n));
pause(0.00001);
end
%Cau b: xac dinh thoi diem va vi tri vat dat do cao cuc dai
%TRUONG HOP CO MA SAT

4
tg1=double(solve(vy1));
xymax1=subs(x1,t,tg1);
ymax1=subs(y1,t,tg1);
disp(['Do cao cuc dai khi co ma sat la: ',num2str(ymax1),'m tai thoi diem: ',num2str(tg1),'s']);
%TRUONG HOP KHONG CO MA SAT
tg01=double(solve(vy01));
xymax01=subs(x01,t,tg01);
ymax01=subs(y01,t,tg01);
disp(['Do cao cuc dai khi khong co ma sat la: ',num2str(ymax01),'m tai thoi diem:
',num2str(tg01),'s']);
%Cau C: goc nem toi uu de vat co the xa nhat
gtri2={0.15,0.1,9.8,0,15,30};
yc=subs(y,{k,m,g,x0,y0,v0},gtri2);
xc=subs(x,{k,m,g,x0,y0,v0},gtri2);
%Giai phuong trinh y=0 voi an la t, con th(goc nem) xem nhu mot tham so
tL=solve(yc,t); %Luc nay t la mot ham cua th
xL=subs(xc,t,tL); % Thay t = t(th) vao bieu thuc cua x ta thu duoc tam xa
goc=0:pi/100:pi/2;
tamxa=subs(xL,th,goc);
figure(4);
plot(goc,tamxa);
xlabel('goc nem(radian)');ylabel('tam xa(met)');grid on;
%Tim tam xa cuc dai nho ham fminsearch
phu=inline(vectorize(-xL),'th');
[a,b]=ginput(1);
thxmax=fminsearch(phu,a);thm=thxmax*180/pi;
xL1=subs(xL,th,thxmax);
disp(['Goc toi uu la :',num2str(thm),'(do) va tam xa cuc dai dat duc la: ',num2str(xL1),'(met)']);
%--------------------------------------------------
syms goc;
giatri={0.15,0.1,9.8,0,15,30,goc};
y2=subs(y,{k,m,g,x0,y0,v0,th},giatri);
tcn=solve(y2,'t');
giatri2={0.15,0.1,9.8,0,15,30,goc,tcn};
x2=subs(x,{k,m,g,x0,y0,v0,th,t},giatri2);
f4=inline(vectorize(x2),'goc');
f5=inline(vectorize(-x2),'goc');
goci=0:pi/100:pi/2;
x2i=f4(goci);
figure(5);
plot(goci,x2i,'m');grid on;
[xmax j]=max(x2i);
ma=goci(j);
Do=ma*180/pi;
gocmax=fminsearch(f5,ma);
Dochinhxac=gocmax*180/pi;

5
disp(['Goc toi uu la :',num2str(Dochinhxac),'(do) va tam xa cuc dai dat duc la:
',num2str(xmax),'(met)']);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;close all;clear all;
syms k m g x0 y0 v0 th t
deq1='m*D2x=-k*Dx';%md2x/dt2=-k*dx/dt hay ma=-kv
deq2='m*D2y=-g*m-k*Dy';
deq=[deq1,',',deq2];
int1='x(0)=x0,Dx(0)=v0*cos(th)';
int2='y(0)=y0,Dy(0)=v0*sin(th)';
ints=[int1,',',int2];
dsol=dsolve(deq,ints,'t');
x=dsol.x;vx=diff(x,t);
y=dsol.y;vy=diff(y,t);
gt1={0.1,0.1,9.8,0,10,20,30*pi/180};
x1=subs(x,{k,m,g,x0,y0,v0,th},gt1);
y1=subs(y,{k,m,g,x0,y0,v0,th},gt1);
vx1=subs(vx,{k,m,g,x0,y0,v0,th},gt1);
vy1=subs(vy,{k,m,g,x0,y0,v0,th},gt1);
%Cau a. Xac dinh thoi diem, vi tri cham tuong
tn0=6; %Thu voi 1 gia tri ban dau
f =inline(vectorize(x1-15),'t');
tn=fzero(f,tn0);
yn=subs(y1,t,tn);
vxn=subs(vx1,t,tn);
vyn=subs(vy1,t,tn);
vn=sqrt(vxn^2+vyn^2);
th1=atan2(-vyn,vxn);
disp(['Thoi diem qua bong cham tuong: ',num2str(tn),'s']);
disp(['Qua bong cham tuong o do cao: ',num2str(yn),'m']);
figure(1);shg;
subplot(2,2,1);ezplot(x1,[0,tn]);title('x(t)');grid on;
subplot(2,2,2);ezplot(y1,[0,tn]);title('y(t)');grid on;
subplot(2,2,3);ezplot(vx1,[0,tn]);title('vx(t)');grid on;
subplot(2,2,4);ezplot(vy1,[0,tn]);title('vy(t)');grid on;
figure(2);shg;
ti=linspace(0,tn,500);
yi=subs(y1,t,ti);
xi=subs(x1,t,ti);
plot(xi,yi);title('quy dao y(x)');axis([0 15 0 15]);
xlabel('x');ylabel('y');
%Cau b: bat tro lai
deq3='m*D2x=k*Dx';%md2x/dt2=-k*dx/dt hay ma=-kv
deq4='m*D2y=-g*m+k*Dy';
deqs=[deq3,',',deq4];
int3='x(0)=x0,Dx(0)=-v0*cos(th)';

6
int4='y(0)=y0,Dy(0)=-v0*sin(th)';
int=[int3,',',int4];
dsol=dsolve(deqs,int,'t');
x02=dsol.x;vx02=diff(x,t);
y02=dsol.y;vy02=diff(y,t);
disp('x= ');pretty(x02);
disp('y= ');pretty(y02);
disp('vx= ');pretty(vx02);
disp('vy= ');pretty(vy02);
gt2={0.1,0.1,9.8,15,yn,vn,th1};
x4=subs(x02,{k,m,g,x0,y0,v0,th},gt2);
y4=subs(y02,{k,m,g,x0,y0,v0,th},gt2);
vx4=subs(vx02,{k,m,g,x0,y0,v0,th},gt2);
vy4=subs(vy02,{k,m,g,x0,y0,v0,th},gt2);
%Thoi gian cham dat
f4 =inline(vectorize(y4),'t');
tcd=fzero(f4,tn0);
xcd=subs(x4,t,tcd);
disp(['Thoi diem cham dat: ',num2str(tcd+tn),'s']);
disp(['Vi tri cham dat: ',num2str(15-xcd),'m']);
%Ve do thi
ti2=linspace(0,tcd,200);
yi2=subs(y4,t,ti2);xi2=subs(x4,t,ti2);
figure(2);hold on;grid on;plot(xi2,yi2);
%Cau c: Xac dinh goc nem toi uu
gt3={0.1,0.1,9.8,0,10,20};
x5=subs(x,{k,m,g,x0,y0,v0},gt3);y5=subs(y,{k,m,g,x0,y0,v0},gt3);
syms th;
td=solve(y5,'t');xtx=subs(x5,t,td);
figure(3);
ezplot(xtx,[0 pi/2]);
f3=inline(vectorize(-xtx),'th');
[thmax,xmax]=fminsearch(f3,0);
disp(['Goc nem toi uu: ',num2str(thmax*180/pi),'do']);
disp(['Khoang cach vat cach tuong xa nhat: ',num2str(-xmax-15),'m']);
%Hinh anh dong
t1=linspace(0,tn,100);
t2=linspace(0,tcd,100);
tx=[t1,t2+tn*ones(size(t1))];%Cong thoi gian
xx1=[subs(x1,t,t1),subs(x4,t,t2)];
yy1=[subs(y1,t,t1),subs(y4,t,t2)];
vxx1=[subs(vx1,t,t1),subs(vx4,t,t2)];
vyy1=[subs(vy1,t,t1),subs(vy4,t,t2)];
figure(4);
uicontrol('position',[20 20 60 20],'string','exit','callback','q=0;k1=0;');
uicontrol('position',[20 40 60 20],'string','stop','callback','k1=1;');
uicontrol('position',[20 60 60 20],'string','run','callback','k1=0;');

7
q=1;k1=1;
plot(xx1(1),yy1(1),':',xx1(1),yy1(1),'-ko','LineWidth',0.1,'MarkerEdgeColor','y',...
'MarkerFaceColor','r','MarkerSize',10,'erase','xor');
set(gca,'color',[0 0.7 0]);%gca: do thi hien thoi, [b g r]: chay 0 ->1
axis square;grid on;xlim([0 15]);ylim([0 15]);
while k1; pause(0.01);end %Thuc hien lenh dung cho toi khi k1=0
while q; %Thuc hien lenh cho toi khi q=0
h=plot(xx1(1),yy1(1),':',xx1(1),yy1(1),'-ko','LineWidth',0.1,'MarkerEdgeColor','b',...
'MarkerFaceColor','y','MarkerSize',10,'erase','xor');
set(gca,'color',[0 0.7 0]);
axis square;grid on;xlim([0 15]);ylim([0 15]);
n=1;%Chon bat ki de thuc hien duoc vong lap
while q&(n<length(tx)) %Thuc hien lenh cho toi khi q=0 va n>length(tx)
while k1; pause(.01);end;
set(h(1),'xdata',xx1(1:n),'ydata',yy1(1:n));
set(h(2),'xdata',xx1(n),'ydata',yy1(n));
n=n+1;
pause(.01);
end;
end;
close(gcf);%Dung man hinh hien thoi

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function bai8;
close all;clear all;clc;
syms m vz F t dm dvz dt Dz D2z Dm vth;
syms ve m0 m1 g c u;
%Tinh luc tac dung:F=-mg-Fms
dvz=D2z*dt;dm=Dm*dt;
F=-m*g-Dz*abs(Dz)*m*g/(vth^2);%k=mg/vth^2
%Tinh do bien thien xung luong
p1=(m+dm)*(vz+dvz)-dm*(vz-ve);p0=m*vz;
dp=p1-p0;eq=dp/dt-F;eq=simple(subs(eq));

%Neu toc do chay cua nhien lieu la 5m/s


m=dsolve('Dm=-5','m(0)=100','t');%m(t)=-5t+100
Dm=diff(m,t);%bieu dien khoi luong
t1=solve(m-10,t);%Khi chay het nhien lieu thi kluong ten lua m(t)=10
t1=double(t1);%Tinh thoi gian chay het nhien lieu
disp(['Thoi gian de nhien lieu chay het la: ',num2str(t1),' (s)']);

%Bieu thuc giai tich cua gia toc


a=solve(eq,D2z);a=limit(a,dt,0);
disp(['Bieu thuc giai tich cua gia toc la: ',char(a)]);pretty(a);
%Cau a:Tinh do cao va van toc ten lua khi chay het nhien lieu
%Khi ve=1000, vth=100, g=9.8

8
ve=1000;vth=100;g=9.8;a1=subs(a);
a1=subs(a1,Dz,'h(2)');%Thay the Dz=h(2)
eqs1=inline(['[','h(2)',';',char(a1),']'],'t','h');%Lap he 2 ptvp cap 1 cho ode45
[ti1,h1]=ode45(eqs1,[0 t1],[0 0]);%Tim dc 3 cau truc la:ti,hi,vzi
% disp(['Do cao khi nhien lieu chay het la: ',num2str(h1(end,1)),' (km)']);
% disp(['Van toc khi chay het nhien lieu la: ',num2str(h1(end,2)),' (m/s)']);
disp('Cau a: Khi chay het nhien lieu thi');
do_cao=([num2str(h1(end,1)),' (km)'])
van_toc=([num2str(h1(end,2)),' (m/s)'])
%Cau b:Tinh do cao cuc dai va thoi gian cham dat
%Sau khi nhien lieu chay het
m=10;Dm=0;a2=subs(a);a2=subs(a2,Dz,'h(2)');
eqs2=inline(['[','h(2)',';',char(a2),']'],'t','h');
[ti2,h2]=ode45(eqs2,[t1,120],[h1(end,1),h1(end,2)]);
%Thoi diem cham dat va do cao cuc dai
sp=spline(ti2,h2(:,1));%Noi suy tim ham h(t) tu luc nhien lieu het den cham dat
%Thoi diem cham dat: g/s nghiem gan dung t0=100 s
sp1=ppval(ti2,sp)
tg=fsolve(@(ti2)ppval(ti2,sp),100);
% disp(['Thoi diem cham dat: ',num2str(tg),' (s)']);
%Do cao cuc dai: g/s nghiem gan dung xmax= 32m
[tmax,hmax]=fminsearch(@(ti2)-ppval(ti2,sp),32);
% disp(['Do cao cuc dai: ',num2str(-hmax),' (km)']);
%Hoac in ra nhu sau:
disp('Cau b:');
do_cao_cuc_dai=([num2str(-hmax),' (km)'])
tgian_cham_dat=([num2str(tg),' (s)'])

%Do thi
fnplt(sp,[t1,tg],'b');hold on;
plot(ti1(end),h1(end,1),'or',ti1,h1(:,1),'b');grid on;hold off;
text(ti1(end),h1(end,1),'Het nhien lieu');
xlabel('Thoi gian t(s)');ylabel('Do cao h(t)');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%Khoi luong ten lua 100kg voi khoi luong nhien lieu 90kg
%vc=1000m/s,c=5kg/s,v0=10m/s,alpha=pi/4
%luc ma sat ti le voi binh phuong vtoc
function bai9;
close all;clear all;clc;
syms m v F t dm dv dt Dx Dy D2x D2y Dm vth;
syms ve m0 m1 g c u dvx dvy vx vy Fx Fy k;
%Nhap cac gia tri
th=pi/4;g=9.8;vth=100;ve=1000;v0=10;c=5;m0=10;k=m0*g/(vth^2);
%Tinh cac cong thuc ve dong luong va do bien thien dong luong
v=sqrt(vx^2+vy^2);dvx=D2x*dt;dvy=D2y*dt;dm=Dm*dt;%do bien thien van toc,khoi luong

9
Fx=-k*v^2*vx/v;Fy=-m*g-k*v^2*vy/v;%luc tac dung theo Ox,Oy
p1x=(m+dm)*(vx+dvx)-dm*(vx-ve*vx/v);p0x=m*vx;dpx=p1x-p0x;
p1y=(m+dm)*(vy+dvy)-dm*(vy-ve*vy/v);p0y=m*vy;dpy=p1y-p0y;
%Lap cac ptrinh dong luc hoc,giai tim gia toc theo 2 phuong 0x,0y
eq1=simple(subs(dpx/dt-Fx));eq2=simple(subs(dpy/dt-Fy));
ax=solve(eq1,D2x);ax=limit(ax,dt,0);
ay=solve(eq2,D2y);ay=limit(ay,dt,0);

%Khi nhien lieu chay voi toc do khong doi c=5kg/s


m=dsolve('Dm=-c','m(0)=100','t');%m=-c*t+m(0)
m=subs(m);%Thay the ta co m=-5*t+100
Dm=diff(m,t);Dm=subs(Dm);
tn=solve(m-10,t);tn=double(tn);%Thoi gian chay het nhien lieu
disp(['Thoi gian de nhien lieu chay het: ',num2str(tn),' (s)']);

ax1=subs(ax);ay1=subs(ay);%Thay m,Dm vao ax,ay


[t1,u1]=odes([ax1,ay1],[0 tn],[0 v0*cos(th) 0 v0*sin(th)]);
%Ket qua giai ode cho 5 cau truc la:t,x,y,vx,vy
disp(['Do cao khi chay het nhien lieu:',num2str(u1(end,3)),' (km)']);
disp(['Van toc khi chay het nhien lieu:',num2str(sqrt(u1(end,2)^2+u1(end,4)^2)),' (m/s)']);

%Khi nhien lieu chay het


x0=u1(end,1);vx0=u1(end,2);y0=u1(end,3);vy0=u1(end,4);m=10;Dm=0;
ax2=subs(ax);ay2=subs(ay);
[t2,u2]=odes([ax2,ay2],[tn 35],[x0 vx0 y0 vy0]);%t=35s la tuy chon

%Thoi diem cham dat,vi tri cham dat va do cao cuc dai
t=[t1(1:end-1);t2];%129 gia tri t
spx=spline(t,[u1(2:end,1);u2(:,1)]);%Noi suy tim ham x(t):76u1,53u2
spy=spline(t,[u1(2:end,3);u2(:,3)]);%Noi suy tim ham y(t)
%Tim thoi diem va vi tri cham dat:t0=31 la gtri gan dung ban dau
[tg,yg]=fsolve(@(t)ppval(spy,t),31,optimset('display','off'));
[tmax,ymax]=fminsearch(@(t)-ppval(spy,t),15);
xg=ppval(spx,tg);
disp(['Vi tri cham dat: ',num2str(xg),' (km)']);
disp(['Thoi diem cham dat: ',num2str(tg),' (s)']);
disp(['Do cao cuc dai: ',num2str(-ymax),' km']);
disp(['Thoi diem dat do cao cuc dai:',num2str(tmax),' (s)']);

%Quy dao chuyen dong


x=u2(:,1);x=x(find(t2<=tg));x=[u1(:,1);x];
y=u2(:,3);y=y(find(t2<=tg));y=[u1(:,3);y];
plot(x,y,'b');axis([0 10500 0 600]);grid on;hold on;
plot(u1(end,1),u1(end,3),'ob');text(u1(end,1),u1(end,3),'Het nhien lieu');
h1=plot(x(1),y(1),'or');
h2=plot(x(1),y(1),'.r','markersize',30);
for k=1:length(x)

10
set(h1,'xdata',x(1:k),'ydata',y(1:k));
set(h2,'xdata',x(k),'ydata',y(k));
pause(0.01);
end;
%==============================================================

function [t,u]=odes(a,tn,cond)
u2=subs(a(1),{'vx','vy'},{'u(2)','u(4)'});
u4=subs(a(2),{'vx','vy'},{'u(2)','u(4)'});
eqs=inline(['[','u(2)',';',char(u2),';','u(4)',';',char(u4),']'],'t','u');
[t,u]=ode45(eqs,[tn(1) tn(2)],[cond(1) cond(2) cond(3) cond(4)]);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function bai10;
close all;clear;clc;
tn=5;x0=1;y0=0.3;vx0=0.2;vy0=7;%Nhap cac gia tri cho hanh tinh
%Lap he 4 ptvi cap 1 cho ham ode45:GM=4*pi^2
eq=inline(['[u(2);','-4*pi^2*u(1)/(u(1)^2+u(3)^2)^(3/2);',...
'u(4);','-4*pi^2*u(3)/(u(1)^2+u(3)^2)^(3/2)]'],'t','u');
opt=odeset('reltol',1e-9,'abstol',1e-12);%Sai so cho ket qua chinh xac
[t,u]=ode45(eq,0:0.01:tn,[x0 vx0 y0 vy0],opt);
x=u(:,1);vx=u(:,2);y=u(:,3);vy=u(:,4);%u(1)=x,u(2)=vx,u(3)=y,u(4)=vy
r=sqrt(x.^2+y.^2);v=sqrt(vx.^2+vy.^2);%vi tri,van toc cua hanh tinh
%Cac do thi
figure(1);plot(t,x,t,y,t,r);legend('x(t)','y(t)','r(t)');grid on;
figure(2);plot(t,vx,t,vy,t,v);legend('vx(t)','vy(t)','v(t)');grid on;
%Cau a:Xac dinh cac ban truc va chu ky cua hanh tinh
%Chu ky
sp=spline(t,x);%xac dinh cau truc noi suy dung ham spline
%Tim chu ky banga cach tim 2 thoi diem ma x=0
%voi tn1=0.36,tn2=2.16 la gtri gan dung ban dau
figure(1);%[t01 x01]=ginput(2);co the thay gtri bang cach nhap tu do thi
[tn xn]=fsolve(@(t)ppval(sp,t),[0.36 2.16],optimset('display','off'));
T=abs(tn(1)-tn(2));
disp(['Chu ky la: ',num2str(T),' year']);
%Ban truc lon,ban truc nho
figure(3);plot(t,r);title('Do thi r(t)');grid on;
sp=spline(t,r);%Tim khoang cach xa nhat,ngan nhat tu hanh tinh den tieu diem F
[tmin,rmin]=ginput(1);
[tmin,rmin]=fminsearch(@(t)ppval(t,sp),tmin);
[tmax,rmax]=ginput(1);
[tmax,rmax]=fminsearch(@(t)-ppval(t,sp),0.76);rmax=-rmax;
a=(rmin+rmax)/2;ae=a-rmin;b=sqrt(a^2-ae^2);%c=e.a,e^2=1-(b/a)^2
disp(['Ban truc lon: ',num2str(a),' km']);
disp(['Ban truc nho: ',num2str(b),' km']);

11
%Cau b:Kiem tra dinh luat Kepler
tn2=5;x02=1;vx02=0;y02=0;vy02=5:0.5:8;
for k=1:length(vy02)
[t2,u2]=ode45(eq,0:0.01:tn2,[x02 vx02 y02 vy02(k)],opt);
x2=u2(:,1);vx2=u2(:,2);y2=u2(:,3);vy2=u2(:,4);
r2=sqrt(x2.^2+y2.^2);v2=sqrt(vx2.^2+vy2.^2);
figure(4);plot(t2,x2);grid on;title('Do thi x=x(t)(Kiem tra Kepler)');
sp=spline(t2,x2);
[t01,x01]=ginput(2);
[t0n,x0n]=fsolve(@(t2)ppval(t2,sp),t01,optimset('display','off'));
Ta(k)=(abs(t0n(2)-t0n(1)))^2/((max(r2)+min(r2))/2)^3;
end;
disp('Ket qua kiem tra dinh luat Kepler T^2/a^3= ');
disp(Ta);

%hinh chuyen dong


plot(x,y,':k');axis([-2 1.1 -1 2]);grid on;hold on;
plot(0,0,'.r','markersize',50);h=plot(x(1),y(1),'.b','markersize',30);
for i=1:length(x)
set(h,'xdata',x(i),'ydata',y(i));shg;
pause(0.05);
end;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function bai11;
close all;clear;clc;
%Nhap so lieu ban dau
g0=9.8;L0=3;b1=0;b2=0.1/3;%b=k/(mL)
syms g L b;
eq='-g/L*sin(u(1))-b*L^2*abs(u(2))*u(2)';
%ptrinh:-g/L*sin(theta)-b*L^2*abs(dtheta/dt)*(dtheta/dt);
%u(1)=theta,u(2)=dtheta/dt
%Cau a:Khao sat dao dong khi khong co ma sat va co ma sat
%truong hop khong co ma sat
eq1=char(subs(eq,{g,L,b},{g0,L0,b1}));
eq1=inline(['[u(2);',eq1,']'],'t','u');%ko ma sat:eq1=-g0/L0*sin(u(1))
[t1,u1]=ode45(eq1,[0:0.05:30],[pi/30 0]);%tim nghiem ptrinh eq1
theta1=u1(:,1);dtheta1=u1(:,2);
x1=L0*sin(theta1);y1=L0*(1-cos(theta1));
Ep1=g0*L0*(1-cos(theta1));Ek1=1./2*(L0*dtheta1).^2;E1=Ep1+Ek1;

%truong hop co ma sat


eq2=char(subs(eq,{g,L,b},{g0,L0,b2}));%eq2='-g0/L0*sin(u(1))-b2*L^2*abs(u(2))*u(2)
eq2=inline(['[u(2);',eq2,']'],'t','u');
[t2,u2]=ode45(eq2,[0:0.05:30],[pi/30 0]);
theta2=u2(:,1);dtheta2=u2(:,2);

12
x2=L0*sin(theta2);y2=L0*(1-cos(theta2));
Ep2=g0*L0*(1-cos(theta2));Ek2=1./2*(L0*dtheta2).^2;E2=Ep2+Ek2;

%Bieu dien cac do thi


%Goc va van toc goc
figure(1);subplot(2,1,1);plot(t1,theta1,t1,dtheta1,'r');grid on;
legend('\theta(t)','v_ theta(t)');title('dao dong tuan hoan');
subplot(2,1,2);plot(t2,theta2,t2,dtheta2,'r');grid on;
legend('\theta(t)','v_ theta(t)');title('dao dong tat dan');
%The nang,dong nang,nang luong tong cong
figure(2);subplot(2,1,1);plot(t1,Ep1,t1,Ek1,t1,E1,'r');grid on;
legend('Ep(t)','Ek(t)','E(t)');title('dao dong tuan hoan');
subplot(2,1,2);plot(t2,Ep2,t2,Ek2,t2,E2,'r');grid on;
legend('Ep(t)','Ek(t)','E(t)');title('dao dong tat dan');
%Khong gian pha
figure(3);plot(theta1,dtheta1,theta2,dtheta2);grid on;
title('Khong gian pha');legend('Khong co ma sat','co ma sat');
%Cau b:Khi khong co ma sat,khao sat su phu thuoc cua chu ki theo goc
%Su phu thuoc cua chu ky vao goc theta khi khong co ma sat
theta0=pi/18:pi/9:pi/2;%tu 10:20:90(do)
u0=[theta0(:) zeros(size(theta0(:)))];%Tao ra hai truong:theta,dtheta=0 khi t=0
for k=1:length(theta0);
[t3,u3]=ode45(eq1,[0:0.05:30],u0(k,:));%Giai eq1 voi dk dau khac nhau
theta3=u3(:,1);
figure(6);plot(t3,theta3);grid on;title('Xac dinh chu ky');
sp=spline(t3,theta3);
[t30,theta30]=ginput(2);%Hai diem cach nhau mot chu ki
[t3n,theta3n]=fsolve(@(t3)ppval(sp,t3),t30,optimset('display','off'));
T(k)=abs(t3n(2)-t3n(1));
end;
disp('Bang phu thuoc theta(0) vao chu ki T:');
disp([theta0(:) T(:)]);
Tb=2*pi*sqrt(L0/g0)*ones(size(theta0(:)));
figure(7);plot(theta0,T,theta0,Tb,'r');title('Su phu thuoc T(theta_0)');
xlabel('theta');ylabel('Chu ki T');legend('Khi \theta lon','khi \theta be');
%Hinh anh chuyen dong
figure(4);tl1='Dao dong tuan hoan';dynamic(x1,y1,tl1);
figure(5);tl2='Dao dong tat dan';dynamic(x2,y2,tl2);
%======================================================================
====
function dynamic(x0,y0,tl0);
L0=3;plot([0 0],[L0 1.1*L0],'g','linewidth',10);%Diem treo
title('tl0');hold on;axis equal;axis(L0*[-1.1 1.1 -0.1 1.1 ]);
h1=plot([0 x0(1)],[L0 y0(1)],'linewidth',1);%day treo
h2=plot(x0(1),y0(1),'.r','markersize',30);%qua cau
for k=1:length(x0)
x=[0 x0(k)];y=[L0 y0(k)];

13
set(h1,'xdata',x,'ydata',y);
set(h2,'xdata',x0(k),'ydata',y0(k));
pause(0.03);
end;
%============================================================
%figure(1):khong co ma sat,li do goc va van toc goc tuan hoan theo t.co ma
%sat thi li do,van toc giam dan,dao dong la tat dan
%figure(2):nang luong bao toan khi ko co ma sat,va giam dan khi co ma sat
%figure(3):ko co ma sat khong gian pha hinh tron,co ma sat khong gian pha
%hinh xoan oc vao trong.
%figure(7):khi theta be,chu ky ko thay doi khi thay doi gtri theta.Khi theta lon,chu ky thay doi
%theo goc theta,ung voi ty le thuan.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Bai 12.a
%Dao dong tu tuyen tinh chiu tac dung cua ngoai luc
close all; clc;clear all;
eq='D2x=-w^2*x-b*Dx+c*cos(w1*t)';
ints='x(t0)=x0,Dx(t0)=v0';
x=dsolve(eq,ints,'t');
syms w w1 b c t t0 x0 v0
v=diff(x,'t'); ti=0:.1:80;
%khong co ma sat b=0
gt1={1.5,1.9,0,1,0,0,1};
x1=subs(x,{w,w1,t0,x0,v0,b,c},gt1); v1=subs(v,{w,w1,t0,x0,v0,b,c},gt1);
gtx1=subs(x1,t,ti); gtv1=subs(v1,t,ti);
Ep1=1.5^2*gtx1.^2/2; Ek1=gtv1.^2/2; Et1=Ep1+Ek1;
%Co ma sat
gt2={1.5,1.9,0,1,0,0.2,1};
x2=subs(x,{w,w1,t0,x0,v0,b,c},gt2); v2=subs(v,{w,w1,t0,x0,v0,b,c},gt2);
gtx2=subs(x2,t,ti); gtv2=subs(v2,t,ti);
Ep2=1.5^2*gtx2.^2/2;
Ek2=gtv2.^2/2; Et2=Ep2+Ek2;
%Bieu dien do thi
%Li do, van toc
figure(1); subplot(2,1,1);plot(ti,gtx1,ti,gtv1);
title('Dao dong co ngoai luc, khong ma sat');
grid on;legend('x(t)','v(t)');
subplot(2,1,2);plot(ti,gtx2,ti,gtv2);
title('Dao dong co ngoai luc, co ma sat'); grid on;legend('x(t)','v(t)');
%The nang, dong nang, nang luong toan phan
figure(2);
subplot(2,1,1);plot(ti,Ep1,ti,Ek1,ti,Et1);
grid on;legend('Ep(t)','Ek(t)','Et(t)');title('Dao dong co ngoai luc, khong ma sat');
subplot(2,1,2);plot(ti,Ep2,ti,Ek2,ti,Et2);
grid on;legend('Ep(t)','Ek(t)','Et(t)');title('Dao dong co ngoai luc, co ma sat');
%Khong gian pha

14
figure(3);plot(gtx1,gtv1,gtx2,gtv2);legend('Khong ma sat','Co ma sat');
grid on;xlabel('x');ylabel('y');title('Dao dong co ngoai luc trong khong gian pha');
%Xac dinh bien do khi dao dong on dinh
t3=50:.1:53; gtx=subs(x2,t,t3);
figure(4);plot(t3,gtx);title('Tim bien do dao dong.Nhap gia tri lon nhat');
%[tbd,xbd]=ginput(1);
[M,j]=max(gtx);
f=inline('-1*spline(t3,gtx,tt)','tt','t3','gtx');
[xx,A]=fminsearch(f,t3(j),[],t3,gtx);
Biendo=abs(A)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Bai 12 b
%Dao dong tu tuyen tinh chiu tac dung cua ngoai luc co ma sat
%Phan b: Su phu thuoc cua bien do dao dong vao tan so cua ngoai luc
close all; clc;clear all;
eq='D2x=-w^2*x-b*Dx+c*cos(w1*t)';
ints='x(t0)=x0,Dx(t0)=v0';
x=dsolve(eq,ints,'t');
syms w w1 b c t t0 x0 v0
v=diff(x,'t');
w1b=1.2:0.1:1.8;
for k=1:length(w1b);
gt1={1.5,w1b(k),0,1,0,0.2,1};
xk=subs(x,{w,w1,t0,x0,v0,b,c},gt1);
t3=100:.1:103;
gtx3=subs(xk,t,t3);
[M,j]=max(gtx3);
f=inline('-1*spline(t3,gtx3,tt)','tt','t3','gtx3');
[xx,A]=fminsearch(f,t3(j),[],t3,gtx3);
Biendo(k)=abs(A);
end;
%Ve do thi
figure(1);plot(w1b,Biendo);title('Su phu thuoc cua bien do vao tan so cua ngoai luc');
grid on;xlabel('Tan so');ylabel('Bien do');
%Lap bang
disp('Su phu thuoc cua bien do vao tan so cua ngoai luc');
disp(' Tan so Bien do');
for k=1:length(w1b);
disp([w1b(k),Biendo(k)]);
end;

15
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function bai13;
close all;clear;clc;
global L k m we b uj vj j ti t1;
L=50;%so hat
m=1;%khoi luong moi hat
k=1;%he so dan hoi
b=0.1;%uc ma sat ti le voi van toc theo he so b
we=1;%khoang cach giua cac hat
j=1:L;ti=0:0.1:100;%tgian tu 0 den 100
u0=[zeros(size(j)) zeros(size(j))];%li do,van toc hat thu j bang 0
[t1,u1]=ode45('eqsforode',ti,u0);
uj=u1(:,1:2:2*L-1);vj=u1(:,2:2:2*L);%li do va van toc
k=[5 20 45];%hat thu 5,20,45
%pause;
moving(k);
figure;
for a=1:length(k);
subplot(3,1,a);plot(ti,uj(:,k(a)),'-');%ve li do hat thu 5,20,45
title(['li do cua dao dong tu thu',num2str(k(a))]);
ylim([-0.5 0.5]);grid on;
end;
tj=[5 20 100];%thoi gian 5,20,100
figure;
for i=1:length(tj);
utj=uj(find(t1==tj(i)),:);%giai thich y nghia
subplot(3,1,i);
plot([0 j],[0 utj]);
end;
%============================================================
%Khi di thi khong danh vao,neu thay yeu cau co hinh chuyen dong thi danh
function moving(k);
global uj vj j L ti t1;
figure;
subplot(2,1,1);%ve dao dong theo phuong ngang(song ngang)
xj1=j+uj(1,:);yj1=zeros(size(xj1));
h2=plot([0 xj1 (L+1)],[0 yj1 0],...
'.:','markersize',20);hold on;
h4=plot(k,zeros(size(k)),'.r','erase','xor','markersize',30);
axis([-0.2 (L+1.2) -1 1]);
subplot(2,1,2);%ve dao dong theo phuong doc(song doc)
h1=plot([0 j (L+1)],[0 uj(1,:) 0],...
'.','markersize',20);hold on;
h3=plot(k,uj(1,k),'.r','markersize',30);
axis([-0.2 (L+1.2) -1 1]);grid on;
for n=1:length(ti)
set(h1,'ydata',[0 uj(n,:) 0]);

16
set(h3,'ydata',uj(n,k));
set(h2,'xdata',[0 j+uj(n,:) (L+1)]);
set(h4,'xdata',k+uj(n,k));
pause(0.01);
end;
%==============================================================
%Dieu kien bien co dinh, co ngoai luc tac dung:u(0)=u(2*L+1)=0
%Lap phuong trinh dao dong
function du=eqsforode(t,u)
global k m we b L;
du(1)=u(2);
du(2)=-k/m*(2*u(1)-u(3))-b*u(2)/m+0.5*cos(we*t)/m;
for j=2:L-1
du(2*j-1)=u(2*j);
du(2*j)=-k/m*(2*u(2*j-1)-u(2*j-3)-u(2*j+1))-b*u(2*j)/m;
end;
du(2*L-1)=u(2*L);
du(2*L)=-k/m*(2*u(2*L-1)-u(2*L-3))-b*u(2*L)/m;
du=du(:);
%============================================================
%ket qua:
%figure(1):mo ta dao dong cua he gom song doc va song ngang
%figure(2):tu 0 den n(s)voi n=5,20,45 thi khong dao dong,bat dau tu n(s)thi
%bat dau dao dong. Bien do dao dong giam dan theo hat thu n.
%figure(3):
%chu y giai thich dong 57 den 58,chua hieu
%Bai 13
function oscils4;
clc;close all;clear all;clf;
%Dieu kien bien co dinh, co ngoai luc
global L k m we gamma
L=50;m=1;a=1;we=1;gamma=0.1;xj=a*[1:L];k=1;
tn=0:.05:100;p=0.01;
uj0=zeros(1,L);vj0=zeros(1,L);
u0(1:2:2*L-1)=uj0;u0(2:2:2*L)=vj0;
[t,u]=ode45('foscils4',tn,u0);k=[5 20 45];
uj=u(:,1:2:2*L-1);vj=u(:,2:2:2*L);
figure(1);subplot(2,1,1);xj1=xj+uj(1,:);yj1=zeros(size(xj1));
h2=plot([0,xj1,L+1],[0,yj1,0],'.:','markersize',20);hold on;
h4=plot(k,zeros(size(k)),'.r','erase','xor','markersize',30);
axis([-0.2 L+1.2 -1 1]);grid on;
subplot(2,1,2);
h1=plot([0,xj,L+1],[0,uj(1,:),0],'.','markersize',20);hold on;
h3=plot(k,uj(1,k),'.r','markersize',30);
axis([-0.2 L+1 -2 2]);grid on;
for n=1:length(tn);
set(h1,'ydata',[0,uj(n,:),0]);pause(p); set(h2,'xdata',[0,xj+uj(n,:),L+1]);

17
set(h4,'xdata',k+uj(n,k)); set(h3,'ydata',uj(n,k));
end;
figure(2);jt=[5 20 45];
for k=1:3
subplot(3,1,k);plot(t,uj(:,jt(k)),'-');
ylim([-1.2 1.2]);grid on;
end;
tj=[5 20 100];%thoi gian 5,20,100
figure;
for i=1:length(tj);
utj=uj(find(t==tj(i)),:);%giai thich y nghia
subplot(3,1,i);
plot([0 xj],[0 utj]);
end;
function du=foscils4(t,u)
%Dieu kien bien co dinh, co ngoai luc
global L k m we gamma
du(1)=u(2);
du(2)=-k/m*(2*u(1)-u(3))+0.5*cos(we*t)/m-gamma*u(2)/m;
for n=2:L-1;
du(2*n-1)=u(2*n);
du(2*n)=-k/m*(2*u(2*n-1)-u(2*n-3)-u(2*n+1))-gamma*u(2*n)/m;
end;
du(2*L-1)=u(2*L);
du(2*L)=-k/m*(2*u(2*L-1)-u(2*L-3))-gamma*u(2*L)/m;
du=du(:);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function bai14;
close all;clear;clc;
L=200;%khoang cach man chan toi man quan sat
lam=600*1e-9;%buoc song
A=1;%bien do song
q=2*pi/lam;%so song
k1=menu('Nhieu xa:','n khe','vanh,lo tron');
switch k1;
case 1;%Nhieu xa khe thuc
n=input('Nhap so khe nhieu xa:')
D=5*lam;%do rong khe thuc
a=25*lam;%khoang cach moi khe
q=2*pi/lam;
M=21;%Chia khe thuc thanh 21 khe li tuong
d=D/(M-1);%Do rong khe li tuong
c=0;y=-20:0.1:20;%toa do cac diem tren man quan sat
y1=[-(n-1)/2:(n-1)/2].*a;
for nn=1:length(y1)
%toa do cac khe li tuong=toa do khe li tuong d/voi khe thuc+ toa do khe thuc

18
yk1=[-(M-1)/2:(M-1)/2].*d+repmat(y1(nn),1,M);
yk(:,nn)=yk1(:);
end;yk=yk(:);%chuyen ve vector cot de ve
rrk=inline('sqrt((y-yk).^2+L^2)','y','yk','L');%khoang cach tu khe thu k toi man qsat
for k=1:length(yk)
c=c+A./rrk(y,yk(k),L).*exp(-i*q*rrk(y,yk(k),L));%he so cua song hay bien do phuc theo
(6.7)
end;
I=abs(c.^2);%cuong do sang tai diem tren man do nguon va cac khe chieu toi
Imax=max(I);I=I/Imax;%so sanh voi 1 de to mau hinh anh
II=repmat(I,2,1);%keo hinh de tao vet nhieu xa
figure;subplot(2,1,1);plot(y,I);xlabel('mm');
subplot(2,1,2);pcolor(y,1:2,II);xanh=gray;xanh(:,[1 3])=0;
set(gcf,'colormap',xanh);shading interp;shg;xlabel('mm');
case 2;
R=5*lam;%ban kinh lo tron
dn=R/50;%khoang cach deu cac diem
Rm=50;%do rong man chan
dm=Rm/100;%khoang cach deu cac diem tren man
[xk,yk]=meshgrid(-R:dn:R);%ve hinh vuong ngoai tiep hinh
xk=xk(:);yk=yk(:);%chuyen vector cot de ve
cas=menu('Nhieu xa qua:','Lo tron','Vanh tron');
switch cas;
case 1;%Lo tron
k=find(((xk).^2+(yk).^2)<R^2);%Lay diem trong lo tron
case 2;%Vanh tron
k=find((((xk).^2+(yk).^2)<(7*lam)^2)&...
(((xk).^2+(yk).^2)>(5*lam)^2));%lay diem trong vanh tron
end;
xk=xk(k);yk=yk(k);
rrk=inline('sqrt(yk.^2+(x-xk).^2+L^2)','x','xk','yk','L');
x=0:dm:Rm;%vi tri cac diem tren man
c=zeros(size(x));%bien do phuc theo x
for k=1:length(xk)
c=c+A./rrk(x,xk(k),yk(k),L).*exp(-i*q*rrk(x,xk(k),yk(k),L));%bien do phuc cua diem tren
man
end;
I=abs(c.^2);Imax=max(I);I=I/Imax;
II=[fliplr(I) I(2:end)];
figure;x1=-Rm:dm:Rm;plot(x1,II);xlabel('mm');
[r,p]=meshgrid(0:dm:Rm,0:pi/30:2*pi);
x=r.*cos(p);y=r.*sin(p);I=repmat(I,size(x,1),1);
figure;pcolor(x,y,I);xanh=gray;xanh(:,[1 3])=0;
set(gcf,'colormap',xanh);shading interp;axis square;
end;

19
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function bai15;
close all;clear;clc;
global delT tcol N delV numcol m kb xyz vxyz;
L=0.1;%do dai canh a=2*L
N=100;T=300;%so luong phan tu khi va nhiet do binh khi
m=6.7e-27;kb=1.38e-23;%khoi luong phan tu,hang so Boltzman
v=sqrt(3*kb*T/m);%van toc phan tu
delV=0;numcol=1500;delT=0;
dt=L/v/50;%buoc nhay thoi gian

%Su phu thuoc cua ap suat khi T=280:10:320


T1=280:10:320;PT=apsuat(T1,L);hold on;
mdol=N/((2*L)^3);%mat do phan tu
P1=mdol.*kb.*T1;%ap suat
plot(T1,P1,'*r');grid on;hold off;
disp('Ap suat trong binh khi T1=280:10:320');
disp( 'Ly thuyet thuc nghiem');disp([P1(:),PT(:)]);

%Su phu thuoc cua ap suat khi L=0.08:.01:0.12;


L1=0.08:0.01:0.12;PL=apsuat(T,L1);hold on;
mdol2=N./((2*L1).^3);P2=mdol2.*kb.*T;%mat do phan tu,ap suat khi li tuong
plot(L1,P2,'*r');grid on;hold off;
disp('Ap suat trong binh khi L1=0.08:.01:0.12');
disp('Ly thuyet thuc nghiem');disp([P2(:),PL(:)]);

%Do hoa chuyen dong


xyz=-L+2*L*rand(1,3*N);%vi tri cac hat ngau nhien trong hop
%la mang gom 3Ncot nam trong [-1,1]:x thuoc[0,N],y thuoc[N+1,2N],z thuoc[2N+1,3N]
phi=2*pi*rand(2,N);ph=phi(1,:);th=phi(2,:);
vxyz=v.*[cos(ph).*sin(th),sin(ph).*sin(th),cos(th)];%van toc theo toa do cau
figure;
h=plot3(xyz(1:N),xyz(N+1:2*N),xyz(2*N+1:end),'.r','markersize',10);%to mau cac phan tu
box on;grid on;
for n=1:numcol%so lan va cham
[tcol,mol]=min(abs((xyz-L*sign(vxyz))./vxyz));%xet tgian,vi tri va cham cua hat
%gan thanh binh nhat
delT=delT+tcol;t(n)=delT;
dk=1;
while dk;
if tcol>dt
xyz=xyz+vxyz*dt;tcol=tcol-dt;%tgian va cham lon hon tgian toi thieu dt thi
%phai thuc hien dich chuyen voi khoang tgian
%tmoi=tcu-dt,vtri moi=vtri cu+ v*dt de tien den va cham thanh
else
xyz=xyz+vxyz*tcol;dk=0;%hat den va cham thanh binh
end;

20
set(h,'xdata',xyz(1:N),'ydata',...
xyz(N+1:2*N),'zdata',xyz(2*N+1:end));
pause(0.01);
end;
vxyz(mol)=-vxyz(mol);
delV=delV+2*abs(vxyz(mol));%do bien thien dong luong
P(n)=m*delV/((6*(2*L)^2)*delT);%P=m*do bien thien dong luong/dien tich va cham*do bien
thien nhiet do
end;
mdol3=N/((2*L)^3);P3=mdol3*kb*T;
figure;
plot(t,P,'g',t,P3,'m');
legend('P-mo phong','P-Ly thuyet');xlabel('t');ylabel('P');
P=mean(P(end-30:end));%lay gtri trung binh cua 30 gtri cuoi
disp(['Ap suat trong binh la:p~= ',num2str(P),'at']);
%======================================================================
====
function P=apsuat(T,L);
global N numcol m kb dt;
for k1=1:length(L)
for k2=1:length(T)
v=sqrt(3*kb*T(k2)./m);delV=0;delT=0;
xyz=L(k1)+2*L(k1)*rand(1,3*N);
phi=2*pi*rand(2,N);ph=phi(1,:);th=phi(2,:);
vxyz=v.*[cos(ph).*sin(th),sin(ph).*sin(th),cos(th)];
for n=1:numcol
[tcol,mol]=min(abs((xyz-L(k1)*sign(vxyz))./vxyz));
delT=delT+tcol;t(n)=delT;
dk=1;
while dk
if tcol>dt
xyz=xyz+vxyz*dt;tcol=tcol-dt;
else
xyz=xyz+vxyz*tcol;dk=0;
end;
end;
vxyz(mol)=-vxyz(mol);
delV=delV+2*abs(vxyz(mol));
Pi(n)=m*delV/((6*(2*L(k1))^2)*delT);
end;
Pi=Pi(:);
if length(L)>1
P(k1)=mean(Pi(end-50:end));%lay gtri trung binh cua 50 gtri cuoi
else
P(k2)=mean(Pi(end-50:end));
end;
end;

21
end;
if length(L)>1
figure;plot(L,P);title('Ap suat khi mo phong');grid on;
else
figure;plot(T,P);title('Ap suat khi mo phong');grid on;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function bai16;
close all;clear;clc;
syms M;
GM=4*pi^2;M1=2*M;M2=M;GM1M2=GM*M1*M2/M;
%toa do,van toc cac hanh tinh so voi he toa do gan voi khoi tam
x10=1/3;y10=0;x20=-2/3;y20=0;
vx10=0;vy10=0.8;vx20=0;vy20=-1.6;
m=M1*M2/(M1+M2);%Khoi luong tuonng duong
%r1=M2*r/(M1+M2);r2=-M1*r/(M1+M2);
%toa do,van toc cua khoi luong tuong duong
x0=(M1+M2)/M2*x10;y0=(M1+M2)*y10/M2;
vx0=(M1+M2)/M2*vx10;vy0=(M1+M2)*vy10/M2;
%du=[vx;-GM1M2/m*x/(x^2+y^2)^(3/2);vy;-GM1M2/m*y/(x^2+y^2)^(3/2)];
%GM1M2/m=2*M*4pi^2/(2M/3)=3*4*pi^2;
du=inline(['[u(2);-12*pi^2*u(1)/(u(1)^2+u(3)^2)^(3/2);'...
'u(4);-12*pi^2*u(3)/(u(1)^2+u(3)^2)^(3/2)]'],'t','u');
opt=odeset('reltol',1e-9,'abstol',1e-12);%sai so ket qua
[t,u]=ode45(du,0:0.001:1,double([x0,y0,vx0,vy0]),opt);

x=u(:,1);vx=u(:,2);y=u(:,3);vy=u(:,4);
x1=double(x*M2/(M1+M2));x2=double(-x*M1/(M1+M2));%do su dung bien syms
y1=double(y*M2/(M1+M2));y2=double(-y*M1/(M1+M2));
r=sqrt(x.^2+y.^2);v=sqrt(vx.^2+vy.^2);
vx1=double(vx*M2/(M1+M2));vx2=double(-vx*M1/(M1+M2));
vy1=double(vy*M2/(M1+M2));vy2=double(-vy*M1/(M1+M2));
%tinh dong nang,the nang,nang luong
Ek=(vx.^2+vy.^2)./2;Eu=double(-GM1M2./m./r);E=Ek+Eu;%trong dvi thien van nen M=1 nen
Ek=v^2/2
L=2*(x1.*vy1-y1.*vx1)+(x2.*vy2-y2.*vx2);%L=L1(M1)+L2(M2)
%Ve do thi
figure(1);plot(x,y);title('Quy dao y(x)');
figure(2);subplot(2,1,1);plot(t,x,'g',t,y,'b',t,r,'m');
legend('x(t)','y(t)','r(t)');
subplot(2,1,2);plot(t,vx,'g',t,vy,'b',t,v,'m');
legend('vx(t)','vy(t)','v(t)');
figure(3);
plot(t,Ek,'g',t,Eu,'b',t,E,'m',t,L,'c');
legend('Ek(t)','Eu(t)','E(t)','L(t)');axis([0 1 -5000 5000]);
%pause;

22
figure(4);%hinh dong nhung khi di thi ko danh vao
h=plot(x1(1),y1(1),'.r',x1(1),y1(1),':r',x2(1),y2(1),'.g',x2(1),y2(1),':g');
set(h(1),'markersize',30);set(h(3),'markersize',30);
xlabel('x');ylabel('y');
for k=1:length(x1)
set(h(1),'xdata',x1(k),'ydata',y1(k));
set(h(2),'xdata',x1(1:k),'ydata',y1(1:k));
set(h(3),'xdata',x2(k),'ydata',y2(k));
set(h(4),'xdata',x2(1:k),'ydata',y2(1:k));
axis([-0.8 0.5 -0.15 0.15]);
grid on;
pause(0.05);
end;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%He con lac kep ptrinh Lagrange
function bai17;
close all;clear;clc;
syms l1 l2 g m1 m2 phi1 phi2 Dphi1 Dphi2 D2phi1 D2phi2
%Ham Lagrange:L=T-U
x1=l1*sin(phi1);y1=l1*cos(phi1);
T1=1/2*m1*l1^2*Dphi1^2;
U1=-m1*g*l1*cos(phi1);
x2=x1+l2*sin(phi2);y2=y1+l2*cos(phi2);
Dx2=diff(x2,phi1)*Dphi1+diff(x2,phi2)*Dphi2;%Thanh phan vx cua vat 2
Dy2=diff(y2,phi1)*Dphi1+diff(y2,phi2)*Dphi2;%thanh phan vy cua vat 2
T2=simple(1/2*m2*(Dx2^2+Dy2^2));
U2=simple(-m2*g*y2);
L=simple(T1+T2-U1-U2);%ptrinh Lagrange cua he
%Giai ptrinh Lagrange:d/dt(dL/dq.)-dL/dq=0
dLq1=diff(L,Dphi1);%dL/dq1
eq1=diff(dLq1,phi1)*Dphi1+diff(dLq1,phi2)*Dphi2+...
diff(dLq1,Dphi1)*D2phi1+diff(dLq1,Dphi2)*D2phi2-diff(L,phi1);
eq1=simple(eq1);
dLq2=diff(L,Dphi2);%dL/dq2
eq2=diff(dLq2,phi1)*Dphi1+diff(dLq2,phi2)*Dphi2+...
diff(dLq2,Dphi1)*D2phi1+diff(dLq2,Dphi2)*D2phi2-diff(L,phi2);
eq2=simple(eq2);
%Xay dung ham cho ode45
sol=solve(eq1,eq2,D2phi1,D2phi2);%Giai tim gia toc goc D2phi1,D2phi2
%Xay dung 4 he ptvp cap 1 cho ham ode45
phiDphi={phi1,phi2,Dphi1,Dphi2};
u={'u(1)','u(2)','u(3)','u(4)'};
du1='u(3)';%dphi1/dt=Dphi1
du2='u(4)';%dphi2/dt=Dphi2
du3=subs(sol.D2phi1,phiDphi,u);
du3=simple(subs(du3,{g,m1,m2,l1,l2},{9.8,2,1,1,2}));

23
du4=subs(sol.D2phi2,phiDphi,u);
du4=simple(subs(du4,{g,m1,m2,l1,l2},{9.8,2,1,1,2}));
du=inline(['[',du1,';',du2,';',char(du3),';',char(du4),']'],'t','u');
%dieu kien dau va giai he ptvp
u0=[pi/3 -pi/4 0 0];
[t,u]=ode45(du,[0 10],u0);%t chay tu 0 den 10s
phi1=u(:,1);phi2=u(:,2);Dphi1=u(:,3);Dphi2=u(:,4);
T=subs(T1+T2,{g,m1,m2,l1,l2},{9.8,2,1,1,2})
U=subs(U1+U2,{g,m1,m2,l1,l2},{9.8,2,1,1,2})
T=subs(T,{'phi1','Dphi1','phi2','Dphi2'},{phi1,phi2,Dphi1,Dphi2})
U=subs(U,{'phi1','phi2'},{phi1,phi2})
E=U+T;
%Do thi
subplot(3,1,1);plot(t,phi1,t,phi2);legend('\phi_1','\phi_2');grid on;
subplot(3,1,2);plot(t,Dphi1,t,Dphi2);legend('D_\phi_1','D_phi_2');grid on;
subplot(3,1,3);plot(t,T,t,U,t,E);legend('Dong nang','The nang','Nang luong');grid on;
%Do hoa dong
l1=1;l2=2;
X10=l1*sin(u0(1));Y10=-l1*cos(u0(1));
X20=X10+l2*sin(u0(2));Y20=Y10+l2*cos(u0(2));
X0=[0 X10 X20];Y0=[0 Y10 Y20];
figure(2);h=plot(X0,Y0,'.b-','markersize',20);axis equal;grid on;
axis([-2 2 -2 0]*(l1+l2)/2);hold on;
k=1;n=0;
while k;
[t,u]=ode45(du,[0 0.1],u0);
phi1=u(end,1);phi2=u(end,2);
X1=l1*sin(phi1(k));Y1=-l1*cos(phi1(k));
X2=X1+l2*sin(phi2(k));Y2=Y1-l2*cos(phi2(k));
X=[0;X1;X2];Y=[0;Y1;Y2];
set(h,'xdata',X,'ydata',Y);pause(0.1);
u0=u(end,:);
n=n+1;
if n==100;
k=0;
end;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Bai18/25:Phuong phap Monte-Carlo
function bai18;
close all;clear;clc;
N0=1000;T12Kr=14.8;T12Br=16.1;%So hat Kr ban dau va cac chu ki ban ra
lmKr=log(2)/T12Kr;lmBr=log(2)/T12Br;%hang so phan ra
pKr=lmKr;pBr=lmBr;%khi dt=1s thi xac suat phan ra bang hang so phan ra
%cau a:Mo phong qua trinh phan ra
tmax=200;ntrial=1000;%Thoi gian khao sat va so lan thu
ti=1:tmax;

24
ncumKr=zeros(1,tmax);ncumBr=ncumKr;ncumSe=ncumKr;
for k=1:ntrial
NKr=ones(1,N0);NBr=zeros(1,N0);NSe=zeros(1,N0);%cac hat nhan ban dau
for t=1:tmax
r1=rand(size(NKr));
r2=rand(size(NBr));
NSe=NSe|(NBr&(r2<pBr));%so hat Br phan huy thanh Se
NKrph=NKr&(r1<pKr);%so hat Kr bi phan huy thanh Br
NKr=NKr&(r1>pKr);%so hat Kr con lai
NBr=NBr&(r2>pBr);%so hat Br khong bi phan huy
NBr=NBr|NKrph;%so hat Br co tai thoi diem t
ncumKr(t)=ncumKr(t)+sum(NKr);
ncumBR(t)=ncumBr(t)+sum(NBr);
ncumSe(t)=ncumSe(t)+sum(NSe);
end;
end;
%So hat nhan theo thoi gian khao sat
niKr=ncumKr/ntrial;niBr=ncumBr/ntrial;niSe=ncumSe/ntrial;
ti=[0 ti];niKr=[0 niKr];niBr=[0 niBr];niSe=[0 niSe];
%Theo ly thuyet
%Nghiem cua ptvp:dNKr/dt=-lamdaKr*NKr
niKr_gt=N0.*exp(-pKr.*ti);
%Nghiem cua ptvp:dNBr/dt=-lamdaBr*NBr+lamdaKr*NKr
niBr_gt=N0*pKr/(pKr-pBr).*(exp(-pBr.*ti)-exp(-pKr.*ti));
%ngghiem cua ptvp:dNSe/dt=lamdaBr*NBr
niSe_gt=-N0/(pKr-pBr).*(pBr-pKr+pKr.*exp(-pBr.*ti)-pBr.*exp(-pKr.*ti));
figure(1);
plot(ti,niKr,ti,niBr,ti,niSe,ti,niKr_gt,ti,niBr_gt,ti,niSe_gt);
legend('So hat Kr mo phong','So hat Br mo phong','So hat Se mo phong',...
'So hat Kr li thuyet','So hat Br li thuyet','So hat Se li thuyet');
%Cau b:Chung to so hat Kr phan huy theo quy luat Poisson
%Poisson:p(n)=lamda^n*exp(-lamda)/n!
%so hat Kr phan huy trong mot don vi tgian tuan theo phan bo Poisson
nn=zeros(1,ntrial);
for k=1:ntrial
N=ones(1,N0);
r=rand(size(N));
N=N&(r<pKr);
nn(k)=nn(k)+sum(N);%Tong so hat bi phan huy
end;
m=mean(nn);%so hat trung binh bi phan huy trong tgian khao sat tmax
n=0:max(nn);%n la so tan suat xuat hien bien co
np=hist(nn,n);%xac dinh tan suat cua mau
Pi=np/ntrial;
for k=1:length(n)
Plt=m.^n(k)./factorial(n(k))*exp(-m);
end;

25
figure(2);
plot(n,Pi);hold on;%Pi thuc nghiem
plot(n,Plt,'r-');hold off;%Plt theo ly thuyet
title(['Phan bo poisson voi <n>=',num2str(m)]);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%bai 19:phuong phap Monte-Carlo ve truyen anh sang
function bai19;
close all;clear;clc;
global N ntrial v d;
fill([0 1.5 1.5 0],[0 0 20 20],'y');hold on;%to mau moi truong
fill([1.5 3.5 3.5 1.5],[0 0 20 20],'g');
fill([3.5 5 5 3.5],[0 0 20 20],'y');
%Chia moi truong thanh 10 lop,11 gtri x
N=10;ntrial=10000;x=linspace(0,5,N+1);
%Xet 3 tia truyen cua tia sang
%Diem dau y(0),diem cuoi y(N+1),cac diem trung gian 2->N
y1(1)=0;y1(N+1)=20*rand;y1(2:N)=20*rand(1,N-1);
y2(1)=0;y2(N+1)=20*rand;y2(2:N)=20*rand(1,N-1);
y3(1)=0;y3(N+1)=20*rand;y3(2:N)=20*rand(1,N-1);
h=plot(x,y1,x,y2,x,y3);
n1=1;n3=1;%Chiet suat cua moi truong
%Van toc truyen tai cac diem thuoc moi truong 1(n1=1)
v1=1/n1;vv1=v1*ones(size(x((x<=1.5)&(x>0))));
%Van toc truyen tai cac diem thuoc moi truong 3(n3=1)
v3=1/n3;vv3=ones(size(x(x>3.5)));
k=menu('Chon','n2=1.25','n2=1+(x-1.5)/4','n2=1.5-(x-1.5)/4');
switch k;
case 1;
n2=1.25;v2=1./n2;
vv2=ones(size(x((x>1.5)&(x<=3.5))));
case 2;
n2=(1+(x((x>1.5)&(x<=3.5))-1.5)./4);
v2=1./n2;
vv2=v2;
case 3;
n2=(1.5-(x((x>=1.5)&(x<=3.5))-1.5)./4);
v2=1./n2;
vv2=v2;
end;
v=[vv1 vv2 vv3];
d=0.5;%So ngau nhien la khoang cach giua diem cu va moi
for kk=1:ntrial
y1=fermat(x,y1,h(1));
y2=fermat(x,y2,h(2));
y3=fermat(x,y3,h(3));
title(num2str(kk));

26
end;
%======================================================
function y=fermat(x,y,h);
global N v d;
k=fix((N-1)*rand)+2;%fix la ham lay phan nguyen
ym=y(k)+(2*rand-1)*d;%Toa do moi cua diem k
t1=sqrt((x(k)-x(k-1))^2+(y(k)-y(k-1))^2)/v(k-1);
t1=t1+sqrt((x(k+1)-x(k))^2+(y(k+1)-y(k))^2)/v(k);%thoi gian truyen luc dau
t2=sqrt((x(k)-x(k-1))^2+(ym-y(k-1))^2)/v(k-1);%thoi gian truyen luc sau
t2=t2+sqrt((x(k+1)-x(k))^2+(y(k+1)-ym)^2)/v(k);
if t2<t1;
y(k)=ym;set(h,'ydata',y);pause(0.01);
end;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Mo phong su chong chat cua 2 song nguoc nhau
function bai20;
close all;clear;clc;
%Dieu kien bien tuan hoan:u_1=u_L+1;u_0=u_L;
L=200;%do dai soi day
c=2;%van toc truyen song
dx=2;%khoang cach giua cac phan tu
dt=1;%buoc nhay thoi gian
N=1000;%so phan tu tren day
b=(c*dt/dx)^2;%theo cong thuc (5.23)dat b nhu vay
x=(0:L+1)*dx;%vi tri cac phan tu dao dong
a1=0.5;a22=1;a23=2;%bien do dao dong cua cac phan tu

k=menu('Song thanh phan;','Dang sine cung tan so va bien do',...


'Dang sine cung tan so,khac bien do','Dang sine khac tan so',...
'Dang xung Gauss');
switch k
case 1;%dang sine cung tan so,bien do:w=c*8*pi/L
u01=a1*sin(8*pi*x/L);u_11=a1*sin(8*pi*(x+c*dt)/L);
u02=a1*sin(8*pi*x/L);u_12=a1*sin(8*pi*(x-c*dt)/L);
case 2;%dang sine cung tan so khac bien do
u01=a1*sin(8*pi*x/L);u_11=a1*sin(8*pi*(x+c*dt)/L);
u02=a22*sin(8*pi*x/L);u_12=a22*sin(8*pi*(x-c*dt)/L);
case 3;%dang sine khac tan so,khac bien do
u01=a1*sin(10*pi*x/L);u_11=a1*sin(10*pi*(x+c*dt)/L);
u02=a22*sin(12*pi*x/L);u_12=a22*sin(12*pi*(x-c*dt)/L);
case 4;
u01=a1*exp(-(x-10).^2);u_11=a1*exp(-(x-10+c*dt).^2);
u02=a23*exp(-(x-90).^2);u_12=a23*exp(-(x-90-c*dt).^2);
end;

u03=u01+u02;u_13=u_11+u_12;

27
ut1=fdwave(u_11,u01,N,b);ut2=fdwave(u_12,u02,N,b);ut3=fdwave(u_13,u03,N,b);
figure;
subplot(3,1,1);h1=plot(x,u_11);grid on;axis([x(1) x(end) -2.2 2.2]);title('Song di');
subplot(3,1,2);h2=plot(x,u_12);grid on;axis([x(1) x(end) -2.2 2.2]);title('song den');
subplot(3,1,3);h3=plot(x,u_13);grid on;axis([x(1) x(end) -2.2 2.2]);title('Song giao thoa');
for k=1:N
set(h1,'ydata',ut1(k,:));
set(h2,'ydata',ut2(k,:));
set(h3,'ydata',ut3(k,:));
pause(0.01);
end;
%======================================================================
====
function ut=fdwave(u_1,u0,N,b);%dieu kien bien tuan hoan
L=length(u0)-2;
u(1,:)=u_1(2:end-1);u(2,:)=u0(2:end-1);
for nt=2:N-1
u(nt+1,1)=2*(1-b)*u(nt,1)+b*(u(nt,2)+u(nt,L))-u(nt-1,1);
%u(nt,0)=u(nt,L)
u(nt+1,2:L-1)=2*(1-b)*u(nt,2:L-1)+b*(u(nt,1:L-2)+u(nt,3:L))-u(nt-1,2:L-1);
u(nt+1,L)=2*(1-b)*u(nt,L)+b*(u(nt,L-1)+u(nt,1))-u(nt-1,L);
%u(nt,L+1)=u(nt,1)
end;
ut=[u(:,L),u,u(:,1)];

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function bai21;
close all;clear;clc;
global du betha;
v0=20;alpha=45*pi/180;betha=15*pi/180;%van toc,goc nem,do nghieng doc
%Ptrinh chuyen dong theo truc 0x,0y:u(1)=x,u(2)=vx,u(3)=y,u(4)=vy
ptx='-k/m*sqrt(u(2)^2+u(4)^2)*u(2)';%ax=-c*v*vx=-k/m*sqrt(vx^2+vy^2)*vx
ptx=char(subs(ptx,{'k','m','g'},{0.0005,0.2,9.8}));%thay gtri k,m,g vao ax
pty='-g-k/m*sqrt(u(2)^2+u(4)^2)*u(4)';%ay=-g-c*v*vy=-g-k/m*sqrt(vx^2+vy^2)*vy
pty=char(subs(pty,{'k','m','g'},{0.0005,0.2,9.8}));%thay gtri k,m,g vao ay
%Cau a:Tinh vi tri,thoi diem cham dat lan1,lan2
du=inline(['[','u(2)',';',ptx,';','u(4)',';',pty,']'],'t','u');
[tc1,l1,phi1,vc1,xc1,yc1]=gode(0,0,0,v0,alpha);
disp('Lan cham 1');
disp('Thoi gian cham lan 1 la:t1=');disp(tc1);
disp('Cach chan doc l1=');disp(l1);

[t1,u1]=ode45(du,[0 tc1],[0;v0*cos(alpha);0;v0*sin(alpha)]);
v0=vc1;alpha=phi1;x0=xc1;y0=yc1;

[tc2,l2,phi2,vc2,xc2,yc2]=gode(tc1,x0,y0,v0,alpha);

28
disp('Lan cham lan 2');
disp('Thoi gian cham dat lan 2 la: t2=');disp(tc2);
disp('Cach chan doc l2=');disp(l2);

[t2,u2]=ode45(du,[tc1 tc2],[x0;v0*cos(alpha);y0;v0*sin(alpha)]);
xi=[u1(:,1);u2(:,1)];yi=[u1(:,3);u2(:,3)];

%Mo phong chuyen dong cua vat,di thi ko danh vao


figure(1);
plot([0 xc1 xc2],[0 yc1 yc2]);hold on;grid on;%Ve duong doc
h=plot(xi(1),yi(1),':',xi(1),yi(1),'.','markersize',30,'erase','xor');
axis equal;xlabel('x');ylabel('y');
dx=0.05*(max(xi)-min(xi));dy=0.05*(max(yi)-min(yi));
axis([min(xi) max(xi)+dx min(yi) max(yi)+dy]);
for i=1:length(xi)
set(h(1),'xdata',xi(1:i),'ydata',yi(1:i));
set(h(2),'xdata',xi(i),'ydata',yi(i));
pause(0.1);
end;

%Cau b:Goc nem toi uu


goc=betha:pi/100:pi/2;v0=20;%goc nem tu 15 do den 90 do
for k=1:length(goc)
alpha(k)=goc(k);
[tc11,l11,phi11,vc11,xc11,yc11,vxc11]=gode(0,0,0,v0,alpha(k));
[tc11,l22,phi22,vc22,xc22,yc22,vxc22]=gode(tc11,xc11,yc11,vc11,phi11);
l(k)=l22;
if (vxc11<=0)||(vxc22<=0)
break;
end;
end;
f=spline(alpha,l);%tao ham vi tri vat cham dat voi cac gtri goc nem
figure;fnplt(f);grid on;a=0.8;%ve do thi
[g1,lm]=fminsearch(@(alpha)-ppval(alpha,f),a);%tim vi tri vat o xa nhat voi goc nem tuong ung
disp('Goc nem toi uu la: ');disp(g1*pi/180);
disp('Tam xa dat cuc dai: lmax=');disp(-lm);
%======================================================================
====
function [tc,l,phi,vc,xc,yc,vxc]=gode(t0,x0,y0,v0,alpha);
global betha du;
[t1,u1]=ode45(du,[t0 20],[x0;v0*cos(alpha);y0;v0*sin(alpha)]);%tim vtri,van toc cua vat cham dat
spx=spline(t1,u1(:,1));
spvx=spline(t1,u1(:,2));
spy=spline(t1,u1(:,3));
spvy=spline(t1,u1(:,4));
fp=spline(t1,u1(:,3)-tan(betha)*u1(:,1));%vat roi doc nghieng nen do cao dat dc=yc-y0=yc-
x*tan(betha)

29
tc=fsolve(@(t1)ppval(fp,t1),7);%thoi diem cham dat
xc=ppval(spx,tc);yc=ppval(spy,tc);
vxc=ppval(spvx,tc);vyc=ppval(spvy,tc);
l=sqrt(xc^2+yc^2);
vc=sqrt(vxc^2+vyc^2);
gc=atan(abs(vyc/vxc));phi=gc+2*betha;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function bai22;
close all;clear;clc;
%tim goc,vi tri,thoi diem 2 vat cham nhau khong co ma sat
syms alpha t;
%Tim nghiem giai tich cua vat roi tu do A
y1=dsolve('D2y=-9.8','y(0)=10,Dy(0)=0','t');
%Nghiem giai tich cua vat nem xien B theo 2 truc
x2=dsolve('D2x=0','x(0)=0,Dx(0)=20*cos(alpha)','t');%ax=0,x(0)=0,vx(0)=20*cos(alpha)
y2=dsolve('D2y=-9.8','y(0)=0,Dy(0)=20*sin(alpha)','t');%ay=-9.8,y(0)=0,vy=20*sin(alpha)

t0=solve(x2-10,t);%thoi gian vat B cham dat voi bien alpha


pt=subs(y1-y2,t,t0);%tao ham (y1-y2)voi bien alpha
goc=double(solve(pt));%tim goc la nghiem cua ham(y1-y2)
t0=subs(t0,'alpha',goc);%tinh gtri t0 voi gtri alpha tim dc
yc=subs(y1,t,t0);%do cao cham nhau
disp(['Khong co ma sat,alpha=',num2str(goc*180/pi)]);
disp(['Vi tri cham: ',num2str(yc)]);
disp(['Thoi gian cham dat: ',num2str(t0)]);
%--------------------------------------------------------------------------
%Tim goc,vi tri,van toc khi co ma sat
pt1y='-g-k/m*abs(u1(2))*u1(2)';d1y=char(subs(pt1y,{'g','k','m'},{9.8,0.0005,0.1}));%vat A
pt2x='-k/m*sqrt(u2(2)^2+u2(4)^2)*u2(2)';d2x=char(subs(pt2x,{'k','m'},{0.0005,0.1}));%vat B
pt2y='-g-k/m*sqrt(u2(2)^2+u2(4)^2)*u2(4)';d2y=char(subs(pt2y,{'g','k','m'},{9.8,0.0005,0.1}));

du1=inline(['[','u1(2)',';',d1y,']'],'t','u1');%u1(1)=y1,u1(2)=vy
du2=inline(['[','u2(2)',';',d2x,';','u2(4)',';',d2y,']'],'t','u2');%u2(1)=x2,u2(2)=vx,u2(3)=y2,u2(4)=vy

[t1,u1]=ode45(du1,[0 2],[10 0])%tim nghiem u1(1),u1(2)


y1=spline(t1,u1(:,1));
t01=fsolve(@(t1)ppval(y1,t1),2);%thoi gian vat A cham dat
goc=0:pi/100:pi/2;v0=20;
for n=1:length(goc)
al(n)=goc(n);
[t2,u2]=ode45(du2,[0 2],[0 v0*cos(al(n)) 0 v0*sin(al(n))]);
x2=spline(t2,u2(:,1)-10);
t0=fsolve(@(t2)ppval(x2,t2),1);%thoi gian vat B cham dat
y2=spline(t2,u2(:,3));
yy2(n)=ppval(y2,t0);%do cao vat B ung voi t0
yy1(n)=ppval(y1,t0);%do cao vat A ung voi t0

30
if t0>t01
break;
end;
end;
pty=spline(al,yy1-yy2);%tao bieu thuc voi bien goc tim dc tu vong for
al=fsolve(@(al)ppval(pty,al),0.8);%tim gtri goc ung voi hai vat cham nhau
disp(['Co ma sat: goc alpha= ',num2str(al*180/pi)]);
%thoi gian va vi tri va cham
[t2,u2]=ode45(du2,[0 5],[0;v0*cos(al);0;v0*sin(al)]);
x2=spline(t2,u2(:,1));y2=spline(t2,u2(:,3));
t02=fsolve(@(t2)ppval(x2,t2),1);
disp(['Vi tri va cham: ',num2str(ppval(y2,t02))]);
disp(['Thoi gian va cham: ',num2str(t02)]);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function bai23;
close all;clear;clc;
%Cau a:Rq(t)+q(t)/C=V(t)
pt1='R*Dq+q/C=V0*cos(w*t)';%lap ptrinh vi phan
q1=dsolve(pt1,'q(0)=q0');%giai tim nghiem q(t)voi dk ban dau q(0)=q0
q11=subs(q1,{'q0','V0','R','w'},{1,1,1,6});%thay q0=1,V0=1,R=1,w=6 vao q(t)
q12=subs(q1,{'q0','V0','R','w','C'},{1,1,1,6,0.01});
figure(1);ezplot(q12,[0 6]);
f1=vectorize(inline(char(q11),'t','C'));%tao ham inline f1 voi bien t,C
%Bien thien dien tich tai nhung thoi diem ban dau rat ngan
[ti,ci]=meshgrid(linspace(0,1,50),linspace(0.01,0.25,50));
fi=f1(ti,ci);figure(2);surf(ti,ci,fi);shading interp;shg;
%Bien thien dien tich tai nhung thoi diem ban dau rat dai
[ti,ci]=meshgrid(linspace(0,6,50),linspace(0.01,0.25,50));
fi=f1(ti,ci);figure(3);surf(ti,ci,fi);shading interp;shg;

%Cau b:Lq''(t)+Rq'(t)=V(t)
pt2='L*D2q+R*Dq=V0*cos(w*t)';%lap ptrinh vi phan
q2=dsolve(pt2,'q(0)=q0,Dq(0)=i0','t');%giai tim nghiem q(t)
q21=subs(q2,{'q0','V0','R','w','i0','L'},{0,1,0.1,1,0.1,2});%thay cac gtri vao q(t)
figure(4);ezplot(q21,[0 200]);%ve do thi q(t)
i2=diff(q21);figure(5);ezplot(i2,[0 20]);%ve do thi i(t)=q'(t)

%Cau c:Lq''(t)+Rq'(t)+q(t)/C=V(t)
pt3='L*D2q+R*Dq+q/C=0';
q3=dsolve(pt3,'q(0)=q0,Dq(0)=i0','t');%tim nghiem q(t)
q31=subs(q3,{'q0','R','i0','L','C'},{1,1,0,4,1});%thay gtri vao q(t)
q32=subs(q3,{'q0','R','i0','C'},{1,1,0,1});%thay vao q(t)
figure(6);ezplot(q31,[0 30]);grid on;%ve q(t) khi t trong [0,30]
i3=diff(q31);figure(7);ezplot(i3,[0 30]);grid on;%ve i(t)khi t trong [0,30]
f3=inline(char(q32),'t','L');figure(8);ezsurf(f3,[0 30 1 4]);%ve ham q(t,L)
shading interp;

31
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function bai24
clc;close all;clear all;
%cau a
syms m L0 g r phi Dphi Dr k D2phi D2r
%x=r*sin(phi);y=r*cos(phi) trong toa do tru
%vx=dr/dt*sin(phi)+r*cos(phi)*dphi/dt
%vy=dr/dt*cos(phi)-r*sin(phi)*dphi/dt
%T=m/2(vx^2+vy^2)=(dr/dt)^2+r^2*(dphi/dt)^2
%U=m*g*(L0-y)+1/2*k*(L0-r)^2
T=m/2*(Dr^2+r^2*Dphi^2);
U=m*g*(L0-r*cos(phi))+1/2*k*(L0-r)^2;
L=T-U;
%cau a:phuong trinh Lagrange
dLdr=diff(L,Dr);%dL/dr
ptL1=diff(dLdr,r)*Dr+diff(dLdr,Dr)*D2r+diff(dLdr,phi)*Dphi+...
diff(dLdr,Dphi)*D2phi-diff(L,r);ptL1=simple(ptL1);
dLdphi=diff(L,Dphi);%dl/dphi
ptL2=diff(dLdphi,r)*Dr+diff(dLdphi,Dr)*D2r+diff(dLdphi,phi)*Dphi+...
diff(dLdphi,Dphi)*D2phi-diff(L,phi);ptL2=simple(ptL2);
sol=solve(ptL1,ptL2,D2r,D2phi);%giai tim he ptrinh tim D2r,D2phi
D2r=simple(sol.D2r);pretty(D2r);
D2phi=simple(sol.D2phi);pretty(D2phi);
%cau b:tinh va ve dong nang,the nang,nang luong
rphi1={r,Dr,phi,Dphi};ts={L0,k,g,m};m=1;k=4;L0=4;g=9.8;
rphi2={'u(1)','u(2)','u(3)','u(4)'};gtri={4,4,9.8,1};
du2=subs(D2r,rphi1,rphi2);%lap bieu thuc D2r voi cac bien L0,m,g,k va u(i) voi i=1,2,3,4
du2=char(subs(du2,ts,gtri));%thay cac gtri L0,m,g,k vao bthuc D2r
du4=subs(D2phi,rphi1,rphi2);%lap bieu thuc D2phi voi cac bien L0,m,g,k va u(i)
du4=char(subs(du4,ts,gtri));%thay gtri L0,m,g,k vao bthuc
fu=inline(['[u(2);',du2,';u(4);',du4,']'],'t','u');%lap he ptrinh Dr,D2r,Dphi,D2phi
opt=odeset('reltol',1e-6,'abstol',1e-9);%sai so ket qua
[t,u]=ode45(fu,[0 10],[4,0,pi/2,0],opt);%giai he ptrinh
r=u(:,1);Dr=u(:,2);phi=u(:,3);Dphi=u(:,4);
T=m/2*(Dr.^2+r.^2.*Dphi.^2);U=m*g*(L0-r.*cos(phi))+1/2*k*(L0-r).^2;
E=T+U;
figure(1);plot(t,T,t,U,t,E);grid on;legend('E_t','E_u','E');
%cau c:ve quy dao con lac
x=r.*sin(phi);y=(-1).*r.*cos(phi);
figure(2);
plot(x,y,':b');grid on;axis equal;%ve toa do cac diem(x,y)
h=plot([0 x(1)],[0 y(1)],':b',x(1),y(1),'.r','markersize',50);%vi tri diem treo,qua cau voi kich thuoc 50
axis([-6 6 -12 0]);%gioi han hinh
for k=2:length(y);
set(h(1),'xdata',[0 x(k)],'ydata',[0 y(k)]);%vi tri cac diem thuoc day treo
set(h(2),'xdata',x(k),'ydata',y(k));%vi tri cua qua cau

32
shg;pause(0.01);
end;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%hat co dtich q,khoi luong m cd voi vtoc v
%t=0 hat dung yen o goc toa do
function bai25;
close all;clear;clc;
syms r x y z Dx Dy Dz E B q m t;
Bv=[0 -B 0];Ev=[0 0 E];%B huong theo chieu am truc y,E chieu duong z
v=[Dx Dy Dz];
FE=q*Ev;FB=q*cross(v,Bv);F=FE+FB;
pt=['m*D2x=',char(F(1)),',','m*D2y=',char(F(2)),',','m*D2z=',char(F(3))];
ints='x(0)=0,y(0)=0,z(0)=0,Dx(0)=0,Dy(0)=0,Dz(0)=0';
sol=dsolve(pt,ints,'t');
xx=sol.x
yy=sol.y
zz=sol.z
t1=solve(zz-z,t);%rut r theo z de thay vao x:z=f(z)=>t=t(z)
ptx=subs(xx,t,t1);
disp('phuong trinh quy dao la:');pretty(ptx);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

33

You might also like