0

Python でスプラインを使用して 2 つの曲線間のギャップを埋めようとしています。新しい線を、両端の元の曲線の勾配と一致させたいと思います。この問題は、scipy.interpolate スプライン ルーチンで x 値を単調に増加させる必要があるために発生します。以下のコードは、私が扱っているものの例です。青色の 2 つの曲線 (「ライン 1」と「ライン 2」) は私が取得したもので、(何かのような) スプラインから欲しいものは「Wanted」というラベルの付いたラインで示されます。

これについてどうすればよいか、誰か提案はありますか?

import numpy as np
import matplotlib.pyplot as plt
import scipy.interpolate as interp

line1_x = np.array([4.0e8, 4.7e8, 5.5e8, 6.6e8, 8.0e8, 1.0e9, 1.4e9, 2.0e9, 3.6e9, 
                    9.5e9])
line1_y = np.array([5500., 5000., 4500., 4000., 3500., 3000., 2500., 2000., 1500.,
                    1000.])
                
line2_x = np.array([1.010e10, 1.060e10, 1.081e10, 1.084e10, 1.076e10, 1.064e10, 
                    1.055e10, 1.050e10, 1.051e10, 1.057e10, 1.067e10, 1.079e10, 
                    1.091e10, 1.102e10, 1.112e10])
line2_y = np.array([350., 361., 372., 385., 395., 407., 418., 430., 442., 454., 
                    466., 478., 490., 503., 515.])

desired_x = np.array([1.112e10, 1.117e10, 1.121e10, 1.116e10, 1.087e10, 1.027e10, 
                      9.869e9, 9.5e9])
desired_y = np.array([515., 536., 575., 645., 748., 891., 962., 1000.])

plt.plot(line1_x, line1_y, 'b-', label='Line 1')
plt.plot(line2_x, line2_y, 'b-', label='Line 2')
plt.plot(desired_x, desired_y, 'r--', label='Wanted')
plt.legend(loc=0)

スプライン図の例

4

1 に答える 1