 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!