これは新しい機能で、scipy
バージョン(0.17)にはありませんが、scipy/scipy/integrate/_bvp.py
(github)のソースが見つかりました。
関連するプルリクエストは、昨年4月にhttps://github.com/scipy/scipy/pull/6025です。これは、紙とMATLABの実装に基づいています
、
J. Kierzenka, L. F. Shampine, "A BVP Solver Based on Residual
Control and the Maltab PSE", ACM Trans. Math. Softw., Vol. 27,
Number 3, pp. 299-316, 2001.
x
メッシュ取り扱いがあるように思われる:
modify_mesh
はに基づいて
x
にノードを追加
while True:
....
solve_newton
....
insert_1, = np.nonzero((rms_res > tol) & (rms_res < 100 * tol))
insert_2, = np.nonzero(rms_res >= 100 * tol)
nodes_added = insert_1.shape[0] + 2 * insert_2.shape[0]
if m + nodes_added > max_nodes:
status = 1
if verbose == 2:
nodes_added = "({})".format(nodes_added)
print_iteration_progress(iteration, max_rms_res, m,
nodes_added)
...
if nodes_added > 0:
x = modify_mesh(x, insert_1, insert_2)
h = np.diff(x)
y = sol(x)
:
insert_1 : ndarray
Intervals to each insert 1 new node in the middle.
insert_2 : ndarray
Intervals to each insert 2 new nodes, such that divide an interval
into 3 equal parts.
これから私は、
あなたはverbose
パラメータを使用してノードの追加を追跡することができ
ノードを追加しましたが、削除されません。アウトメッシュには入力ポイントがすべて含まれている必要があります。
Iは、ノードがこれはコードを読み取ることに基づいて、テストコードで検証されていない問題の特定のセグメント
の解像度を改善するために添加されていると仮定する。あなたはSO上でこの機能について尋ねる唯一の人であり、実際にそれを使用した少数の人の一人かもしれません。
ドキュメントを見ると、規則的なメッシュについては何も表示されませんが、厳密にはそれが増えています。これらの例はすべて 'linspace'を使っていますが、それはおそらく便宜のためです。 – hpaulj
@hpaulj問題は、計算中にメッシュを変更したいので、すべての変数を新しいメッシュに補間する必要があるということです。それで 'x:最終メッシュのノード 'を返すのです。 – rhombidodecahedron
その場合、そのコードを掘り下げて、どのように動作するのか、新しいメッシュが作られる理由を調べる必要があります。 – hpaulj