在 Mathematica 7 和 8 中,我们发现 Mathematica 无法正确保存和获取拟合例程的结果。我希望这里有人知道:此错误的最佳实践解决方法是什么?
我们的任务是使用 NonlinearModelFit 拟合大量数据集,它为每个数据集返回一个 FittedModel。这些拟合需要一段时间,我们尝试使用 Save 和 DumpSave 将结果存储到文件中。随后的分析使用 Get 将 FittedModel(s) 拉回。
Mathematica 在没有警告的情况下执行 Save & Get,但返回的 FittedModel 有问题。我们调用 Get 并从磁盘加载 FittedModel,将结果称为“foo”。尝试 foo[10] 使用输入 10 评估拟合模型。我们看到的错误是 foo["BestFitParameters"] 应该返回一个规则列表,而是将字符串插入到函数中,因为它是像 10 这样的数字。尝试 foo [{"BestFitParameters","BestFitParameters"}] 应该在列表中给出规则两次,但在错误的 foo 中保持未评估。
除此之外,还有一个奇怪且具有误导性的行为,具体取决于我们是删除/清除 foo 还是退出内核:
- 将 FittedModel 计算为 foo
- 将 foo 保存或转储到磁盘
- 删除和/或清除 foo
- 从磁盘获取 foo
- foo 工作正常
但是如果我们重新启动内核它会失败
- 将 FittedModel 计算为 foo
- 将 foo 保存或转储到磁盘
- 杀死并重新启动内核
- 从磁盘获取 foo
- foo 是越野车
有没有人见过这种行为?
这个错误背后有很好的解释吗?
有没有好的解决方法?