7

Mathematica で適切な Fortan77 フォーマット、つまり 72 列で 6 列目に継続マーカーを持つテキスト ファイルをエクスポート/保存/書き込みするにはどうすればよいですか?

Mathematica を使用して大規模で複雑な分析式を生成しています。これを既存の Fortran77 コードに挿入する必要があります。Mathematica のフロントエンドですべてが正しく機能していFortranForm[]ます

SetOptions[$Output, PageWidth -> 72]

しかし、Mathematica でテキスト ファイルに正しく出力する方法がわかりません。私はこのようなものが欲しい:

MM11 = mH1**2 + (g2**2*v1**2)/2. - 
     -  (g2**2*(v1**2/2. - 
     -       ((v2*Cos(phi2) - (0,1)*v2*Sin(phi2))*
     -          (v2*Cos(phi2) + (0,1)*v2*Sin(phi2)))/2.))/2.
...

ただし、次のいずれかを取得します。

MM11 = FortranForm[mH1^2 + (g2^2*v1^2)/2 - ...

またはこれ:

MM11 = mH1**2 + (g2**2*v1**2)/2. - (g2**2*
 (v1**2/2. - ((v2*Cos(phi2) - (0,1)*v2*Sin(phi2))*
...
4

1 に答える 1

8

意外と知られていないSplice機能のお仕事です。".mf"まず、次のように、拡張子 を付けたテンプレート ファイルを作成します。

file = "test.mf";

out = OpenWrite[file];

WriteString[out, "MH1 = <* form *>"];

Close[out];

を使用すると、Mathematica はと区切り文字Spliceの間のすべてを評価された形式に自動的に置き換えます。したがって、設定した場合<**>

form = 4 + b9^2 + c1^5 + c4^5 + h10^4 + j2 + k10^4 + p10^4 + q5^5 + 
       q8 + s3^3 + s7^2 + t6^3 + u3^2 + u9^3 + x8^4 + z2^3;

そして電話する

Splice["test.mf", PageWidth -> 72];

FortranFormこれにより、ファイル拡張子から出力が必要であると自動的に推測さPageWidthれ、オプションとして設定できるため、自動生成されたファイルでかなり適切な結果が得られます"test.f"(新しい拡張子に注意してください)。

MH1 =         4 + b9**2 + c1**5 + c4**5 + h10**4 + j2 + k10**4 + p10**4 + 
    -  q5**5 + q8 + s3**3 + s7**2 + t6**3 + u3**2 + u9**3 + x8**4 + 
    -  z2**3

Spliceその他のオプション (出力ファイルの名前の変更など) については、ドキュメントを参照してください。

于 2009-11-06T15:51:23.820 に答える