График гамма-функции в Python - PullRequest
1 голос
/ 16 апреля 2011

Итак, я хотел бы построить простую гамма-функцию, но у меня есть некоторые проблемы. Мой код:

#!/usr/bin/env python
# -*- coding: cp1250 -*-
#import math
from scipy.special import *
#from scitools.std import *
from pylab import *

def f1(x):
    return gamma(x)


x = linspace(-6, 6, 512)
y1 = f1(x)

# Matlab-style syntax:
plot(x, y1)

xlabel('x')
ylabel('y')
legend(r'$\Gamma(x)$')
grid(True)

show()

Я попытался импортировать гамма-функцию из математики и из scipy.special, но я получаю следующую ошибку:

Трассировка (последний вызов был последним): файл «D: /faxstuff/3.godina/kvantna/plotgamma.py», строка 13, в файле y1 = f1 (x) «D: /faxstuff/3.godina/» kvantna / plotgamma.py ", строка 9, в f1 возвращает гамму (x) Файл" mtrand.pyx ", строка 1599, в mtrand.RandomState.gamma (numpy \ random \ mtrand \ mtrand.c: 8389) ValueError: shape < = 0

Как это сделать? Это должно быть легко, но я, кажется, не могу: (

Ответы [ 2 ]

3 голосов
/ 16 апреля 2011

Один из модулей (я думаю, pylab) следит за гамма-функцией функцией гамма-переменной. Это работает, но мне пришлось отключить вызов легенды (пока не знаю почему).

from scipy.special import gamma as Gamma
#from scitools.std import *
from pylab import *

def f1(x):
    return Gamma(x)


x = linspace(-6, 6, 512)
y1 = f1(x)
gca().set_autoscale_on(False)

# Matlab-style syntax:
plot(x, y1)

xlabel('x')
ylabel('y')
# legend(r'$\Gamma(x)$')
axis([-6, 6, -100, 100])
grid(True)

show()
2 голосов
/ 17 апреля 2011

Попробуйте в блокноте Sage:

# Simple example demonstrating how to interact with matplotlib directly.
# Comment plt.clf() to get the plots overlay in each update.

from scipy import stats
import numpy as np
import matplotlib.pyplot as plt

@interact
def plot_gamma(a=(1,(1,10)), loc=(0,(0,10)), scale=(1,(1,10))):
    rv = stats.gamma(a, loc, scale)
    x = np.linspace(-1,20,1000)
    plt.plot(x,rv.pdf(x))
    plt.grid(True)
    plt.savefig('plt.png')
    plt.clf()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...