Какой самый короткий код Python, чтобы получить максимум от двух дискретных функций? - PullRequest
1 голос
/ 07 марта 2019

Для заданных двух дискретных функций, таких как:

y1 = lambda(x): x**2
y2 = lambda(x): (x-1.5)*10
x1 = np.linspace(0,12,50)
x2 = np.linspace(1,10,12)
plot(x1, y1(x1), '.-')
plot(x2, y2(x2), '.-')

enter image description here

Какой самый короткий код Python, чтобы получить максимум из них?

Ответы [ 3 ]

3 голосов
/ 07 марта 2019

Что-то вроде:

x = np.sort(np.r_[x1, x2])
y = np.maximum(np.interp(x, x1, y1(x1)), np.interp(x, x2, y2(x2)))
1 голос
/ 07 марта 2019

Ну, вам просто нужно использовать встроенную функцию max для значений y.

f1max = max([y1(x) for x in x1])
f2max = max([y2(x) for x in x2])
0 голосов
/ 07 марта 2019

Я бы сделал это как:

#!/usr/bin/env ipython
# -------------------
import numpy as np
import matplotlib as mpl
mpl.use('TKAgg');
from pylab import plot,show

# ---------------------
y1 = lambda(x): x**2
y2 = lambda(x): (x-1.5)*10
x1 = np.linspace(0,12,50)
x2 = np.linspace(1,10,12)
# --------------------
ymax=np.max((y1(x1),y2(x1)),axis=0)
plot(x1, y1(x1), '.-')
plot(x2, y2(x2), '.-')
plot(x1, ymax, 'k',lw=2.0)
show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...