0

如果我要运行类似于下面的代码,其中我将椭圆的次弧和主弧传递为 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.531432761012828, 2.810454936566873e-14)

4

1 回答 1

2

要找到积分的上限,给定积分的值,可以将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

于 2017-07-07T22:59:41.933 回答