Z Skrypty dla studentów Ekonofizyki UPGOW
(Utworzył nową stronę „== Modelowanie: Armata == Mamy: :<math>\vec F = m \vec a</math> więc: :<math>\vec F = m \vec \ddot x</math> w kartezjańskim układzie współrzędnych mamy: :<math>\b…”) |
(→Modelowanie: Armata) |
||
Linia 24: | Linia 24: | ||
:<math>\begin{cases} \dot x=v_x \\ \dot y=v_y\\ \dot v_x = -\gamma/m \; (v_x-u(t)) \\ \dot v_y=-\gamma/m\; v_y-g \end{cases}</math> | :<math>\begin{cases} \dot x=v_x \\ \dot y=v_y\\ \dot v_x = -\gamma/m \; (v_x-u(t)) \\ \dot v_y=-\gamma/m\; v_y-g \end{cases}</math> | ||
+ | |||
+ | <source> | ||
+ | clear all | ||
+ | close all | ||
+ | disp('This is a gun!') | ||
+ | |||
+ | function dx = gun(X,T) | ||
+ | g=10; m=1; gama=1.5; | ||
+ | u=(T>0.1)*10; | ||
+ | dx = zeros(4,1); | ||
+ | dx(1) = X(3); % x | ||
+ | dx(2) = X(4); % y | ||
+ | dx(3) = -gama/m*( X(3)-u ); % vx | ||
+ | dx(4) = -gama/m*X(4) - g; % vy | ||
+ | return | ||
+ | end | ||
+ | |||
+ | n=125; | ||
+ | t = linspace(0,1.22,n); | ||
+ | i=1; | ||
+ | subplot(2,1,1) | ||
+ | hold on | ||
+ | alfas=linspace(0.01,pi/2,10); | ||
+ | v0=1.; | ||
+ | for alfa=alfas | ||
+ | X0 = [0,0,v0*cos(alfa),v0*sin(alfa)]; | ||
+ | [X,T,MSG]=lsode(@gun,X0,t); | ||
+ | plot(X(:,1),X(:,2),'r-') | ||
+ | i0=find(X(:,2)<0)(1)-1; | ||
+ | i1=find(X(:,2)<0)(1); | ||
+ | x_interp(i)=X(i0,1)+( 0 -X(i0,2))/(X(i1,2)-X(i0,2))*(X(i1,1)-X(i0,1)); | ||
+ | plot(x_interp(i), 0 ,'g*') | ||
+ | i+=1; | ||
+ | endfor | ||
+ | |||
+ | hold off | ||
+ | grid on | ||
+ | ylim([0,.05]) | ||
+ | xlim([0,.1]) | ||
+ | subplot(2,1,2) | ||
+ | plot(alfas*180/pi,x_interp,'bo') | ||
+ | alfa_fine=linspace(0,90,1000); | ||
+ | x_fine=interp1(alfas*180/pi,x_interp,alfa_fine,'cubic'); | ||
+ | [zasieg,alfa_i]=max(x_fine); | ||
+ | hold on | ||
+ | plot(alfa_fine,x_fine) | ||
+ | plot(alfa_fine(alfa_i),zasieg,'ro') | ||
+ | printf("Najwiekszy zasieg dla strzalu pod katem %f stopni\n",alfa_fine(alfa_i)) | ||
+ | </source> |
Wersja z 21:33, 4 sty 2010
Modelowanie: Armata
Mamy: \[\vec F = m \vec a\] więc: \[\vec F = m \vec \ddot x\] w kartezjańskim układzie współrzędnych mamy: \[\begin{cases} F_x = m \ddot x \\ F_y = m \ddot y \end{cases}\] Siły w ogólności zależą od prędkości, czasu i położenia. W przypadku lotu pocisku możemy założyć, że działa na niego siła tarcia oraz siła ciężkości.
\[\vec F = \vec T + \vec Q \] Gdzie Q to ciężar \[\vec Q = \begin{cases} 0 \\ -mg \end{cases}\]
Siła tarcia zależy od prędkości ruchu posicku względem powietrza. Jeżeli będzie wiał wiatr \[\vec u(t) = \begin{cases} u(t) \\0 \end{cases}\] to trzeba jego prękość odjąć od prędkości ruchu pocisku względem ziemi (wiatr pozorny). \[\vec T = - \gamma (\vec v-\vec{u(t)}) = \begin{cases} -\gamma (v_x-u(t) ) \\ -\gamma v_y \end{cases} \]
Czyli mamy układ równań:
\[\begin{cases} \dot x=v_x \\ \dot y=v_y\\ \dot v_x = -\gamma/m \; (v_x-u(t)) \\ \dot v_y=-\gamma/m\; v_y-g \end{cases}\]
Niepoprawny język.
Musisz wybrać język w następujący sposób: <source lang="html4strict">...</source>
Języki obsługiwane w podświetlaniu składni:
abap, actionscript, actionscript3, ada, apache, applescript, apt_sources, asm, asp, autoit, bash, basic4gl, blitzbasic, bnf, boo, c, c_mac, caddcl, cadlisp, cfdg, cfm, cil, cobol, cpp, cpp-qt, csharp, css, d, delphi, diff, div, dos, dot, eiffel, fortran, freebasic, genero, gettext, glsl, gml, gnuplot, groovy, haskell, html4strict, idl, ini, inno, io, java, java5, javascript, kixtart, klonec, klonecpp, latex, lisp, lotusformulas, lotusscript, lua, m68k, matlab, mirc, mpasm, mxml, mysql, nsis, objc, ocaml, ocaml-brief, oobas, oracle8, pascal, per, perl, php, php-brief, plsql, powershell, python, qbasic, rails, reg, robots, ruby, sas, scala, scheme, sdlbasic, smalltalk, smarty, sql, tcl, text, thinbasic, tsql, vb, vbnet, verilog, vhdl, visualfoxpro, winbatch, xml, xorg_conf, xpp, z80