【发布时间】:2011-07-06 12:15:35
【问题描述】:
在 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
- 保存或 DumpSave foo 到磁盘
- 删除和/或清除 foo
- 从磁盘获取 foo
- foo 工作正常
但是如果我们重启内核就会失败
- 将 FittedModel 计算为 foo
- 保存或 DumpSave foo 到磁盘
- 杀死并重新启动内核
- 从磁盘获取 foo
- foo 有问题
以前有人见过这种行为吗?
这个错误背后有很好的解释吗?
有没有好的解决方法?
【问题讨论】:
-
你能添加一个简短的代码示例吗?
标签: wolfram-mathematica mathematica-8