linkz 发表于 2020-6-16 05:24:22

python极值类问题

代码如下:
import numpy as np
x = np.arange(0,10,0.001)
y = abs(x-0)+abs(x-1)+abs(x-2)+abs(x-2.5)+abs(x-10)
z = min(y)
print(z)

这个代码在给定的x范围内求出了y的极小值,请问大佬们这个时候该如何输出相对应的x呢?谢谢!!

Twilight6 发表于 2020-6-16 07:16:06

本帖最后由 Twilight6 于 2020-6-16 07:17 编辑




你可以通过 y 函数写出 关于 x 的函数,然后将 z = min(y) 等于 y 的值 代入 x 函数中计算 x

或者这样:
import numpy as np
x = np.arange(0,10,0.001)
y = abs(x-0)+abs(x-1)+abs(x-2)+abs(x-2.5)+abs(x-10)

z = min(y)
print('函数 y 的最小值为:',z)

print('计算后的 y 中有%d个最小值'%list(y).count(min(y)) )

print('查找这个 y 所在的位置:',list(y).index(z))   # 因为只有一个 那么就直接查找就好

print('当 y 最小时 x 取值为:',0.001*list(y).index(z))   # 因为你步长都是 0.001那么查找出位置乘以 0.001 即可算出 x 的值


没怎么用 Python 算过函数,所以想不到其他便捷的方法





小甲鱼的铁粉 发表于 2020-6-16 08:46:41

Twilight6 发表于 2020-6-16 07:16
你可以通过 y 函数写出 关于 x 的函数,然后将 z = min(y) 等于 y 的值 代入 x 函数中计算 x

或者 ...

abs是啥{:10_297:}

Twilight6 发表于 2020-6-16 08:48:37

小甲鱼的铁粉 发表于 2020-6-16 08:46
abs是啥

Python 内置函数 算绝对值滴

小甲鱼的铁粉 发表于 2020-6-16 08:53:24

Twilight6 发表于 2020-6-16 08:48
Python 内置函数 算绝对值滴

嗯{:10_256:}

linkz 发表于 2020-6-16 19:19:55

Twilight6 发表于 2020-6-16 07:16
你可以通过 y 函数写出 关于 x 的函数,然后将 z = min(y) 等于 y 的值 代入 x 函数中计算 x

或者 ...

谢谢兄弟,已经完美解决
页: [1]
查看完整版本: python极值类问题