函数为不同的参数返回相同的输出值-python 3.8
我试图构建一个代码,为不同的参数绘制高斯分布,但我得到了一些错误。我编写了以下代码:函数为不同的参数返回相同的输出值-python 3.8,python,arrays,function,module,Python,Arrays,Function,Module,我试图构建一个代码,为不同的参数绘制高斯分布,但我得到了一些错误。我编写了以下代码: from numpy import zeros,empty,array,loadtxt,dot import numpy as np from math import log,exp,sin,cos,sqrt,pi,e,sqrt from pylab import plot,show,ylim,ylabel,xlabel n=10 #definindo os vetores posição e os vet
from numpy import zeros,empty,array,loadtxt,dot
import numpy as np
from math import log,exp,sin,cos,sqrt,pi,e,sqrt
from pylab import plot,show,ylim,ylabel,xlabel
n=10
#definindo os vetores posição e os vetores f que irão armazenar o valor da função no ponto.
f= zeros(n+1,float)
f1=zeros(n+1,float)
f2= zeros(n+1,float)
f3= zeros(n+1,float)
x= zeros(n+1,float)
#Definindo a função gaussiana
def gauss(xi,xf,sig,a):
step=(xf-xi)/n
for k in range(n+1):
f[k]=(1.0/(sqrt(2*pi)*sig))*exp((-(xi+step*k-a)**2)/(2*sig**2))
x[k]=xi+step*k
print(f)
return f
# A partir de agora iremos chamar a função gauss três vezes para plotar a função para diferentes valores dos parametros
f1=gauss(-5,5,5,0)
f2=gauss(-5,5,2,0)
plot(x,f1)
plot(x,f2)
show()
但是,当我绘制函数f1和f2时,得到的是完全相同的图形。如果您的
f
和x
列表是全局的,则会出现混叠问题。当您调用plot(x,f2)
时,它的设置方式实际上是调用plot(x,f)
,因为您在guass
中修改f
的方式
您可以通过运行以下命令看到这一点:
print('F1:',F1)
f1=高斯(-5,5,5,0)
打印('F1:',F1)
print('F==F1:',np.array_等于(F,F1))
f2=高斯(-5,5,2,0)
打印('F1:',F1)
print('F==F1:',np.array_等于(F,F1))
打印('F2==F1:',np.数组_等于(F2,F1))
print('F2==F:',np.array_等于(F2,F))
产生
F1:[0.0.0.0.0.0.0.0.0.0.0.0.0]
F1:[0.04839414 0.05793831 0.06664492 0.07365403 0.07820854 0.07978846
0.07820854 0.07365403 0.06664492 0.05793831 0.04839414]
F==F1:真
F1:[0.00876415 0.02699548 0.0647588 0.12098536 0.17603266 0.19947114
0.17603266 0.12098536 0.0647588 0.02699548 0.00876415]
F==F1:真
F2==F1:真
F2==F:真
通过在
guass
函数中移动要初始化的f
和x
,并同时返回这两个函数,您应该可以得到预期的结果类型
来自数学导入exp、pi、sqrt
从numpy导入零
从pylab导入绘图,显示
n=10
def高斯(xi,xf,sig,a):
步骤=(xf-xi)/n
f=零(n+1,浮点)
x=零(n+1,浮点)
对于范围内的k(n+1):
f[k]=(1.0/(sqrt(2*pi)*sig))*exp(((xi+步骤*k-a)**2)/(2*sig**2))
x[k]=席+步*k
返回x,f
x1,f1=高斯(-5,5,5,0)
x2,f2=高斯(-5,5,2,0)
绘图(x1,f1)
show()
绘图(x1,f2)
show()
在def gauss
中:*sig/sig=1
因此sig
对结果没有影响