20TD02U Tegning av polynomfunksjoner med Python - itnett/FTD02H-N GitHub Wiki
[python] La oss begynne med å lage et program som tar imot en vilkårlig tredjegradsfunksjon fra brukeren og tegner grafen for ( x )-verdier i et bestemt intervall. Vi vil først implementere algoritmen som bruker individuelle input()
-kommandoer for å ta imot verdier, og deretter forenkle denne med split()
for å ta imot alle verdiene på én gang.
Algoritme for tegning av en tredjegradsfunksjon
a) Hvordan kan brukeren skrive inn tredjegradsfunksjonen?
Brukeren kan skrive inn konstantene (a), (b), (c) og (d) som definerer tredjegradsfunksjonen ( f(x) = ax^3 + bx^2 + cx + d ).
b) Algoritme
- Skriv til skjermen "Dette programmet tegner funksjonen ( f(x) = ax^3 + bx^2 + cx + d ) for ( x )-verdier i intervallet fra ( s ) til ( t ).".
- Be brukeren om å skrive inn verdien til konstanten ( a ).
- Ta imot tallet fra brukeren, konverter det til et flyttall, og sett det lik variabelen ( a ).
- Gjenta for konstantene ( b ), ( c ), ( d ), ( s ), og ( t ).
- Lag en liste ( x ) med 100 ( x )-verdier fra ( s ) til ( t ).
- Lag en liste ( y ) med ( y )-verdier ved å sette lista ( x ) inn i funksjonen ( f(x) ) ved hjelp av variablene ( a ), ( b ), ( c ) og ( d ).
- Tegn den grafiske framstillingen.
- Send den grafiske framstillingen til skjermen.
c) Koding
La oss implementere denne algoritmen først med individuelle input()
-kommandoer.
import numpy as np
import matplotlib.pyplot as plt
def draw_cubic_function():
print("Dette programmet tegner funksjonen f(x) = ax^3 + bx^2 + cx + d for x-verdier i intervallet fra s til t.")
a = float(input("Skriv inn verdien til konstanten a: "))
b = float(input("Skriv inn verdien til konstanten b: "))
c = float(input("Skriv inn verdien til konstanten c: "))
d = float(input("Skriv inn verdien til konstanten d: "))
s = float(input("Skriv inn verdien til konstanten s: "))
t = float(input("Skriv inn verdien til konstanten t: "))
x = np.linspace(s, t, 100)
y = a*x**3 + b*x**2 + c*x + d
plt.plot(x, y, label=f'{a}x^3 + {b}x^2 + {c}x + {d}')
plt.axhline(0, color='black', linewidth=0.5)
plt.axvline(0, color='black', linewidth=0.5)
plt.legend()
plt.title('Tredjegradsfunksjon')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.grid(True)
plt.show()
draw_cubic_function()
d) Spørsmål
Ja, programmet kan også brukes til å tegne andregradsfunksjoner eller rette linjer ved å sette noen av konstantene til null.
3.3.38 Utfordring
Nå skal vi endre programmet slik at brukeren kan skrive inn alle tallene på én gang ved hjelp av split()
.
b) Algoritme
- Skriv til skjermen "Dette programmet tegner funksjonen ( f(x) = ax^3 + bx^2 + cx + d ) for ( x )-verdier i intervallet fra ( s ) til ( t ).".
- Be brukeren om å skrive inn verdiene til konstantene ( a ), ( b ), ( c ), ( d ), ( s ), og ( t ) på én linje, separert med mellomrom.
- Del opp inngangen ved hjelp av
split()
, konverter hver verdi til et flyttall, og tilordne dem til de respektive variablene. - Lag en liste ( x ) med 100 ( x )-verdier fra ( s ) til ( t ).
- Lag en liste ( y ) med ( y )-verdier ved å sette lista ( x ) inn i funksjonen ( f(x) ) ved hjelp av variablene ( a ), ( b ), ( c ) og ( d ).
- Tegn den grafiske framstillingen.
- Send den grafiske framstillingen til skjermen.
c) Koding
La oss implementere denne algoritmen med split()
.
import numpy as np
import matplotlib.pyplot as plt
def draw_cubic_function():
print("Dette programmet tegner funksjonen f(x) = ax^3 + bx^2 + cx + d for x-verdier i intervallet fra s til t.")
user_input = input("Skriv inn verdiene til a, b, c, d, s og t separert med mellomrom: ")
a, b, c, d, s, t = map(float, user_input.split())
x = np.linspace(s, t, 100)
y = a*x**3 + b*x**2 + c*x + d
plt.plot(x, y, label=f'{a}x^3 + {b}x^2 + {c}x + {d}')
plt.axhline(0, color='black', linewidth=0.5)
plt.axvline(0, color='black', linewidth=0.5)
plt.legend()
plt.title('Tredjegradsfunksjon')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.grid(True)
plt.show()
draw_cubic_function()
Nå kan brukeren skrive inn alle verdiene på én linje, og programmet vil tegne grafen for den tredjegradsfunksjonen over det spesifiserte intervallet. Dette gjør programmet mer brukervennlig og effektivt.