Форум сайта python.su
def D(f): def df(x, dx=0.001): return (f(x+dx)-f(x))/dx return df def f1(x): return x**2 def show(F,Nmax,Xmax,dx,f): for i in range (Nmax + 1): x = i*Xmax/Nmax print (F(x), F(x,dx), f(x), sep = '->') F1 = D(f1) print("производная (х**2)' = 2x:") show (F1,5,1,0.01,lambda x: 2*x)
Отредактировано zorba (Апрель 9, 2017 02:25:02)
Офлайн
Васильев А.Н. “Python на примерах (Просто о сложном)” 2016г.
страница 169
Офлайн
Используй теги кода, чтобы код точно отобразить.
[code python][/code]
Офлайн
py.user.nextспс
Используй теги кода, чтобы код точно отобразить.
Офлайн
>>> def D(f): ... def df(x, dx=0.001): ... return (f(x + dx) - f(x)) / dx ... return df ... >>> def f1(x): ... return x ** 2 ... >>> def show(F, Nmax, Xmax, dx, f): ... for i in range(Nmax + 1): ... x = i * Xmax / Nmax ... print(i, end=': ') ... print(round(F(x), 2), round(F(x, dx), 2), f(x), sep=' -> ') ... >>> F1 = D(f1) >>> >>> print("производная (х**2)' = 2x:") производная (х**2)' = 2x: >>> >>> show(F1, 5, 1, 0.001, lambda x: 2 * x) 0: 0.0 -> 0.0 -> 0.0 1: 0.4 -> 0.4 -> 0.4 2: 0.8 -> 0.8 -> 0.8 3: 1.2 -> 1.2 -> 1.2 4: 1.6 -> 1.6 -> 1.6 5: 2.0 -> 2.0 -> 2.0 >>>
Офлайн
да округлить я и сам могу…
мне интересно, почему прога дает 0.4009999999999986->0.4099999999999999->0.4
значения, вместо 0,401 -> 0,41 -> 0,4 которые получились у меня без проги.
почти одно и тоже, но я не врублюсь.
Офлайн
> почти одно и тоже, но я не врублюсь.
Потому что арифметические операции над числами с плавающей запятой является не точными.
https://habrahabr.ru/post/112953/
Офлайн