gpt4 book ai didi

python - 与之前的结果重复映射

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:01 25 4
gpt4 key购买 nike

我正在尝试通过使用 map 函数使用先前的结果重复计算。我有一个代码工作,但看起来很丑。如果您有见解,以便可以优雅地编写代码,请教我。任何帮助都将非常感激。

重申过程如下图所示。我已经放置了我丑陋的代码以及我对 map 功能的试用。感谢您提前提供的帮助。

enter image description here

最丑的

import numpy as np
ys=np.array([10, 9, 8, 7, 6, 5, 4, 3, 2, 1])
xs=ys

from scipy.interpolate import interp1d
g = interp1d(xs, ys, fill_value='extrapolate')

x0=ys[0]
s1=-4

def func(x1):
return -g(x1)/(x0-x1)-s1

from scipy.optimize import fsolve
initial_guess = 5
x1=fsolve(func, initial_guess)[0]
print(x1)

s2=-2

def func(x2):
return -g(x2)/(x1-x2)-s2

from scipy.optimize import fsolve
initial_guess = 5
x2=fsolve(func, initial_guess)[0]
print(x2)

s3=-0.67

def func(x3):
return -g(x3)/(x2-x3)-s3

from scipy.optimize import fsolve
initial_guess = 5
x3=fsolve(func, initial_guess)[0]
print(x3)

我的 map 功能试用

import numpy as np
ys=np.array([10, 9, 8, 7, 6, 5, 4, 3, 2, 1])
xs=ys

from scipy.interpolate import interp1d
g = interp1d(xs, ys, fill_value='extrapolate')

x0=ys[0]
s=[-4,-2,-0.67]

def func(x):
return -g(x)/(x0-x)-s

xall=list(map(func, s))

from scipy.optimize import fsolve
initial_guess = 5*np.ones(s.size)
xi=fsolve(xall, initial_guess)[0]
print(xi)

最佳答案

也许您想使用 lambda 函数作为 fsolve 的输入。像这样的事情:

import numpy as np
from scipy.optimize import fsolve
from scipy.interpolate import interp1d

ys = np.array([10, 9, 8, 7, 6, 5, 4, 3, 2, 1])
xs = ys
g = interp1d(xs, ys, fill_value='extrapolate')

x0 = ys[0]
s = [-4, -2, -0.67]
initial_guess = 5

for si in s:
x0 = fsolve(lambda x1: -g(x1)/(x0 - x1) - si, initial_guess)[0]
print(x0)

关于python - 与之前的结果重复映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48652737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com