raket.mws

> restart;with(Units[Standard]):

Warning, the assigned name polar now has a global binding

Warning, these protected names have been redefined and unprotected: *, +, -, /, <, <=, <>, =, Im, Re, ^, abs, arccos, arccosh, arccot, arccoth, arccsc, arccsch, arcsec, arcsech, arcsin, arcsinh, arctan, arctanh, argument, ceil, collect, combine, conjugate, convert, cos, cosh, cot, coth, csc, csch, csgn, diff, eval, evalc, evalr, exp, expand, factor, floor, frac, int, ln, log, log10, max, min, normal, root, round, sec, sech, shake, signum, simplify, sin, sinh, sqrt, surd, tan, tanh, trunc, type, verify

hoogteRaket:=0; snelheidRaket:=0; inhoudRaket:=1500*Unit(centimeter^3); volumeWater:=600*Unit(centimeter^3); massaFles := 120*Unit(gram);

hoogteRaket := 0

snelheidRaket := 0

inhoudRaket := 1500*Unit([cm^3])

volumeWater := 600*Unit([cm^3])

massaFles := 120*Unit([g])

> dichtheidWater := 1000*Unit(kg/meter^3);

dichtheidWater := 1000*Unit([kg/m^3])

Oppervlakte van de opening waaruit het water uit de raket spuit

> oppervlakteStop := 4.9*Unit(centimeter^2);

oppervlakteStop := 4.9*Unit([cm^2])

> begindruk := 4*Unit(bar);

begindruk := 4*Unit([bar])

Een tijdstap van 1 milliseconde geeft bijvoorbeeld aan dat we elke duizendste seconde hoogte, snelheid, enz. zullen berekenen.

> tijdstap := 1*Unit(ms);

tijdstap := Unit([ms])

Dit zorgt ervoor dat we (te?) veel informatie zullen krijgen over wat er precies met onze raket gebeurt:

> printlevel := 2;

printlevel := 2

Laten we eens kijken wat er de eerste 10 milliseconden van de vlucht gebeurt.

>

beginVolumeWater := volumeWater; #onthouden voor later
beginVolumeLucht := inhoudRaket - beginVolumeWater;
tijd := 0;
while  tijd/Unit(ms) < 10  do
  if  volumeWater/Unit(meter^3) > 0  then
    volumeLucht := inhoudRaket - volumeWater;
    # de druk hangt af van het volume, en wel als volgt:
    druk := begindruk * (beginVolumeLucht/volumeLucht)^1.4;
    # kracht veroorzaakt door uitgestoten water
    krachtWater := 2 * druk * oppervlakteStop;
    # totale massa van fles en water dat er nog in zit
    totMassa := massaFles + volumeWater*dichtheidWater;
    volumeWaterVerloren :=
                  sqrt(2*druk/dichtheidWater)*oppervlakteStop*tijdstap;
  else
    # alle water is er al uit
    totMassa := massaFles;
    volumeWaterVerloren := 0;
  end if;
  zwaartekracht := totMassa * Unit(acceleration_of_free_fall);
  snelheidsverandering := (krachtWater-zwaartekracht)/totMassa * tijdstap;
  #### nieuwe gegevens een tijdstap later
  hoogteRaket := hoogteRaket + snelheidRaket*tijdstap;
  snelheidRaket := snelheidRaket + snelheidsverandering;
  volumeWater := volumeWater - volumeWaterVerloren;
  if  volumeWater/Unit(meter^3) < 0  then
    volumeWater := 0;   # anders komen we verderop in de problemen
  end if;
  tijd := tijd + tijdstap;
od;

beginVolumeWater := 600*Unit([cm^3])

beginVolumeLucht := 900*Unit([cm^3])

tijd := 0

volumeLucht := 900*Unit([cm^3])

druk := 4.*Unit([bar])

krachtWater := 392.0*Unit([N])

totMassa := 18/25*Unit([kg])

volumeWaterVerloren := .1385929291e-4*Unit([m^3])

zwaartekracht := 1765197/250000*Unit([N])

