неподдерживаемые типы операндов для ** или pow(): «ABCMeta» и «divide»

#python #modeling

Вопрос:

Я новичок, пытающийся задать топографию для сетки с помощью функции Гаусса, но получил ошибку в названии строки ydel =.

 # pick depth above which to deform mesh ydeform = -0.5  yCoordFn = uw.function.input()[1] xCoordFn = uw.function.input()[0]  #Gaussian bell curve (topography) ydel = 0.2 * uw.function.math.exp ** (-((xCoordFn - 2.)** 2.) / (2. * 0.2230386** 2.))  if deformedmesh:  with mesh.deform_mesh():  for i in range(len(mesh.data[:])):  y = mesh.data[i,1]  if y gt;= ydeform:  delY = ydel.evaluate((mesh.data[i,0],mesh.data[i,1])) #0.1 * (mesh.data[i,0]   1.)/2.  dY = (y - ydeform)/(-ydeform) * delY   mesh.data[i,1]  = dY  

Я попытался разделить уравнение на шаги, подобные этому,

 def StepA():  return 2. *( 0.2230386** 2.) def StepB():   return (xCoordFn - 2.)** 2. def StepC():  return StepB / StepA def StepD():  return uw.function.math.exp ** -(StepC)  ydel = 0.2 * StepD  

и это,

 StepA = 2. * ( 0.2230386** 2.) StepA = float(StepA)  StepB = (xCoordFn - 2.) ** 2. StepB = float(StepB)  StepC = StepB/StepA StepC = float(StepC)  StepD = uw.function.math.exp ** -(StepC) StepD = float(StepD)  ydel = 0.2 * StepD  

но все они дают одинаковую ошибку для ** pow (), но с функцией или плавающей точкой, или аргумент с плавающей точкой должен быть строкой или числом.

Я должен использовать uw.функция из-за библиотеки геодинамического моделирования (underworld2) Я использую.

Это уравнение, которое я пытаюсь использовать

Комментарии:

1. exp() это функция . Из чего вы пытаетесь извлечь выгоду ?

2. Я предполагаю , что , когда вы говорите uw.function.math.exp ** x , вы действительно имели в виду uw.function.math.exp( x ) печатать, в каждом конкретном случае. Это выражение exp(n) дает вам e**n .

3. Я в основном пытаюсь использовать уравнение функции Гуассиана @jasonharper