то, что я прошу, возможно, не будет возможно, но я надеюсь, что вы, ребята, можете мне помочь.Поверхностный участок с множеством полиномов подходит
Итак, у меня есть два 2D-массива, f1 (x1) = y1 и f2 (x2) = y2. Я хочу сделать поверхностный график отношения этих, поэтому размер z равен (f2 (x2)/f1 (x1)). К сожалению, я прихожу к стене из любого направления, к которому я подхожу.
Основная проблема заключается в том, что диапазоны каждого массива разные, x1 - от 300 до 50000, а x2 - от 300, 1200. Теперь я доволен предположением, что f2 (x2) = f2 (1200) для все x2> 1200. Но эта привязка означает, что для меня невозможно сопоставить эти данные каким-либо реалистичным образом (мой первый набор данных хорошо воспроизводится полиномом 5-го порядка, а мой второй набор данных лучше всего подходит 1-му многочлен порядка). Есть ли альтернативный способ, которым я могу поместить функцию в (x2, y2), чтобы она принимала граничные значения для всех точек вне границ?
Моя крайне неправильно попытка выглядит так,
# x1 is an array from 300 to 50,000 in steps of 50
# x2 is an array from 300 to 1,150 in steps of 50
f1_fit = np.poly1d(np.polyfit(x1, y1, 5))
f2_fit = np.poly1d(np.polyfit(x2, y2, 1))
X, Y = np.meshgrid(x1, x2)
Z = (f2_fit(x2)/f1_fit(x1))
Забавный, как, казалось бы, безобидные проблемы могут быть право боль в а * как таковой. : D
Edit: Вот количество игрушечных данных,
x1 = x2 = [ 300. 350. 400. 449. 499. 548. 598. 648. 698. 748.
798. 848. 897. 947. 997. 1047. 1097. 1147. 1196. 1246.
1296. 1346. 1396. 1446. 1496. 1546. 1595. 1645. 1695. 1745.]
y1 = [ 351. 413. 476. 561. 620. 678. 734. 789. 841. 891.
938. 982. 1023. 1062. 1099. 1133. 1165. 1195. 1223. 1250.
1274. 1298. 1320. 1340. 1360. 1378. 1395. 1411. 1426. 1441.]
y2 = [ 80. 75. 70. 65. 62. 58. 58. 52. 48. 46. 44. 41. 38. 35. 32.
32. 29. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30.]
Я вижу два пути решения этой проблемы. Вы можете выполнить ручную интерполяцию, чтобы получить значения для «промежуточных» точек данных, или вы можете использовать функцию «interp2d» scipy для интерполяции http://docs.scipy.org/doc/scipy/reference/generated/scipy. interpolate.interp2d.html –
Если вы дадите мне несколько входных данных для игры, тогда я покажу вам, как это сделать. –
Я добавил данные. – obtmind