snelheidsverandering := .5346377944*Unit([m/s])

hoogteRaket := 0

snelheidRaket := .5346377944*Unit([m/s])

volumeWater := .5861407071e-3*Unit([m^3])

tijd := Unit([ms])

volumeLucht := .9138592929e-3*Unit([m^3])

druk := 3.915330603*Unit([bar])

krachtWater := 383.7023991*Unit([N])

totMassa := .7061407071*Unit([kg])

volumeWaterVerloren := .1371182612e-4*Unit([m^3])

zwaartekracht := 6.924874765*Unit([N])

snelheidsverandering := .5335728709*Unit([m/s])

hoogteRaket := .5346377944e-3*Unit([m])

snelheidRaket := 1.068210665*Unit([m/s])

volumeWater := .5724288810e-3*Unit([m^3])

tijd := 2*Unit([ms])

volumeLucht := .9275711190e-3*Unit([m^3])

druk := 3.834541120*Unit([bar])

krachtWater := 375.7850298*Unit([N])

totMassa := .6924288810*Unit([kg])

volumeWaterVerloren := .1356962286e-4*Unit([m^3])

zwaartekracht := 6.790407686*Unit([N])

snelheidsverandering := .5328989477*Unit([m/s])

hoogteRaket := .1602848459e-2*Unit([m])

snelheidRaket := 1.601109613*Unit([m/s])

volumeWater := .5588592581e-3*Unit([m^3])

tijd := 3*Unit([ms])

volumeLucht := .9411407419e-3*Unit([m^3])

druk := 3.757362533*Unit([bar])

krachtWater := 368.2215282*Unit([N])

totMassa := .6788592581*Unit([kg])

volumeWaterVerloren := .1343236944e-4*Unit([m^3])

zwaartekracht := 6.657335143*Unit([N])

snelheidsverandering := .5326055272*Unit([m/s])

hoogteRaket := .3203958072e-2*Unit([m])

snelheidRaket := 2.133715140*Unit([m/s])

volumeWater := .5454268887e-3*Unit([m^3])

tijd := 4*Unit([ms])

volumeLucht := .9545731113e-3*Unit([m^3])

druk := 3.683550506*Unit([bar])

krachtWater := 360.9879496*Unit([N])

totMassa := .6654268887*Unit([kg])

volumeWaterVerloren := .1329977802e-4*Unit([m^3])

zwaartekracht := 6.525608598*Unit([N])

snelheidsverandering := .5326841267*Unit([m/s])

hoogteRaket := .5337673212e-2*Unit([m])

snelheidRaket := 2.666399267*Unit([m/s])

volumeWater := .5321271107e-3*Unit([m^3])

tijd := 5*Unit([ms])

volumeLucht := .9678728893e-3*Unit([m^3])

druk := 3.612882600*Unit([bar])

krachtWater := 354.0624948*Unit([N])

totMassa := .6521271107*Unit([kg])

volumeWaterVerloren := .1317158390e-4*Unit([m^3])

zwaartekracht := 6.395182330*Unit([N])

snelheidsverandering := .5331281384*Unit([m/s])

hoogteRaket := .8004072479e-2*Unit([m])

snelheidRaket := 3.199527405*Unit([m/s])

volumeWater := .5189555268e-3*Unit([m^3])

tijd := 6*Unit([ms])

volumeLucht := .9810444732e-3*Unit([m^3])

druk := 3.545155838*Unit([bar])

krachtWater := 347.4252721*Unit([N])

totMassa := .6389555268*Unit([kg])

volumeWaterVerloren := .1304754319e-4*Unit([m^3])

zwaartekracht := 6.266013217*Unit([N])

snelheidsverandering := .5339327146*Unit([m/s])

hoogteRaket := .1120359988e-1*Unit([m])

snelheidRaket := 3.733460120*Unit([m/s])

volumeWater := .5059079836e-3*Unit([m^3])

tijd := 7*Unit([ms])

volumeLucht := .9940920164e-3*Unit([m^3])

druk := 3.480184625*Unit([bar])

krachtWater := 341.0580932*Unit([N])

