python22.sci2u.dk Active sci2u
Loading...
Login
Prefer latest booklet Prefer latest booklet Login
Link to booklet is copied to clipboard!
Saved to booklet!
Removed from booklet!
Started capturing to booklet.
Stopped capturing to booklet.
Preferring latest booklet.
No longer prefers latest booklet.
Entered edit mode.
Exited edit mode.
Edit mode

Click on the booklet title or a chapter title to edit (max. 30 characters)


Exercises

Plotte-opgaver Analyse-opgaver Differentialligningsopgaver Objekt-orienterede opgaver Ekstra opgaver
Opgave 5.1
Opgave 5.2
Tema om ramper Eksamensopgaver Add Chapter..

Ekstra opgaver

Opgave 5.1

Den simpleste måde at løse differentialligninger på blev introduceret af den schweiziske matematiker Leonhard Euler (1707-1783) og kaldes derfor Euler-metoden. Se på differentialligningen:
Kendes en værdi af den afhængige variabel, , til en bestemt værdi af den uafhængige variabel, "tiden" , kan senere værdier bestemmes med Euler-metoden, der iterativt frembringer løsningen ved at tage små tidsskridt fra det 'te til det 'te punkt på en diskret repræsentation af kurven:
I Euler-metoden beregnes den næste funktionsværdi alene på basis af den aktuelle differentialkvotient. Dvs. tid og funktionsværdi fremskrives til første orden i en skridtlængde, . Denne metode er eksakt hvis er uafhængig af og , men hvis varierer, akkumulerer Euler-metoden hurtigt fejl. Disse kan reduceres ved anvendelse af højereordensdifferentialigningsløsere.

Figure 1

En måde at forbedre Euler-metoden på er vist i figuren ovenfor. Her beregnes først én hældning, , for det aktuelle punkt, dernæst en ny hældning, , "et halvt skridt fremme" for så endeligt at tage hele skridtet baseret på denne, nye hældning:
En sådan fremgangsmåde kaldes en Runge-Kutta-metode efter dens opfindere, C. Runge og M.W. Kutta. Metoden er af 2. orden da den akkumulerede fejl vokser proportionalt med .
Betragt differentialligningen,
for .
a) Løs først differentialligningen efter Euler-metoden:
implementeret som en for-løkke, noget i stil med dette ufuldstændige program, hvor t og y beskriver til at starte med og så løbende opdateres:
ts = [t]
ys = [y]

for _ in np.arange(t,tmax,delta_t):
   y += ...
   t += ...
   ts.append(t)
   ys.append(y)
Plot resultatet for 3 forskellige værdier af , fx , og .

Figure 2

b) Gentag spgm. a) idet du løser differentialligningen efter en 2. ordens Runge-Kutta metode:

Figure 3

c) Løs nu differentialligningen under anvendelse af solve_ivp, hvor parameteren, der tilsvarer hedder max_step.

Figure 4

d) Skriv til sidst din løsning til spgm. b) som en funktion, my_ivp_solver, der kaldes med tre positionelle argumenter og et keyword-argument:
  1. en funktionshenvisning til en funktion, , der returnerer
  2. en liste, , der angiver start og slutværdier for tiden,
  3. en liste med ét tal, , der er startværdien for , dvs. .
  4. et keyword-argument, max_step, der angiver værdien af .
Lad endvidere din funktion aflevere de to lister med tider og funktionsværdier på samme måde som solve_ivp, hvilket kan gøres ved at sætte dem på som attributter til en ellers "tom" funktion:
    ...
        f = lambda x: None
        f.t = np.array(ts)
        f.y = np.array([ys])
    return f
(Dette er lidt et hack, hvor det udnyttes at man kan sætte attributter på funktioner. f kunne have været et andet python objekt end lige en funktione, men fx ikke en integer eller en liste.) Hvis du skriver koden rigtigt skal du kunne udskifte solve_ivp med my_ivp_solver i din kode til spørgsmål c og få samme plot som i delspørgsmål b.


Opgave 5.2

Et ustrækkeligt tov med masse per længdeenhed, , er ophængt lige højt i begge ender. Under indvirkning af tyngdekraften vil det hænge som på figuren og følge det der betegnes kædelinien (Eng: catenary):

Figure 5

Kraften i tovet, snorkraften, virker altid langs tovets retning, hvilket betyder at snorkraften midt i tovet (dvs. for , jf. figuren) peger i -retningen. Størrelsen af snorkraften betegnes . Går man en længde ud ad tovet til et punkt vil al vægten af tovet fra midten til mærke en tyngdekraft, i -retningen, hvor er tyngdeaccelerationen. Kraftligevægt for dette stykke af tovet betyder derfor at snorkraften i må være i -retningen og i -retningen. Da snorkraften kun kan pege i tovets retning vides nu at tovets hældning som funktion af længden af tov, , fra tovets midte opfylder:
hvor er introduceret for at forkorte dette og følgende udtryk. Vi har tidligere i kurset arbejdet med kurveintegraler og længden af en kurve:
Benyttes nu differentialregningens hovedsætning fås følgende udtryk for :
Indsættes , heri og uddrages det reciprokke står man med:
Med kæderegelen, , kan man nemt udlede et tilsvarende udtryk for :
Vi har altså - og -koordinaterne for kædelinien beskrevet ved hver deres 1. ordensdifferentialligning, hvor den uafhængige variable er den samme, nemlig længden af kædelinien, . Vi har dermed to muligheder for at finde og plotte kædelinien:
  1. Vi kan løse de to 1. ordensdifferentialligninger hver for sig med to kald af solve_ivp og få løsningerne for hhv og for de samme værdier af .
  2. Vi kan løse de to 1. ordensdifferentialligninger samtidigt som om de var koblede differentialligninger (selvom de ikke er det) med ét kald af solve_ivp. Hermed bliver det automatisk opfyldt at og fås for de samme værdier af .
Dette skal nu prøves i praksis, idet benyttes og en passende startbetingelse aflæses fra figuren.
a) Benyt den første metode og tjek at -værdierne er de samme. Benyt evt t_eval-argumentet i kaldet af solve_ivp for selv at styre hvilke -værdier, der benyttes. Plot kædelinien.
b) Benyt den anden metode og plot oven i svaret fra spørgsmål a).
c) Plot den analytiske løsning, for , og konstatér at den også ligger oven i de numeriske løsninger.


Sci2u Assignment: 820
Delete "Exercises"?
Once deleted this booklet is gone forever!
Block is found in multiple booklets!

Choose which booklet to go to:

© 2019-2022 Uniblender ApS