Численное интегрирование массива с нулями с шагом по времени - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть два массива. Первый - это время с точки зрения возраста (лет), а второй - параметр, который необходимо интегрировать по времени.

age = [5.00000e+08, 5.60322e+08, 6.27922e+08, 7.03678e+08, 7.88572e+08,
       8.83709e+08, 9.90324e+08, 1.10980e+09, 1.24369e+09, 1.39374e+09,
       1.56188e+09, 1.75032e+09, 1.96148e+09, 2.19813e+09, 2.46332e+09,
       2.76050e+09, 3.09354e+09, 3.46676e+09, 3.88501e+09, 4.35371e+09,
       4.87897e+09, 5.46759e+09, 6.12722e+09, 6.86644e+09, 7.69484e+09,
       8.62318e+09, 9.66352e+09, 1.08294e+10, 1.21359e+10, 1.36000e+10]
sfr = [1.86120543e-02, 1.46680445e-02, 1.07275184e-02, 8.56960274e-03,
       6.44041855e-03, 4.93194263e-03, 3.69203448e-05, 2.69813985e-04,
       6.17644783e-04, 1.00780427e-02, 1.20645391e-02, 3.05009362e-02,
       3.91535011e-02, 5.35479858e-02, 7.36489068e-02, 9.63931263e-02,
       1.11108326e-01, 1.47781221e-01, 1.63057763e-01, 2.27429626e-01,
       2.20941333e-01, 2.74413180e-01, 2.72010867e-01, 4.32215233e-01,
       5.79654549e-01, 7.39362218e-01, 9.41168727e-01, 1.18868347e+00,
       1.42839043e+00, 1.91326333e+00]

Я хочу выполнить интеграцию массива sfr с учетом возрастамассив, но по шагам. Например, первая интеграция должна содержать только первые элементы обоих массивов, вторая интеграция должна содержать первые 2 элемента обоих массивов, третья должна содержать первые 3 элемента обоих массивов и т. Д. И т. Д. И сохраните результат интеграции для каждого шага в одном выходном массиве.

1 Ответ

0 голосов
/ 04 ноября 2019

Точная форма желаемого результата не очень понятна. Итак, вот 2 возможности:

age = [5.00000e+08, 5.60322e+08, 6.27922e+08, 7.03678e+08, 7.88572e+08,
       8.83709e+08, 9.90324e+08, 1.10980e+09, 1.24369e+09, 1.39374e+09,
       1.56188e+09, 1.75032e+09, 1.96148e+09, 2.19813e+09, 2.46332e+09,
       2.76050e+09, 3.09354e+09, 3.46676e+09, 3.88501e+09, 4.35371e+09,
       4.87897e+09, 5.46759e+09, 6.12722e+09, 6.86644e+09, 7.69484e+09,
       8.62318e+09, 9.66352e+09, 1.08294e+10, 1.21359e+10, 1.36000e+10]
sfr = [1.86120543e-02, 1.46680445e-02, 1.07275184e-02, 8.56960274e-03,
       6.44041855e-03, 4.93194263e-03, 3.69203448e-05, 2.69813985e-04,
       6.17644783e-04, 1.00780427e-02, 1.20645391e-02, 3.05009362e-02,
       3.91535011e-02, 5.35479858e-02, 7.36489068e-02, 9.63931263e-02,
       1.11108326e-01, 1.47781221e-01, 1.63057763e-01, 2.27429626e-01,
       2.20941333e-01, 2.74413180e-01, 2.72010867e-01, 4.32215233e-01,
       5.79654549e-01, 7.39362218e-01, 9.41168727e-01, 1.18868347e+00,
       1.42839043e+00, 1.91326333e+00]

integr_pairs = [[(a, s) for a, s in zip(age[:i], sfr[:i])] for i in range(1, len(age))]
print(integr_pairs)
    # [[(500000000.0, 0.0186120543)], [(500000000.0, 0.0186120543), (560322000.0, 0.0146680445)], ....

integr_list = [[item for t in [(a, s) for a, s in zip(age[:i], sfr[:i])] for item in t ]for i in range(1, len(age))]
print(integr_list)
    # [[500000000.0, 0.0186120543], [500000000.0, 0.0186120543, 560322000.0, 0.0146680445], 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...