Commit 105383df authored by Tobias Ingebrigt Ørstad's avatar Tobias Ingebrigt Ørstad
Browse files
parents 111726a8 3f2df9e7
%% Cell type:markdown id: tags:
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="_Oving2.ipynb">Øving 2</a>
</div>
<ul class="nav navbar-nav">
<li><a href="Ulike%20typer%20if-setninger.ipynb">Ulike typer if-setninger</a></li>
<li><a href="Sammenligning%20av%20strenger.ipynb">Sammenligning av strenger</a></li>
<li><a href="Logiske%20operatorer%20og%20logiske%20uttrykk.ipynb">Logiske operatorer og logiske uttrykk</a></li>
<li><a href="Forbrytelse%20og%20straff.ipynb">Forbrytelse og straff</a></li>
<li class="active"><a href="Aarstider.ipynb">Årstider</a></li>
<li ><a href="Tekstbasert%20spill.ipynb">Tekstbasert spill</a></li>
<li><a href="Sjakkbrett.ipynb">Sjakkbrett</a></li>
<li><a href="Billettpriser%20og%20rabatter.ipynb">Billettpriser og rabatter</a></li>
<li><a href="Skatteetaten.ipynb">Skatteetaten</a></li>
<li><a href="Epletigging.ipynb">Datamaskinen som tigget epler</a></li>
<li><a href="Andregradsligning.ipynb">Andregradsligning</a></li>
</ul>
</div>
</nav>
# Årstider
**Læringsmål:**
- Betingelser
- Logiske uttrykk
**Starting Out with Python:**
- Kap. 3.3-3.5
I denne oppgaven skal en bruker skrive inn dag og måned og få ut hvilken årstid datoen tilhører.
Et år har (offisielt) fire årstider, og i denne oppgaven tar vi utgangspunkt i at årstidsskiftene følger tabellen nedenfor. **(Merk deg datoene)**
Årstid | Første dag
--- | ---
Vår | 20. mars
Sommer | 21. juni
Høst | 22. september
Vinter | 21. desember
%% Cell type:markdown id: tags:
**Oppgave:** Lag et program som tar inn en måned som en streng og en dag i denne måneden som et tall fra brukeren. Programmet skal så skrive ut årstiden assosiert med denne datoen.
Du kan anta at inputen er en gyldig dato.
**Eksempel på kjøring:**
```
Måned: mars
Dag: 20
Vår
```
```
Måned: mars
Dag: 19
Vinter
```
```
Måned: november
Dag: 20
Høst
```
___Skriv din kode her:___
%% Cell type:code id: tags:
``` python
```
%% Cell type:markdown id: tags:
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="_Oving2.ipynb">Øving 2</a>
</div>
<ul class="nav navbar-nav">
<li><a href="Ulike%20typer%20if-setninger.ipynb">Ulike typer if-setninger</a></li>
<li><a href="Sammenligning%20av%20strenger.ipynb">Sammenligning av strenger</a></li>
<li><a href="Logiske%20operatorer%20og%20logiske%20uttrykk.ipynb">Logiske operatorer og logiske uttrykk</a></li>
<li><a href="Forbrytelse%20og%20straff.ipynb">Forbrytelse og straff</a></li>
<li><a href="Aarstider.ipynb">Årstider</a></li>
<li><a href="Sjakkbrett.ipynb">Sjakkbrett</a></li>
<li><a href="Billettpriser%20og%20rabatter.ipynb">Billettpriser og rabatter</a></li>
<li><a href="Skatteetaten.ipynb">Skatteetaten</a></li>
<li><a href="Epletigging.ipynb">Datamaskinen som tigget epler</a></li>
<li class="active"><a href="Andregradsligning.ipynb">Andregradsligning</a></li>
</ul>
</div>
</nav>
# Andregradsligning
**Læringsmål:**
- Betingelser
**Starting Out with Python:**
- Kap. 3.4
%% Cell type:markdown id: tags:
I denne oppgaven skal du lage et program som tar inn input fra brukeren om tallene i en andregradsligning, og returnerer hvorvidt ligningen har to reelle løsninger, to imaginære løsninger eller én reell dobbeltrot. I tillegg skal programmet returnere løsningene dersom de er reelle.
Den generelle formen til en andregradsligning er
\begin{equation*}
ax^2 + bx + c = 0
\end{equation*}
For å finne ut hvor mange løsninger og hvilket løsningsområde en andregradsligning har, kan man bruke *diskriminanten*
\begin{equation*}
d = b^2 - 4ac
\end{equation*}
og tabellen:
Tilfelle|Løsningsområde|Antall røtter
---|---|---
d < 0|Imaginær|2
d > 0|Reell|2
d = 0|Reell 1|(dobbeltrot)
%% Cell type:markdown id: tags:
## a) Finn riktig type løsning
%% Cell type:markdown id: tags:
***Lag et program som ber om de tre verdiene a, b og c, regner ut d, og forteller brukeren om ligningen har to imaginære løsninger, to reelle løsninger, eller én reell dobbeltrot.***
Sjekk for alle de tre mulige utfallene:
- To imaginære løsninger
- f.eks.: a = 2, b = 4, c = 9
- To reelle løsninger
- f.eks.: a = 2, b = -5, c = 0
- Én reell dobbeltrot
- f.eks.: a = 2, b = 4, c = 2
***Skriv koden under***
%% Cell type:code id: tags:
``` python
```
%% Cell type:markdown id: tags:
## b) Reelle løsninger
%% Cell type:markdown id: tags:
***Utvid programmet i a) slik at bruker får vite løsningen(e) dersom de(n) er reell(e)***
Andregradsformelen for å finne løsningen(e) er:
\begin{equation*}
x=\frac{-b±\sqrt{d}}{2a}
\end{equation*}
**Eksempel kjøring av kode:**
```python
#Eksempel 1: imaginære løsninger
a: 2
b: 4
c: 9
Andregradsligningen 2.00*x^2 + 4.00*x + 9.00 har to imaginære løsninger
```
```python
#Eksempel 2: reelle løsninger
a: 2
b: -5
c: 0
Andregradsligningen 2.00*x^2 -5.00*x + 0.00 har de to reelle løsningene 2.50 og 0.00
```
```python
#Eksempel 3: reell dobbeltrot
a: 2
b: 4
c: 2
Andregradsligningen 2.00*x^2 + 4.00*x + 2.00 har en reell dobbeltrot -1.00
```
%% Cell type:markdown id: tags:
## C) (FRIVILLIG) Loss of significance
%% Cell type:markdown id: tags:
Andregradsformelen kan i enkelte tilfeller gi feil svar. Et slikt tilfelle er når man bruker den på likningen $x^2+9^{12}x−3=0$ . Om man ønsker å finne røttene til denne likningen, gir standardformelen følgende resultat:
```python
Andregradsligningen 1.00*x^2 + 282429536481.00*x -3.00 har de to reelle løsningene 0.000e+00 og -2.824e+11
```
Her er bare den siste av røttene korrekt. Den første roten er ukorrekt blitt null pga. avrundingsfeil som følge av tap av presisjon i beregningen, korrekt svar ville ha vært:
```python
Andregradsligningen 1.00*x^2 + 282429536481.00*x -3.00 har de to reelle løsningene 1.062e-11 og -2.824e+11
```
Hva kommer denne feilen av? ***Gjør om på programmet slik at det tar hensyn til slike tilfeller.***
**Eksempel på kjøring**
```python
#a = 0.25, b = 18000, c = 1