gpt4 book ai didi

python - 将一个函数计算出的值传递给另一个函数

转载 作者:太空宇宙 更新时间:2023-11-04 10:59:29 26 4
gpt4 key购买 nike

我一直在为我的项目做python编程,我才刚刚开始。这可能是另一个微不足道的问题。我有这段代码,其中我需要使用在函数 poly_root() 中计算的值,即 x。该值应在 bezier() 函数中用作 u。在 poly_root() 函数之后,它应该使用其计算值转到 bezier() 函数。我不知道我是否以正确的方式进行操作。没有错误,但它不会从 bezier() 函数打印 t 。非常感谢。

import copy

import math

poly = [[-0.8,3], [0.75,2], [-0.75,1], [0.1,0]]

def poly_diff(poly):
""" Differentiate a polynomial. """
newlist = copy.deepcopy(poly)

for term in newlist:
term[0] *= term[1]
term[1] -= 1

return newlist

def poly_apply(poly, x):
""" Apply values to the polynomial. """

sum = 0.0 # force float

for term in poly:
sum += term[0] * (x ** term[1])

return sum

def poly_root(poly, start, n, r_i):
""" Returns a root of the polynomial, with a starting value."""

poly_d = poly_diff(poly)
x = start # starting guess value
counter = 0

while True:
if (n >= 0) and (n < 1):
break

x_n = x - (float(poly_apply(poly, x)) / poly_apply(poly_d, x))

if x_n == x:
break

x = x_n # this is the u value corresponding to the given time which will be used in bezier equation

n -= 1
counter += 1

if r_i:
#print [x, counter])
return [x, counter]
else:
#print x
return x
bezier(x)

def bezier(value) :
""" Calculates control points using rational bezier curve equation"""

u = value
w = 5

t = math.pow(1-u,3) * points[0][0] + 3 * u * math.pow(1-u,2) * points[1][0] \
+ 3 * (1-u) * math.pow(u,2) * points[2][0] + math.pow(u,3) * points[3][0]

t = t * w

d = math.pow(1-u,3) * w + 3 * u * w * math.pow(1-u,2) + 3 * (1-u) * w \
* math.pow(u,2) + math.pow(u,3) * w


t = t / d
print t

if __name__ == "__main__" :
poly_root(poly, 0.42, 1, 0)

最佳答案

这部分代码:

if r_i:
#print [x, counter])
return [x, counter]
else:
#print x
return x
bezier(x)

bezier(x) 无法访问。你需要重写它。

关于python - 将一个函数计算出的值传递给另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6831672/

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