Форум сайта python.su
Я в Питоне зелёный огурец. Не получается собрать результаты интегрирования функции в список или массив для построения графика. Пожалуйста помогите понять что я делаю не так.
'Fadum '
import numpy as np import matplotlib.pyplot as plt from scipy.integrate import dblquad B=5 # foundation width L=4 #foundation length q=1 h=1.0 # calculation depth N=10 # layer number d=2# foundation depth d_R=5 #rigid layer underlying i=np.array(range(N+1)) print('i=',i) delta_t=(d_R-d)/N print('delta_t=',delta_t, 'm') z=np.array((delta_t*i)-delta_t/2) z=z[1:N+1] print('z=',z) def f(y,x): return ((3*q*z**3)/(2*np.pi)) * (1/(x**2+y**2+z**2)**(5/2)) for item in z: ans, err=integrate.dblquad(f, 0, B,lambda x : 0,lambda x : L) print(ans) print ('ans=',ans) L=4 q=1 h=1.0 # calculation depth N=10 # layer d=2 # foundation depth d_R=5 #rigid layer underlying i=np.array(range(N+1)) print('i=',i) delta_t=(d_R-d)/N print('delta_t=',delta_t, 'm') z=np.array((delta_t*i)-delta_t/2) z=z[1:N+1] print('z=',z) def f(y,x): return ((3*q*z**3)/(2*np.pi)) * (1/(x**2+y**2+z**2)**(5/2)) for item in z: ans, err=integrate.dblquad(f, 0, B,lambda x : 0,lambda x : L) print(ans) print ('ans=',ans)
Отредактировано FishHook (Ноя. 4, 2017 08:25:33)
Офлайн
Вы хотите проинтегрировать f(x,y) при различных значениях параметра z. z - у вас массив.
Видимо нужно следующее добавить:
def intf(z): def f(y,x): return # тоже что было у вас return integrate.dblquad(f, 0 ,.... #как у вас далее) result = [] for value in z: result.append(intf(value)[0]) plt.plot(z, result) plt.show()
Офлайн
Спасибо за помощь но у меня этот фрагмент кода (интегрирование и сбор результата в массив) не хочет работать. Наверное в голове каша и руки не оттуда….
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import dblquad
B=5 # foundation width
L=4 #foundation length
q=1
h=1.0 # calculation depth
N=10 # layer number
d=2# foundation depth
d_R=5 #rigid layer underlying
i=np.array(range(N+1))
print('i=',i)
delta_td_R-d)/N
print('delta_t=',delta_t, ‘m’)
zdelta_t*i)-delta_t/2
z=z
print('z=',z)
def intf(z):
def f(y,x):
return ((3*q*z**3)/(2*np.pi)) * (1/(x**2+y**2+z**2)**(5/2)
return integrate.dblquad(f, 0, B,lambda x : 0,lambda x : L)
result =
for value in z:
result.append(intf(value))
plt.plot(z, result)
plt.show()
Пишет:
File “<ipython-input-5-56a575a1e341>”, line 28
return integrate.dblquad(f, 0, B,lambda x : 0,lambda x : L)
^
SyntaxError: invalid syntax
Офлайн