totMassa := .6259079836*Unit([kg])

volumeWaterVerloren := .1292743075e-4*Unit([m^3])

zwaartekracht := 6.138060527*Unit([N])

snelheidsverandering := .5350946808*Unit([m/s])

hoogteRaket := .1493706000e-1*Unit([m])

snelheidRaket := 4.268554801*Unit([m/s])

volumeWater := .4929805528e-3*Unit([m^3])

tijd := 8*Unit([ms])

volumeLucht := .1007019447e-2*Unit([m^3])

druk := 3.417798888*Unit([bar])

krachtWater := 334.9442910*Unit([N])

totMassa := .6129805528*Unit([kg])

volumeWaterVerloren := .1281103831e-4*Unit([m^3])

zwaartekracht := 6.011285738*Unit([N])

snelheidsverandering := .5366124648*Unit([m/s])

hoogteRaket := .1920561480e-1*Unit([m])

snelheidRaket := 4.805167266*Unit([m/s])

volumeWater := .4801695145e-3*Unit([m^3])

tijd := 9*Unit([ms])

volumeLucht := .1019830486e-2*Unit([m^3])

druk := 3.357842473*Unit([bar])

krachtWater := 329.0685624*Unit([N])

totMassa := .6001695145*Unit([kg])

volumeWaterVerloren := .1269817292e-4*Unit([m^3])

zwaartekracht := 5.885652369*Unit([N])

snelheidsverandering := .5384860480*Unit([m/s])

hoogteRaket := .2401078207e-1*Unit([m])

snelheidRaket := 5.343653314*Unit([m/s])

volumeWater := .4674713416e-3*Unit([m^3])

tijd := 10*Unit([ms])

Na 10 ms is de snelheid:

> snelheidRaket;

5.343653314*Unit([m/s])

Of omgerekend

> convert(snelheidRaket,units,km/h);

19.23715193*Unit([km/h])

Na iets meer dan 50 milliseconden (dit is 1/20e van een seconde!) is de raket al haar water kwijt.

> printlevel := 0; # een beetje minder uitvoer graag

printlevel := 0

hoogteRaket:=0; snelheidRaket:=0; inhoudRaket:=1500*Unit(centimeter^3); volumeWater:=600*Unit(centimeter^3); massaFles := 120*Unit(gram);

hoogteRaket := 0

snelheidRaket := 0

inhoudRaket := 1500*Unit([cm^3])

volumeWater := 600*Unit([cm^3])

massaFles := 120*Unit([g])

>

beginVolumeWater := volumeWater; #onthouden voor later
beginVolumeLucht := inhoudRaket - beginVolumeWater;
tijd := 0;
while  tijd/Unit(ms) < 52  do
  if  volumeWater/Unit(meter^3) > 0  then
    volumeLucht := inhoudRaket - volumeWater;
    # de druk hangt af van het volume, en wel als volgt:
    druk := begindruk * (beginVolumeLucht/volumeLucht)^1.4;
    # kracht veroorzaakt door uitgestoten water
    krachtWater := 2 * druk * oppervlakteStop;
    # totale massa van fles en water dat er nog in zit
    totMassa := massaFles + volumeWater*dichtheidWater;
    volumeWaterVerloren :=
                  sqrt(2*druk/dichtheidWater)*oppervlakteStop*tijdstap;
  else
    # alle water is er al uit
    totMassa := massaFles;
    volumeWaterVerloren := 0;
  end if;
  zwaartekracht := totMassa * Unit(acceleration_of_free_fall);
  snelheidsverandering := (krachtWater-zwaartekracht)/totMassa * tijdstap;
  #### nieuwe gegevens een tijdstap later
  hoogteRaket := hoogteRaket + snelheidRaket*tijdstap;
  snelheidRaket := snelheidRaket + snelheidsverandering;
  volumeWater := volumeWater - volumeWaterVerloren;
  if  volumeWater/Unit(meter^3) < 0  then
    volumeWater := 0;   # anders komen we verderop in de problemen
  end if;
  tijd := tijd + tijdstap;
od;

