Skip to content

Instantly share code, notes, and snippets.

@okurka12
Created June 3, 2023 13:44
Show Gist options
  • Save okurka12/07b0ae083c6a44fd60265f384be3c4d5 to your computer and use it in GitHub Desktop.
Save okurka12/07b0ae083c6a44fd60265f384be3c4d5 to your computer and use it in GitHub Desktop.
Overeni spravnosti slozeni funkci - zadane funkce pochazi ze zadani prvniho opravneho terminu IMA1 skup. G. Jinak je skript stejny jako muj prechozi gist z unora.
# skripticek na overeni spravnosti slozeni funkci
#
# (stejne jako muj predchozi gist,
# ale napsal jsem tady funkci ze zadani IMA1 2022/2023 G-opravny)
#
# autor: vitek kvitek 🌻
# datum: 2023-06-03
# funguje v poho s:
# windows 11
# python 3.10.7
# numpy 1.23.3
# matplotlib 3.7.1
import matplotlib.pyplot as plt
import numpy as np
import math
def f(x):
if -2 <= x <= 0:
return 1 + x
elif 0 < x <= 2:
return 1 - (x / 2)
else:
return 0
def f_po_f(x):
return f(f(x))
def f_po_f_moje(x):
if -2 <= x < -1:
return x + 2
elif -1 <= x < 0:
return -(x / 2) + (1 / 2)
elif 0 <= x < 2:
return (x / 4) + (1 / 2)
else:
return 0
# tady funkce na vicenasobne zavolani pro zobrazeni vicero grafu
def plot(funkce, od=-2, do=2, n=10000, color="b", nazev="graf"):
# n linearne rozprostrenych cisel (np.float64) v mezich od, do
xs = np.linspace(od, do, n)
# at tam jsou i integery a nebyl problem s porovnavanim v meznich hodnotach x
xs = np.append(xs, list(range(od, do + 1)))
# obrazy
ys = [funkce(x) for x in xs]
# bloat aby byly hezky osy uprostred
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# popisek grafu
ax.set_xlabel(nazev)
# jedna instance grafu
plt.plot(xs, ys, f"{color}o")
def main():
plot(f, nazev="f", color="b")
plot(f_po_f_moje, nazev="f po f (moje)", color="g")
plot(f_po_f, nazev="f po f", color="r")
# ukaze graf (otevre okynko)
plt.show()
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment