ノートPCの性能が悪く、配列の値をFor文でワークシートに代入していると時間がかかってしょうがないので、もっと早くセルに出力する方法がないか調べていたら、以下のサイトで詳しく紹介されていた。
早速試してみる。
元々の題材:
「x’=Ax+B、x(0)=-1を、t=0~3まで0.1secで解く。(A=2、B=3のケースで確認)
この時、解析解、陽解法、陰解法、4次のRunge-Kuttaで解き、それぞれの解を並べて出力していく」
以下のような出力になります。
この各セルへの代入を、もともとFor文で回していたのですが、PCの性能が悪いせいもあるものの、一つずつセルに値が更新されていくのが目で確認できる速度で異常に遅いため、リンクの方法を試してみた。
各解を、一旦2次元配列のansに入力し、その解をワークシート上に一括で代入。→結果、6.344秒かかっていた計算時間(というか代入時間)が0.047秒まで短縮された。
ちなみに、コードの実行時間計測は、こちらのリンクを参照させていただきました。
コメント