如何解决使用GiNaC在expr评估中跟踪丢失的数据
我有一段代码可以接收来自用户的列表数据和GiNaC表达式,并对结果进行评估。表中可能缺少数据。我希望能够检测到何时缺少此丢失的数据,从而无法对特定表达式进行评估:如果在特定表达式中未使用缺少数据的列,则情况并非总是如此。
示例数据:
#x y z
0. 0. 0.
1. 0. 1.
3. 4. nan
nan 1. 1.
表达式示例:R=\sqrt{x**2+y**2}
Z=z
所需输出示例:
#R Z
0. 0.
1. 0.
5. nan
nan 1.
到目前为止,我已经在GiNaC处理期间用numeric_limits<double>::max()
替换了丢失的数据,但是当然用na
代替了,只有在该值无论如何都没有修改的情况下才有效(至于z
值),因此该选项在示例的第三行中导致R
的虚假值。
我看到2个选项:
- 如果我可以获得
R
和Z
表达式中使用的符号列表,那么只要输入中的任何值是nan
,我都可以用nan
替换这些表达式的求值。nan
, - 如果可以为GiNaC变量分配非数字值,那么我可以检测到评估结果为非数字并替换为{{1}}。
我在GiNaC文档中都没有找到做这件事的方法,并且我愿意提出任何解决此问题的建议。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。