寻找从 f(x) 到原点的最短距离的程序

问题描述

在 Python (3.8) 中,我尝试制作一个以函数 f(x) 作为输入的脚本,例如;

f(x) = 1/x

如果我们将定义y = f(x)定义为欧氏空间上的一条线,我们可以计算出每个点d()到原点(0,0)的距离(x,f(x))线为;

d(x,y) = sqrt(x^2+(f(x))^2)

我的目标是找到使上述距离最小化的 x。这可以通过解决

2x+2f(x)*f'(x) = 0

我将不胜感激。谢谢。

解决方法

sympy 中的示例(不是 sympy 的专家);

from sympy import *
from sympy.solvers import solve

x,y,z = symbols('x y z')

g = 1/x

h = 2*x + (2*g) * (diff(g,x))

solve(h,x)

这将返回 [-1,1,-I,I] 所以 -11 应该是真正的答案;

distance = x**2 + g**2

distance.subs(x,1)
distance.subs(x,-1)

我没有 sqrt() 的距离,但我希望你知道如何在 sympy 中解决这个问题。这是 1 种方式,有包来近似导数,并找到根,这也应该有效。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...