Форум сайта python.su
Помогите, пожалуйста…… как построить график функции y=x^2…. так, чтоб программа сама высчитывала координаты точек…..очень-очень нужно завтра
Офлайн
# -*- coding: utf-8 -*- from pylab import * subplot(111, axisbg='darkslategray') t = arange(-20.0, 20.0, 0.01) s = t**2 plot(t, s, 'y') xlabel('time (s)', color='r') ylabel('voltage (mV)', color='0.5') # grayscale color title('About as silly as it gets, folks', color='#afeeee') show()
Офлайн
u""" this module extends matplotlib plot to plot functions """ import numpy as np from pylab import plot,show def PlotPointsInner(f,mi,ma,fmi,fma,globalMin,globalMax,epsilon=0.01): u"""выбор точек для отрисовки функции выбираем точки так, чтобы получить погрешность меньше заданной""" x2=(mi+ma)/2 fnew=f(x2) if fnew<globalMin: globalMin=fnew if fnew>globalMax: globalMax=fnew delta=globalMax-globalMin if abs((fmi+fma)/2-fnew)>(delta*epsilon): (a,b)=PlotPointsInner(f,mi,x2,fmi,fnew,globalMin,globalMax,epsilon) (c,d)=PlotPointsInner(f,x2,ma,fnew,fma,globalMin,globalMax,epsilon) return (a+c,b+d) else: return ([mi,x2,ma],[fmi,fnew,fma]) def PlotPoints(f,mi,ma,epsilon=0.01): u"""Из функции и области определения делаем наборы точек для отрисовки""" fmi=f(mi) fma=f(ma) globalMin=min(fmi,fma) globalMax=max(fmi,fma) if fmi==fma: fma+=max(1e-6,(1e-6*fma)) (a,b)=PlotPointsInner(f,mi,ma,fmi,fma,globalMin,globalMax,epsilon) return (np.array(a),np.array(b)) #(x,y)=PlotPoints(np.sin,0.,5.) def fplot(*args,**kvargs): if "range" in kvargs: rg=map(float,kvargs["range"]) del kvargs["range"] if "eps" in kvargs: eps=kvargs["eps"] del kvargs["eps"] else: eps=0.01 atr=[] for i in args: if hasattr(i,"__call__"): atr.extend(PlotPoints(i,rg[0],rg[1],eps)) else: atr.append(i) atr=tuple(atr) plot(*atr,**kvargs)
Отредактировано doza_and (Дек. 29, 2012 21:07:30)
Офлайн