2 precision numerical wolfram-mathematica
这是我的一个程序.看一看.
For[m = 1, m <= mode1, m++,
For[n = 0, n <= mode2, n++,
A[m, n][t_] = a[m, n]*Cos[\[Omega]*t];
B[m, n][t_] = b[m, n]*Cos[\[Omega]*t];
]
]
temp = 0;
For[m = 1, m <= mode1, m++,
For[n = 0, n <= mode2, n++,
temp++;
equation[temp] =
ExpandAll[Integrate[eqC[m, n]*Cos[\[Omega]*t], {t, 0, (2*Pi)/\[Omega]}]];
equation[temp] = ExpandAll[Simplify[equation[temp]/10^9]];
Print["\n\nEquation ", temp, "-\n", equation[temp]];
temp++;
equation[temp] =
ExpandAll[Integrate[eqS[m, n]*Cos[\[Omega]*t], {t, 0, (2*Pi)/\[Omega]}]];
equation[temp] = ExpandAll[Simplify[equation[temp]/10^9]];
Print["\n\nEquation ", temp, "-\n", equation[temp]];
]
]
Run Code Online (Sandbox Code Playgroud)
在运行这段代码后,我应该得到几个方程,然后通过一系列的微分来创建一个矩阵.我知道矩阵必须是对称的.问题是,当我输入简单数据,即e = 1,h = 1等时,我得到准确的结果并且矩阵是对称的,但是一旦我给出具有71.02e9,0.000247之类的值的实际数据,计算就会到来出错了,我得到了一个不对称的矩阵.我已经彻底检查了代码,但我找不到任何错误.我还通过手动计算检查了程序的结果.
您可以尝试通过全局设置来提高计算的精度,例如,$MinPrecision=50使用foo = SetPrecision[0.000247,50]或使用速记将数据值指定为高精度0.000247`50.
| 归档时间: |
|
| 查看次数: |
544 次 |
| 最近记录: |