Uitwerkingen LES 3

Uitwerkingen LES 3#

Opdracht 1

Schrijf een functie genaamd parabool(a,b,c,xstart,xeind,stapgrootte), dat de functie f(x) = ax^2 +bx+c definieert.

Het kwadraat van een getal krijg je via x**2 of simpelweg x*x.

Roep vervolgens parabool(1, -6, 9, -5, 2, 0.01) op

import matplotlib.pyplot as plt 
%matplotlib inline    
 
def parabool(a,b,c,xstart,xeind,stapgrootte):  
  y=[xstart**2*a+b*xstart+c]                         
  x=[xstart]                          
  xwaarde = xstart                       
  while xwaarde < xeind:                 
    xwaarde = xwaarde+stapgrootte      
    ywaarde = a*xwaarde**2 +b*xwaarde+c             
    x.append(xwaarde)                   
    y.append(ywaarde)                   
  return x,y

x,y = parabool(1, -6, 9, -5, 2, 0.01)

print(x,y)


plt.figure(figsize=(10,10))             # hiermee geven we aan dat we een figuur willen maken van 10 bij 10. Hierin willen we een plot maken. Dit kan je weglaten, dan bepaald Python de grootte
plt.plot(x, y, 'g-')                    # hierin wordt aangegeven WAT we willen plotten: wij willen horizontaal de x-waarden en verticaal de y-waarden. Daarna kan je de vorm van de grafiek aangeven: 'b-' geeft aan dat het een Blauwe lijn (-) moet zijn
plt.title('De parabool y=ax+b')             # je kan een titel geven voor het hele diagram (hoeft niet per se bij wiskunde, bij natuurkunde vaak wel!)
plt.xlabel('x')                         # label je x-as. Bij wiskunde hebben we niet echt eenheden, bij natuurkunde zou er bijvoorbeeld tijd (s) kunnen staan
plt.ylabel('y')                         # label je y-as. Bij wiskunde hebben we niet echt eenheden, bij natuurkunde zou er bijvoorbeeld snelheid (m/s) kunnen staan
      
plt.grid()                              
plt.show()                              
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Cell In[7], line 1
----> 1 import matplotlib.pyplot as plt 
      2 get_ipython().run_line_magic('matplotlib', 'inline')
      4 def parabool(a,b,c,xstart,xeind,stapgrootte):  

ModuleNotFoundError: No module named 'matplotlib'

EINDOPDRACHT#

Deze opdracht bestaat uit meerdere delen.

  1. DEFINIEER een functie oplossingenplotter(a,b,c) dat de oplossingen van a*x^2 +b*x+c =0 teruggeeft en weergeeft in de plot. Denk na over bestaan van 0, 1 of 2 oplossingen en hoe dat uitgespuugd wordt door je functie. Gebruik hiertoe je uitwerking van de vorige opdracht.

  2. plot de grafiek van deze functie, en highlight met een markerking de (bijvoorbeeld met plt.scatter(…) ) de oplossingen. Zie als voorbeeld de ‘lijn’ helemaal bovenin hoe je dat aan kan pakken met de grootte van de assen EN het definieren van de x-waarden en y-waarden. Zorg dat rond de oplossingen geplot wordt (tip: als x1 de linker en x2 de rechter oplossing is, plot dan bijvoorbeeld op het interval [x1 - 1, x2 + 1]. ). Dit plotten gebeurd dus BINNEN de definitie nog (dat is makkelijker)

  3. Voer dit uit met de functie oplossingenplotter(1, -6, 9) die de oplossingen plot van x^2 -6x + 9 = 0. Werk deze oplossing evt met de hand uit om te kijken of je programma correc werkt

Om je op weg te helpen hieronder het SKELET, maar zorg zelf voor de invulling en correcte uitwerking

import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline    

def oplossingplotter(a,b,c):
    D = b**2-4*a*c
    if(D>0):
        x1 = (-b-np.sqrt(D))/(2*a)
        x2 = (-b+np.sqrt(D))/(2*a)
    elif (D==0):
        x1 = -b/2*a
        x2 = x1
    elif (D<0):
        x1 = ""
        x2 = ""
    return x1,x2

def parabool(a,b,c,xstart,xeind,stapgrootte):  
  y=[xstart**2*a+b*xstart+c]                         
  x=[xstart]                          
  xwaarde = xstart                       
  while xwaarde < xeind:                 
    xwaarde = xwaarde+stapgrootte      
    ywaarde = a*xwaarde**2 +b*xwaarde+c             
    x.append(xwaarde)                   
    y.append(ywaarde)                   
  return x,y

a= 1
b= -6
c=  9
x1, x2= oplossingplotter(a,b,c)
x,y=parabool(a, b, c, x1-1, x2+1, 0.01)


plt.figure(figsize=(10,10))            
plt.plot(x, y, 'g-')                    
plt.xlabel('x')                         
plt.ylabel('y')                         
plt.scatter([x1,x2],[0,0],marker='x',c='r') 
plt.grid()                              
plt.show()