Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数为不同的参数返回相同的输出值-python 3.8_Python_Arrays_Function_Module - Fatal编程技术网

函数为不同的参数返回相同的输出值-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
对结果没有影响