beginVolumeWater := 600*Unit([cm^3])

beginVolumeLucht := 900*Unit([cm^3])

tijd := 0

> hoogteRaket; convert(snelheidRaket,units,km/h); convert(volumeWater,units,cm^3);

.8032605671*Unit([m])

136.0977863*Unit([km/h])

6.360022990*Unit([cm^3])

Met een beetje prutsen kan je zien dat na 52 milliseconden er nog 6.36 cm^3 water in de raket zit en na 53 milliseconden is al het water al op.

Laten we nog een simulatie doen:

> hoogteRaket:=0; snelheidRaket:=0; inhoudRaket:=1500*Unit(centimeter^3); volumeWater:=600*Unit(centimeter^3); massaFles := 120*Unit(gram);

hoogteRaket := 0

snelheidRaket := 0

inhoudRaket := 1500*Unit([cm^3])

volumeWater := 600*Unit([cm^3])

massaFles := 120*Unit([g])

Maar we voegen een stukje code toe om grafieken te krijgen ... Ik heb ook een regeltje toegevoegd dat ervoor zorgt dat we in stappen van 10ms rekenen van zodra alle water uit de raket weg is, anders zou de berekening te lang duren (het duurt ook na die aanpassing nog lang genoeg).

>

tijdstap := 1*Unit(ms):
beginVolumeWater := volumeWater: #onthouden voor later
beginVolumeLucht := inhoudRaket - beginVolumeWater:
snelheidLijst := NULL:
hoogteLijst := NULL:
tijd := 0:
while  hoogteRaket/Unit(m) >= 0  do
  if  volumeWater/Unit(meter^3) > 0  then
    volumeLucht := inhoudRaket - volumeWater;
    # de druk hangt af van het volume, en wel als volgt:
    druk := begindruk * (beginVolumeLucht/volumeLucht)^1.4;
    # kracht veroorzaakt door uitgestoten water
    krachtWater := 2 * druk * oppervlakteStop;
    # totale massa van fles en water dat er nog in zit
    totMassa := massaFles + volumeWater*dichtheidWater;
      volumeWaterVerloren :=
                  sqrt(2*druk/dichtheidWater)*oppervlakteStop*tijdstap;
  else
    # alle water is er al uit
    totMassa := massaFles;
    krachtWater := 0;
    volumeWaterVerloren := 0;
  end if;
  zwaartekracht := totMassa * Unit(acceleration_of_free_fall);
  snelheidsverandering := (krachtWater-zwaartekracht)/totMassa * tijdstap;
  
  #### nieuwe gegevens een tijdstap later
  hoogteRaket := hoogteRaket + snelheidRaket*tijdstap;
  snelheidRaket := snelheidRaket + snelheidsverandering;
  volumeWater := volumeWater - volumeWaterVerloren;
  if  volumeWater/Unit(meter^3) < 0  then
    volumeWater := 0;   # anders komen we verderop in de problemen
    tijdstap := 10*Unit(ms);
  end if;

  #### nieuwe gegevens in de lijsten bijschrijven
  snelheidLijst := snelheidLijst , [tijd/Unit(ms),snelheidRaket/Unit(km/h)];
  hoogteLijst := hoogteLijst , [tijd/Unit(ms),hoogteRaket/Unit(m)];

  tijd := tijd + tijdstap;
od:

We kijken even naar de verzamelde gegevens.

> snelheidLijst;

