如何反转scipy四元函数以传入弧长并接收(t)的值?

2024-10-03 06:28:11 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我运行类似下面的代码,在椭圆的主弧和次弧中,通过3.05和2.23,弧形成50度角,我怎么能把2.531432761012828的输出作为弧长,然后通过它来解t?谢谢!你知道吗

import math
from scipy.integrate import quad
import numpy as np
t = math.atan(3.05*math.tan(5*math.pi/18)/2.23)
Dx = lambda t: -3.05 * np.sin(t)   
Dy = lambda t: 2.23 * np.cos(t)
quad(lambda t: np.sqrt(Dx(t)**2 + Dy(t)**2), 0, t)

最后一个的输出是:(2.53143276012828,2.810454936566873e-14)


Tags: lambda代码fromimportnpmathscipy椭圆
1条回答
网友
1楼 · 发布于 2024-10-03 06:28:11

为了求积分的上限,给定积分的值,我们可以将fsolve应用于计算可变上限积分的函数。示例(不要重复已有的行):

from scipy.optimize import fsolve
target = 2.531432761012828
fun = lambda s: quad(lambda t: np.sqrt(Dx(t)**2 + Dy(t)**2), 0, s)[0] - target
s0 = fsolve(fun, 0)[0]
print(s0) 

它打印1.02051。你知道吗

我不喜欢积分变量和上限都用同一个字母表示,因此在我的代码中,上限被称为s。你知道吗

相关问题 更多 >