需要像Maple这样的Mathematica短代码

时间:2011-12-02 09:53:21

标签: matrix wolfram-mathematica maple

我对Mathematica的导出结果有一个问题。必须以特殊形式导出两个矩阵A和B. 这两个代码列出了从Maple导出的数据。 使用wordpad打开的导出文件看起来像列(附加文件)非常重要。

拜托,如果您已经检查过它正在工作,请给我回答,谢谢!与文件相比,您可以查看答案。

代码在这里

矩阵A和B,其中包含Maple和导出文件中的代码

http://www.2shared.com/file/49wW8Z0-/EXAMPLE_EXPORT_MAPLE_FINAL.html

我也会在这里向所有人展示简单

代码1)

A := Matrix(2, 2, {(1, 1) = (455200000000/6133413)*w(1), (1, 2) = -(1792000000000/116534847)*w(1), (2, 1) = (455200000000/6133413)*w(2), (2, 2) = -(1792000000000/116534847)*w(2)})


precision := double: writeto(`Aexport.for`):
for i from 1 to 2 do:for j from 1 to 2 do:
if  A[i,j]<>0  then codegen[fortran]([A00[i,j]=A[i,j]],optimized):
fi:od:od:writeto(terminal):

代码2)

B := Matrix(2, 2, {(1, 1) = 6436781.609, (1, 2) = 0, (2, 1) = 0, (2, 2) = 3862068.966})

  writeto(Bexport);
    for i to 2 do 
    for j to 2 do 
     printf("%016.15E\n", B[i, j]) 
      end do:
        end do:
         writeto(terminal)

2 个答案:

答案 0 :(得分:1)

这只是(B)部分的翻译:

matrix = {{6436781.609, 0}, {0, 3862068.966}}

Export["Bexport", Map[FortranForm, N@Flatten[matrix]], "Table"]

请测试一下,让我知道它是否适合您。

与Maple版本相比的差异:E被写为小写,输出的数字位数不固定(但正如您所见,所有有效数字是保留)。这些差异会导致您的申请出现问题吗?

答案 1 :(得分:1)

我相信这可以满足您对矩阵B的要求:

b = {{6436781.609, 0}, {0, 3862068.966}}

bformatted = 
  NumberForm[
    Flatten@b,
    {16, 15}, 
    NumberFormat -> (Row[{#, "E+", StringTake["00" <> #3, -2]}] &)
  ];

bstring = 
  StringReplace[
    ToString@bformatted,
    {"{"|"}"|" " -> "", "," -> "\n"}
  ];

WriteString["Bexport.dat", bstring, "\n"]

Close["Bexport.dat"]