Como plotar a soma sobre a função exp no gnuplot?

1

Existe alguma maneira de plotar a seguinte soma da função exp?

plot f1*exp(-0.001*(x-L1)^2) +  f2*exp(-0.001*(x-L2)^2) + etc

onde os valores f e L são classificados em coulmns 1 & 2 no arquivo data.dat , respectivamente.

    
por Mohsen El-Tahawy 28.07.2016 / 16:00

1 resposta

1

Portanto, a linha i do arquivo contém f_i L_i ? Você pode fazer isso usando uma chamada para uma função:

sumval=0
add(x)=(sumval=sumval+x)
plot "file.dat" using 0:(add($1*exp(-0.001*(x-$2)**2)))

(aqui as abscissas serão em termos de número de linha, pseudo-coluna $0 ) Aqui, x é assumido como fixo antes, emitindo, e. um comando x=... .

Mas eu acho que o que você queria é para qualquer valor de x , traçar o resultado do somatório?

Em seguida, você precisaria fazer um grande número dessas somas, plotando apenas o último ponto para cada x .

N_samples=100 # number of points to plot
Xmin=0
Xmax=1.
x(ix)=Xmin+(Xmax-Xmin+0.)*ix/N_samples
stats "data.dat" 
N=STATS_records
sumval=0
currec=0
finished(v)=(sumval=0,currec=0,v) #reinitialise the counters
add(y)=(currec=currec+1,sumval=sumval+y,(currec==N)?finished(sumval):1/0)
plot [Xmin:Xmax] for [ix=0:N_samples] "file.dat" using (x(ix)):(add($1*exp(-0.001*(x(ix)-$2)**2)))

Você não poderá juntar pontos com uma linha a menos que primeiro redirecione sua trama para uma tabela e, em seguida, plote a tabela.

    
por 01.08.2016 / 00:04

Tags