找回密码
 注册
Simdroid-非首页
查看: 117|回复: 4

[符号计算] Export输出fortranform表达式时如何自动换行

[复制链接]
发表于 2013-4-3 16:11:40 | 显示全部楼层 |阅读模式 来自 德国
fortran每一行字符数不超过132,如果多行表示同一表达式,每行后面接&符号。我这里有个表达式需要变为fortran的表达式,如何才能按Fortran的要求把这个表达式输入到一个文件里呢?求指教。
我自己写的没成功的代码如下:
  1. 1/((x1 - x2) (x1 - x3) (x1 - x4) (x1 - z5) (x1 - z6) (x1 - z7) (x1 -
  2.      z8) (x1 - z9)) +
  3.   1/((x2 - x1) (x2 - x3) (x2 - x4) (x2 - z5) (x2 - z6) (x2 - z7) (x2 -
  4.       z8) (x2 - z9)) +
  5.   1/((x3 - x1) (x3 - x2) (x3 - x4) (x3 - z5) (x3 - z6) (x3 - z7) (x3 -
  6.       z8) (x3 - z9)) +
  7.   1/((x4 - x1) (x4 - x2) (x4 - x3) (x4 - z5) (x4 - z6) (x4 - z7) (x4 -
  8.       z8) (x4 - z9)) // Together
  9. Export["test1.txt", FortranForm[%1]]
复制代码




发表于 2013-4-3 17:52:07 | 显示全部楼层 来自 北京
Simdroid开发平台
FortranForm[Expand[(x + 1)^20]] >> "E:/test1.txt"
回复 不支持

使用道具 举报

 楼主| 发表于 2013-4-3 18:48:20 | 显示全部楼层 来自 德国
chyanog 发表于 2013-4-3 17:52
FortranForm[Expand[(x + 1)^20]] >> "E:/test1.txt"

谢谢,这样写输出的结果是多行的了,比原来的结果好多了。
还得想办法在每行后面加上符号 “&”
回复 不支持

使用道具 举报

 楼主| 发表于 2013-4-3 20:38:04 | 显示全部楼层 来自 德国
chyanog 发表于 2013-4-3 17:52
FortranForm[Expand[(x + 1)^20]] >> "E:/test1.txt"

我在linux下用sed命令实现了。谢谢你了
回复 不支持

使用道具 举报

 楼主| 发表于 2013-4-3 21:58:34 | 显示全部楼层 来自 英国
exp = Expand[(x + y)^20];
str = ToString[FortranForm[exp], InputForm];
char = ReadList[StringToStream[str], Character];
positions = Table[{32*i}, {i, 1, Floor[Length[char]/32]}];
newChar = Insert[char, "&\n", positions];
fname = OpenWrite["test.txt"];
WriteString[fname, newChar /. List -> Sequence]
Close[fname]
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-27 12:01 , Processed in 0.030125 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表