Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 26, 2012 13:39:53

Nastya12345
Зарегистрирован: 2012-12-26
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

график параболы

Помогите, пожалуйста…… как построить график функции y=x^2…. так, чтоб программа сама высчитывала координаты точек…..очень-очень нужно завтра

Офлайн

#2 Дек. 26, 2012 13:59:24

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

график параболы

# -*- 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()



Офлайн

#3 Дек. 29, 2012 21:05:31

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

график параболы

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)

Этот fpot как раз вычисляет точки сам и отрисовывает сам. Но надо еще допиливать. Ограничить глубину рекурсии например…



Отредактировано doza_and (Дек. 29, 2012 21:07:30)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version