2017-11-06 7 views
0

px [0]が時間とともに変化し、配列が必要なので、foreachの出力(pX [0]など)を配列に入れて計算プロセスを完了し、通常の微分方程式を解く必要がありますそれらすべてを保つ。 いくつかのデータを配列に格納する最も良い方法は "forループ"ですが、Microsoft Osloライブラリを使用した場合は、Osloユーザーガイドに従ってこのように記述する必要があります。 出力を助けることができるこれらのオイド方程式を解く別の方法を知っていれば、本当に感謝しています!お返事ありがとうございます。 あなたは完全に明確ではない、二回p.X[0]を印刷C#のforeachループの出力から配列を作成する方法は?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using Microsoft.Research.Oslo; 

namespace odestiff 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //kinetic constant 
      double ka = 200; double ki = 200; double kp = 258.3; double ktrm = 0.0072; 
      double ktrh = 0.12; double ktrb = 0.00004; double kd = 0.00001; 

      //initial value 
      //Ti0 = 1e-5; Al0 = 1e-4; 
      //Mo0 = 2; H20 = 1e-2; C0 = 0; M00 = 0; M10 = 0; M20 = 0; 
      //L00 = 0; L10 = 0; L20 = 0; 

      var sol = Microsoft.Research.Oslo.Ode.GearBDF(
      0, 
      new Vector(0.00001, 0.0001, 2, 0.01, 0, 0, 0, 0, 0, 0, 0), 
      (t, x) => new Vector(
      -ka * x[0] * x[1], 
      -ka * x[0] * x[1], 
      -ktrh * x[2] * x[5], 
      -x[3] * x[5] * (kp + ktrm) - ki * x[3] * x[4], 
      ka * x[0] * x[1] - ki * x[3] * x[4] + (ktrh * x[2] + ktrb) * x[5], 
      ki * x[4] * x[3] - x[5] * (ktrh * x[2] + ktrb + kd), 
      ki * x[4] * x[3] - x[6] * (ktrh * x[2] + ktrb + kd + ktrm * x[3]) + (ktrm + kp) * x[3] * x[5], 
      ki * x[4] * x[3] - x[7] * (ktrh * x[2] + ktrb + kd + ktrm * x[3]) + (ktrm + kp) * x[3] * x[5] + 2 * x[6] * kp * x[3], 
      x[5] * (ktrh * x[2] + ktrb + kd + ktrm * x[3]), 
      x[6] * (ktrh * x[2] + ktrb + kd + ktrm * x[3]), 
      x[7] * (ktrh * x[2] + ktrb + kd + ktrm * x[3])), 
      new Options 
      { 
       AbsoluteTolerance = 1e-6, 
       RelativeTolerance = 1e-6 
      }).TakeWhile(p => p.T <= 7200).ToArray(); 
      foreach (var p in sol) 
       Console.WriteLine("{0}", p.X[0]); 
      foreach (var p in sol) 
       Console.WriteLine("{0}", p.X[0]); 
      Console.ReadLine(); 

答えて

2

: はここに私のコードです。しかし、配列を取得するには、Linqを使用することができます:

double[] values = sol.Select(p => p.X[0]).ToArray(); 
+0

ありがとうございます。私はそれを使用しようとしましたが、動作しませんでした。これらのコードはどこに追加すればよいですか? –

+0

ここで、これらの2つのforeachループ。 –

関連する問題