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
Opgave 1.1
Opgave 1.2
Opgave 1.3
Opgave 1.4
Opgave 1.5
Opgave 1.6
Opgave 1.7
Opgave 1.8
Opgave 1.9
Opgave 1.10
Opgave 1.11
Opgave 1.12
Analyse-opgaver Differentialligningsopgaver Objekt-orienterede opgaver Ekstra opgaver Tema om ramper Eksamensopgaver Add Chapter..

Plotte-opgaver

Opgave 1.1

Skriv de nødvendige python-kommandoer i jupyter Notebook for at lave denne figur:

Figure 1 Figur sammensat af streger.

Du får brug for approximationen og for at kalde set_aspect-metoden:
ax.set_aspect('equal')
på dit Matplotlib Axes object, ax, for at en enhed på helholdsvis - og -aksen fylder det samme.


Opgave 1.2

Skriv de nødvendige python-kommandoer i jupyter Notebook for at lave denne figur:

Figure 2

Lav dernæst denne figur:

Figure 3



Opgave 1.3

Skriv de nødvendige python-kommandoer i jupyter Notebook for at lave denne figur:

Figure 4

Dog behøver du ikke lave hverken pil eller text, der i øvrigt er lavet med disse to kommandoer:
ax.arrow((1+np.sqrt(2)),0.2,0,-1.15,width=.05,
         length_includes_head=True,facecolor='w')
ax.text(2,0.5,'$x=1+\sqrt{2}$')
hvor ax er Matplotlib Axes-objektet.
Modificér dernæst din kode til at den laver denne figur:

Figure 5



Opgave 1.4

Skriv de nødvendige python-kommandoer i jupyter Notebook for at lave denne figur, der fremkommer ved at sammensætning af fire cirkelbuer:

Figure 6



Opgave 1.5

Skriv de nødvendige python-kommandoer i jupyter Notebook for at lave denne figur, der indeholder en enkelt sinusbølge.

Figure 7

Udvid din kode, så den kan plotte motivet på tre andre måder i samme figur, som det er gjort her:

Figure 8

Hint: Start med blot at skrive de nødvendige kommandoer på så mange linier som du har brug for. Modificér derefter din kode så du benytter for-løkker (læs om dem her, her og her). Læg mærke til at man kan lave regneoperationer på NumPy arrays mens man ikke kan gøre det på lister.


Opgave 1.6

Plot med plot funktionen fra Matplotlib pakken se eksempel her denne funktion:
Brug én farve til kurven for og en anden farve for . Benyt et lille tal hhv. lige under og lige over som grænsen når du plotter, så du undgår at nævneren bliver nul i beregningerne. Hvad skal defineres til hvis skal være kontinuert i ?
Hint: Få hjælp i denne how to til hvordan man plotter flere stumper af en kurve med forskellig farve.


Opgave 1.7

I en artikel med machine learning i global optimering af bl.a. krystaloverflader omtales denne funktion:
som en "smooth cutoff function". Den bruges til at begrænse hvor langt hvert atom "ser" når man simplificerer de kvantemekanisk vekselvirkninger mellem atomerne til en "machine learned"-model.
Skriv python-kommandoer i jupyter Notebook der plotter for Å. Plot funktionen for alle kombinationer af og Å. Lav en samlet figur med flere paneler (Matplotlib Axes objekter) over hinanden. I hvert panel holdes konstant, mens varieres.
Hint: Benyt np.power til at opløfte tal i en vis potens.


Opgave 1.8

I en artikel om reinforcement learning af atomar struktur af molekyler og materialeoverflader indføres en såkaldt kernel funktion:
(i artiklen er længden af forskellen mellem to vektorer, hvilket er udeladt her).
For bedre at forstå funktionen skal den plottes for i intervallet . Gør det i tre forskellige underfigurer, hvor du hver gang plotter for tre forskellig -værdier: , , og . I én underfigur benytter du i den næste og i den sidste .


Opgave 1.9

Tegn en farvet, kvadratisk boks i en figur. Lad variablen my_square indeholde Polygon objektet for boksen så den kan flyttes og farves om.

Figure 9

Skriv nu en funktion, move_square, der tager 4 argumenter:
  1. et polygon-objekt,
  2. en længde, ,
  3. endnu en længde, ,
  4. og en tekststreng med en farve.
Når funktionen kaldes skal den flytte polygon-objektet med vektoren og skifte dens farve til farven erklæret i kaldet.
Kald din funktion nogle gange og overbevis dig om at den virker som den skal:

Figure 10

Skriv til sidst et nogle lister dxs, dys, cols med -værdier og farver og lav en serie billeder af din boks, der flytter sig rundt og skifter farve ved at kalde din funktion således:
i = 0
for dx, dy, col in zip(dxs,dys,cols):
    move_square(my_square,dx,dy,col)
    fig.savefig('pyth21_manipulating_square_{:02d}.png'.format(i))
    i += 1
Her er billederne sat sammen til en animated gif ved hjælp af en hjemmeside:

Figure 11



Opgave 1.10

Tegn en Gauss-kurve:

Figure 12

Variér og animér at kurven flytter sig fra venstre til højre:

Figure 13



Opgave 1.11

Tegn en kvadratisk boks på et skævt underlag:

Figure 14

Lav en animation, hvor boksen flyttes med konstant hastighed ned ad underlaget:

Figure 15

Hint: Læg mærke til at i animation how to bliver den røde bold og den gennemsigtige firkant begge plottet med plot, hvorved der dannes Line2D objekter. Sådanne objekter kan få deres koordinater ændret med set_data metoden. Hvis du løser denne opgave for en gennemsigtig box kan du bruge samme metode. Men hvis du benytter fill til at plotte boksen får du i stedet et Polygon objekt, hvis koordinater skal ændres med update metoden. Det kan være lidt udfordrende, da koordinaterne skal afleveres som et to dimensionelt Numpy array.


Opgave 1.12

I denne opgave skal du øve at tegne og animere figurer i python. Du får øvelse i at arbejde med funktioner og for-løkker, der begge er kerne-elementer i brugen af python.
Start med at tegne to tandhjul med hver 7 tænder. Du kan lade dig inspirere af denne figur, men behøver ikke få det til at se eksakt sådan ud.

Figure 16

Sørg for at have en funktion, der regner koordinaterne ud for et tandhjuls yderside. Funktionen skal tage ét argument, en vinkel, som siger noget om hvor meget tandhjulet har drejet sig. Inde i funktionen bør du benytte en for-løkke til at beregne koordinaterne for en tand ad gangen.
Samme funktion kan nu benyttes til at beregne koordinaterne for begge tandhjul, den skal blot kaldes én gang for hvert tandhjuls aktuelle vinkel. Efter kaldet kan et eller begge af tandhjulene flyttes i rummet så de ikke ligger oven i hinanden. Hvis du benytter NumPy-arrays kan du gøre dette ved blot at lægge en skalar (et tal) til hele arrayet, som vist her.
Du kan frit vælge om du tegner tandhjulene som stregtegninger (gjort til venstre, og tidligere i denne opgave, se evt. mere i howto-en om det) eller som fyldte polygoner (gjort til højre, og tidligere i denne opgave, se evt. også i howto-en om det).
Sæt nu dine tandhjul i bevægelse og lave en animation af det.

Figure 17



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