Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [a,b]=zad1(17.5,0.01,20,1);
- function [v0,alpha]=zad1(xfinal,odstupanje,vmax,crtanje)
- %%Check for number of arguments min. value =1
- if(nargin==0)
- fprintf("Zadatak nije moguce rijesiti\n");
- return;
- end
- %%Gravitational acceleartion
- g=9.81;
- %%Search: fix speed, change angle alpha from pi/4 and divide the
- %%interval to half parts
- %%First check if possible (we'll take vmax and angle for max distance)
- if(xfinal-vmax*vmax/g>odstupanje)
- fprintf("Zadatak nije moguce rijesiti");
- return;
- end
- %%Optimal launch angle for max. distance is alpha=pi/4
- alpha=pi/4;
- vdonja=0;
- vsredina=vmax/2.;
- v0=vsredina;
- while abs(xfinal-v0*v0/g)>odstupanje
- if xfinal-v0*v0/g<0
- %Polovimo interval 0 - vgranica (prebacaj) smanji
- v0=(vsredina+vdonja)/2.;
- vmax=vsredina;
- vsredina=v0;
- else
- v0=(vsredina+vmax)/2.;
- vdonja=vsredina;
- vsredina=v0;
- end
- end
- if crtanje==1
- x=0:0.01:xfinal;
- y=x.*tan(alpha)-g*x.^2/(2*v0^2*(cos(alpha)^2));
- plot(x,y,'r');
- hold on;
- plot(xfinal,0,'*k');
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement