我目前正在研究 Matlab 中的基本优化算法,并且遇到了 Matlab 以荒谬的精度保存变量的问题。在几次迭代中,变量是如此之大,以至于它实际上触发了 sym.m 中的某种无限循环。
这是开始这一切的代码行:
SLine = (m * (X - P(1))) + P(2);
其中 P = [2,2] 和 m = 1.2595。当我在命令行中手动键入这行代码时,SLine 被保存为符号表达式 (2519*X)/2000 - 519/1000。我不确定为什么它不使用十进制近似值,但至少这些分数具有正确的值。然而,当这行代码在我的程序中运行时,它会将 SLine 保存为表达式 (2836078626493975*X)/2251799813685248 - 584278812808727/1125899906842624,除此之外,它甚至不精确到小数点后四位。这些庞大的部分正在通过我的程序进行,随着每一行新代码的增加而增长,并导致它停止运行。
有谁知道为什么 Matlab 会这样?有没有办法指定在执行计算时应该使用什么精度?感谢您的任何帮助,您可以提供。