[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...
[0, 1.924696060], [1, 3.845558394], [2, 5.763994607...

Een grafiekje zegt veel meer dan tien bladzijden cijfertjes:

> plot([snelheidLijst],labels=["tijd (ms)","snelheid (km/u)"]);

[Maple Plot]

> plot([hoogteLijst],labels=["tijd (ms)","hoogte (m)"]);

[Maple Plot]

Hoe lang duurde de vlucht precies?

> tijd;

8122*Unit([ms])

80 meter is wel nogal hoog; in de praktijk gaat de raket lang niet zo hoog. Wat zou er mis kunnen zijn aan onze simulatie?

> hoogteRaket:=0; snelheidRaket:=0; inhoudRaket:=1500*Unit(centimeter^3); volumeWater:=600*Unit(centimeter^3); massaFles := 120*Unit(gram); begindruk:=4*Unit(bar);

hoogteRaket := 0

snelheidRaket := 0

inhoudRaket := 1500*Unit([cm^3])

volumeWater := 600*Unit([cm^3])

massaFles := 120*Unit([g])

begindruk := 4*Unit([bar])

We houden nu ook rekening met de luchtweerstand. Die hangt af van de oppervlaktedoorsnede van de raket (dit is de doorsnede van de raket zoals gezien van bovenaf) en ook van de vorm van de raket. Die vorm wordt verwerkt door de weerstandcoefficient die 1 is voor slecht gestroomlijnde raketten maar 0,1 kan zijn voor zeer gestroomlijnde raketten. Het bepalen van die coefficient is niet bepaald eenvoudig dus we slaan er maar even naar en gokken op 0,5.

>

tijdstap := 1*Unit(ms):
weerstandCoeff := 0.5:
oppervlakteDoorsnede := 0.01*Unit(m^2):
beginVolumeWater := volumeWater: #onthouden voor later
beginVolumeLucht := inhoudRaket - beginVolumeWater:
snelheidLijst := NULL:
hoogteLijst := NULL:
tijd := 0:
while  hoogteRaket/Unit(m) >= 0  do
  if  volumeWater/Unit(meter^3) > 0  then
    volumeLucht := inhoudRaket - volumeWater;
    # de druk hangt af van het volume, en wel als volgt:
    druk := begindruk * (beginVolumeLucht/volumeLucht)^1.4;
    # kracht veroorzaakt door uitgestoten water
    krachtWater := 2 * druk * oppervlakteStop;
    # totale massa van fles en water dat er nog in zit
    totMassa := massaFles + volumeWater*dichtheidWater;
    volumeWaterVerloren :=
                  sqrt(2*druk/dichtheidWater)*oppervlakteStop*tijdstap;
  else
    # alle water is er al uit
    totMassa := massaFles;
    krachtWater := 0;
    volumeWaterVerloren := 0;
  end if;
  zwaartekracht := totMassa * Unit(acceleration_of_free_fall);
  # de 0.6 kg/m^3 op de volgende regel is de helft van de dichtheid van lucht
  luchtweerstand := -0.6*Unit(kg/m^3)*weerstandCoeff*oppervlakteDoorsnede
       * abs(snelheidRaket) * snelheidRaket;
  snelheidsverandering := (krachtWater-zwaartekracht+luchtweerstand)/totMassa * tijdstap;
  
  #### nieuwe gegevens een tijdstap later
  hoogteRaket := hoogteRaket + snelheidRaket*tijdstap;
  snelheidRaket := snelheidRaket + snelheidsverandering;
  volumeWater := volumeWater - volumeWaterVerloren;
  if  volumeWater/Unit(meter^3) < 0  then
    volumeWater := 0;   # anders komen we verderop in de problemen
    tijdstap := 10*Unit(ms);
    ## doe het hekje op de volgende regel weg om enkel de uitstootfase te volgen
    # break;
  end if;

  ## doe het hekje op de volgende regel weg om enkel het stijgen te volgen
  # if  snelheidRaket/Unit(meter/s) < 0  then break; end if;

  #### nieuwe gegevens in de lijsten bijschrijven
  snelheidLijst := snelheidLijst , [tijd/Unit(ms),snelheidRaket/Unit(km/h)];
  hoogteLijst := hoogteLijst , [tijd/Unit(ms),hoogteRaket/Unit(m)];

  tijd := tijd + tijdstap;
od;

> plot([snelheidLijst],labels=["tijd (ms)","snelheid (km/u)"]);

[Maple Plot]

> plot([hoogteLijst],labels=["tijd (ms)","hoogte (m)"]);

[Maple Plot]

Door de luchtweerstand is de hoogte een stuk lager en duurt de vlucht ook korter:

> tijd;

5222*Unit([ms])

>

>

>