#!/usr/bin/python3 # ==================================================================== # plot curve #5 # ==================================================================== import numpy as np import graphics as gr import draw_xy_axes as ax # ------------------------------------------------------------------- # ---- curve #5 # ------------------------------------------------------------------- def curve05(x): y = pow(np.e,(-1/np.e)) * pow((abs(x) + 1/np.e), \ -(abs(x) + 1/np.e)) return y # -------------------------------------------------------------------- # ---- range function for floats # -------------------------------------------------------------------- def frange(start,end,inc): while start < end: yield start start += inc # -------------------------------------------------------------------- # ---- main # -------------------------------------------------------------------- if __name__ == '__main__': # ---- draw a point (small circle) using window coordinates def draw_point(x,y,color='red',size=4): p = gr.Circle(gr.Point(x,y),size) p.setFill(color) p.setOutline('black') p.draw(win) return p # ---- setup graphics window win = gr.GraphWin('Curve #5',801,801) win.setBackground("white") # ---- draw X,Y axes ax.draw_xy_axes(win) # ---- plot curve #1 # ---- X scale factor 100 offset 400 # ---- Y scale factor -200 offset 400 for x in frange(-4.0,4.0,0.2): y = curve05(x) print(f'x={x:>6.2f} y={y:>6.2f} (raw values)') x = 400 + (x * 35) y = 400 + (y * -300) draw_point(x,y) # ---- pause program (click in window to continue) click = win.getMouse() win.close()