我想用boost::odeint
來解決不同變量集合的微分方程 - 比如std::vector
類型 - 並行。一種解決方案當然是將所有變量組合成一個大的矢量,然後將其用作狀態變量。狀態類型提升:融合提升:odeint
但是,我更喜歡更優雅的解決方案,如採用boost::fusion
作爲狀態類型,然後保存不同的向量。據我瞭解,從posting和related problem的實施,原則上,這樣做沒有任何障礙。我只錯過,特別是混凝土implementation-關於
代數,經營權規範和
需要創建例如錯誤步進的調整一些提示。現有的哪些實現 - 例如odeint::fusion_algebra
- 可以直接使用,在這種情況下還需要做什麼?
感謝您快速詳盡地回答問題並提供如此出色的圖書館。正如你猜對的那樣,我真的需要步長控制,因此最簡單的方案不適合我。考慮到使用boost :: fusion工作所需的工作量,我可能會堅持使用value_types的組合向量。另外 - 是否有一種簡單的方法來使用valarray state_type? Valarray沒有提供迭代器,因此可能無法工作? – floyd85 2013-03-11 15:21:38
我從來沒有使用valarrays。知道是否可以使用odeint會很有趣。但我不會推薦使用valarrays。他們很少使用。尋找MTL,ublas,Eigen ......等載體或某些高級載體類型通常是更好的選擇。 – headmyshoulder 2013-03-12 14:09:00