Mathematicaからカスタムフォーマット式式をエクスポートします
-
18-09-2019 - |
質問
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))*
...
解決
これは驚くほどあまり知られていない仕事です Splice
関数。まず、拡張機能を使用してテンプレートファイルを作成します ".mf"
, 、 そのようです:
file = "test.mf";
out = OpenWrite[file];
WriteString[out, "MH1 = <* form *>"];
Close[out];
今あなたが使用するとき Splice
, 、Mathematicaは自動的にすべてを置き換えます <*
と *>
評価されたフォームを備えた区切り文字。だからあなたが設定した場合
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
その他のオプションについては(出力ファイルの名前など)。
所属していません StackOverflow