level 3
贴吧用户_0Z37Z23
楼主
各位大佬:请问用 mathematical 的 FortranForm 命令输出成 fortran 格式的时候,有没有什么方法让换行符自动改成 & 而不是默认的 - 号呢?
比如,我定义了如下函数 Fun1,用 FortranForm 输出成 Fortran 格式的时候,由于公式较长,需要换行。但是输出的换行符是在句首的 “-” 而不是 Fortran 90/95 可以识别的在句末的 “&”,有什么方法可以自动改过来么?
Fun1[\[Lambda]1_, \[Lambda]2_, \[Lambda]b1_, \[Lambda]b2_, \[Theta]_] \:= (Abs[\[Lambda]b1 + \[Lambda]1] Cos[\[Theta]/2] + (\[Lambda]b1 - \[Lambda]1) Sin[\[Theta]/2]) (Abs[\[Lambda]b2 + \[Lambda]2] Cos[\[Theta]/2] - (\[Lambda]b2 - \[Lambda]2) Sin[\[Theta]/2])
Fun1[l1, l2, lb1, lb2, th] // FortranForm
(Abs(l1 + lb1)*Cos(th/2.) + (-l1 + lb1)*Sin(th/2.))*
- (Abs(l2 + lb2)*Cos(th/2.) - (-l2 + lb2)*Sin(th/2.))

2020年01月21日 14点01分
1
比如,我定义了如下函数 Fun1,用 FortranForm 输出成 Fortran 格式的时候,由于公式较长,需要换行。但是输出的换行符是在句首的 “-” 而不是 Fortran 90/95 可以识别的在句末的 “&”,有什么方法可以自动改过来么?
Fun1[\[Lambda]1_, \[Lambda]2_, \[Lambda]b1_, \[Lambda]b2_, \[Theta]_] \:= (Abs[\[Lambda]b1 + \[Lambda]1] Cos[\[Theta]/2] + (\[Lambda]b1 - \[Lambda]1) Sin[\[Theta]/2]) (Abs[\[Lambda]b2 + \[Lambda]2] Cos[\[Theta]/2] - (\[Lambda]b2 - \[Lambda]2) Sin[\[Theta]/2])
Fun1[l1, l2, lb1, lb2, th] // FortranForm
(Abs(l1 + lb1)*Cos(th/2.) + (-l1 + lb1)*Sin(th/2.))*
- (Abs(l2 + lb2)*Cos(th/2.) - (-l2 + lb2)*Sin(th/2.))
