Решить нелинейное уравнение в пределах al oop на python - PullRequest
0 голосов
/ 19 апреля 2020

Мне нужна помощь, чтобы написать свой код более эффективно. Приведенный ниже код предназначен для решения нелинейного уравнения для переменной hi с учетом элементов в некоторых массивах. Например:

import numpy  as np 
import tensorflow as tf
import scipy.optimize 

kon = 0.01
mu  = 1.5
fi  = 0.5 
kappa = 22

n =100
xs = tf.random.normal(shape=(n,), stddev=0.2)
eps = tf.random.normal(shape=(n,), stddev=0.17)
z = tf.sigmoid(tf.random.normal(shape=(n,), stddev=0.22))

# non-linear equation to solve for leisure 
def F(hi):
  return (mu/fi)*np.log(hi) -(1-mu)*kappa*(hi)**(1+(1/fi))-mu*(np.log(w*ei*xs)-np.log(kon))-np.log(ze)
hvec = np.empty((0,))
# leisure today 
for ze,ei,xs in zip(z, eps, x0):
    ei=tf.exp(ei)
    xs=tf.exp(xs)
    htemp = scipy.optimize.newton_krylov(F, 0.5)
    hvec = np.append(hvec, htemp)   

Здесь z, eps, x0 - массивы размером n (например, n=100)

Есть ли более эффективный способ сделать то же самое? например, избегая l oop?

Я в основном хочу найти для hi для каждого элемента в этих трех массивах.

...