LINUX.ORG.RU

python: странная ошибка вычислений или я идиот

 


0

3
#!/usr/bin/env python3
import numpy as np
import matplotlib.pyplot as plt

def main(args):
	
	th, a = 12.13, [1.8034,-1.4809,-3.8281,17.892,-30.666,16.38]
	
	evs = np.logspace(-3,3,100)
	
	ys1 = np.empty_like(evs)
	for n, ev in enumerate(evs+th):
		ys1[n] = \
		1/th/ev * (a[0]*np.log(ev/th) + np.sum([a*(1-th/ev)**j for j,a in enumerate(a[1:], 1)]))
	
	fn = lambda ev:\
		1/th/ev * (a[0]*np.log(ev/th) + np.sum([a*(1-th/ev)**j for j,a in enumerate(a[1:], 1)]))
	ys2 = fn(evs+th)
	
	fig,ax = plt.subplots()

	ax.plot(evs+th, ys1,"-k")
	ax.plot(evs+th, ys2,"-r")
	plt.show()
	
	return 0

if __name__ == '__main__':
	import sys
	sys.exit(main(sys.argv))

Две АБСОЛЮТНО ИДЕНТИЧНЫЕ формулы, одну считаем циклом, другую лямбдой. В результате в лямбде получается лажа. Это как вообще и ЧЯДНТ?

AntonI, help!

★★★★★

Последнее исправление: thunar (всего исправлений: 1)