modelling

Mathematical modelling and problem solving

Rumsliga modeller

Note: When requesting assistance with this module during the supervision sessions, please ask to speak to Adam by putting his name next to yours on waglys.

  1. I en kanal med längden 1 mil tar autopiloten helt plötsligt över kontrollen på fartyget R. Brown som börjar svänga omkring helt okontrollerat så att vid varje litet tidsteg Δt förflyttar sig fartyget, oberoende av tidigare steg, och i slumpmässig riktning, avståndet Δx längs kanalen. Ena änden av kanalen består lyckligtvis av mjuk sandstrand, men den andra stranden består av vassa klippor. Skulle fartyget gå på grund där skulle en naturkatastrof vara ett faktum. Hur stor är denna risk om fartygets ursprungsposition är:
    1. i kanalens mitt?
    2. i en godtycklig punkt x längs kanalen?
     (*Stochastic Simulation - Random walk on the integers*)
      noSim = 1000;
      tSteps = 100;
      xlim = 10;
      p = 1;
      klippor = 0;
      strand = 0;
      start = 0; (* Starting point *)
      fmat = ConstantArray[0, {noSim, tSteps}]; (*This Matrix fmat has elements fmat[[a,b]]: position of particle a at time b*)
    
       Occupancy = ConstantArray[0, {2*xlim + 1, tSteps}];
      (*This Matrix has elements Occupancy[[a,b]]: number of particles at position a at time b*)
    
        (* Simulation of the random walk *)
      For[j = 1, j <= noSim, j++,
       fmat[[j, 1]] = start;
       For[t = 2, t <= tSteps, t++,
        If[RandomReal[] < p, r = RandomInteger[];
         If[r == 0, fmat[[j, t]] = fmat[[j, t - 1]] - 1];
         If[r == 1, fmat[[j, t]] =  fmat[[j, t - 1]] + 1];,
         fmat[[j, t]] = fmat[[j, t - 1]]
         ];
         If[fmat[[j,t]] == xlim, klippor = klippor+1; Break[]];
         If[fmat[[j,t]] == -xlim, strand = strand+1; Break[]];
        ]
       ]
    
       For[t = 1, t <= tSteps, t++,
       For[i = 1, i <= (2*xlim + 1), i++,
        Occupancy[[i, t]] = Count[fmat[[All, t]], i - xlim]]
       ]
      Occupancy = Occupancy*(1/noSim);
    
      (*Visualize the  results*)
    
        SinglePathPlot =
       ListLinePlot[
        fmat[[1, All]]] (*Trajectory of an individual particle*)
    
      Manipulate[
       ListLinePlot[Occupancy[[All, t]], PlotRange -> {-0.5, 1}], {t, 1,
        tSteps, 1}]
    
        (*Print the numbre of times the particle reached the two edges of the domain*)
        klippor
        strand
    
  2. Gör en modell av hur ett ägg kokas. Ni kan anta att vitan koagulerar vid 60° och gulan vid 65° . Den termiska diffusiviteten är 1.45 × 10-3 cm2/s i vitan och 1.25 × 10-3 cm2/s i gulan. Lös sedan er modell i Mathematica. Hur lång tid tar det enligt er modell att koka ett hårdkokt ägg?
     tend = 2000; (*End time*)
      xlim = 3; (*Spatial domain defined by [-xlim, xlim]*)
      D1 = 1.45*10^(-3); (*Diffusion coefficient 1*)
      xpts = Range[-xlim, xlim, 0.1]; (*Define x-domain*)
      eqn1 = D[S[x, t], t] == D1*D[S[x, t], {x, 2}];  (*Equation 1*)
    
      sol = NDSolve[{eqn1, S[x, 0] == 20,
           S[-xlim, t] == 100,
           S[xlim, t] == 100}, S, {x, -xlim, xlim}, {t, 0, tend}];
    
             Manipulate[
         ListLinePlot[S[xpts, t] /. sol, PlotRange -> {-5, 105}], {t, 0, tend,
           0.1}]
       
  3. (Förväntad livslängd - Observera att detta ej är en rumslig modell) Antag att vi vill modellera förväntad livslängd baserad på en databas som består av 1000 slumpmässigt utvalda människor som avlidit. För varje individ känner vi till 50 attribut så som sjukdomar, vikt, längd, levnadsvanor, utbildning, typ av arbete, bostadsort osv. Målet är nu att hitta en funktion som predikterar livslängden hos en godtycklig person.
    1. överväg en flerdimensionell linjär modell som f(x1, x2, ..., x50) = c + a1x1 + a2x2 + ... + a50x50. Skulle vår data vara tillräcklig för att anpassa en sådan modell? Skulle minsta kvadrat-metoden (least squares) kunna användas? Hur bra skulle en sådan modell vara? Motivera dina svar. Tips: Se till att förstå vad en flerdimensionell linjär modell är. Om det ändå behövs hjälp, fråga!
    2. Skulle en kvadratisk modell fungera? (exempelvis ett kvadratiskt polynom?)
    3. Kan du förslå en eller flera andra användbara modeller? Finns det några specifika problem du stöter på?
    4. (Frivillig) Hur skulle det vara att använda ett så kallat artificiellt neuralt nätverk? Skulle det vara bättre än de enklare modellerna? Eller kanske finns det andra metoder du kommer att tänka på? Inget långt svar förväntas, skriv ner dina tankar och åsikter om du kommer på något speciellt.
  4. Uppskatta hur lång tid det tar att komma hem om du startar vid Chalmers hållplats och använder följande metod: tag första buss, eller spårvagn som kommer och slå en tärning ombord som säger hur många stationer du ska åka, gå av och ta första nästa buss/spårvagn (oberoende av riktning). Upprepa detta tills du kommer hem.
  5. "Game of Life" är en två-dimensionell cellulär automat där varje cell kan ta två olika tillstånd. övergångar mellan tillstånden kan sammanfattas på följande sätt:
    • Varje levande cell med färre än två levande grannar dör
    • Varje levande cell med två eller tre grannar lever till nästa generation
    • Varje levande cell med fler än tre grannar dör
    • Varje död cell med exakt tre grannar blir levande
    Er uppgift är att undersöka hur initialkonfigurationen påverkar dynamiken hos systemet. Vilka konfigurationer är statiska och vilka oscillerar? Finns det konfigurationer som varken är statiska eller oscillerar? En online-version av systemet hittar ni här.