微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用GiNaC在expr评估中跟踪丢失的数据

如何解决使用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个选项:

  • 如果我可以获得RZ表达式中使用的符号列表,那么只要输入中的任何值是nan,我都可以用nan替换这些表达式的求值。 nan
  • 如果可以为GiNaC变量分配非数字值,那么我可以检测到评估结果为非数字并替换为{{1}}。

我在GiNaC文档中都没有找到做这件事的方法,并且我愿意提出任何解决此问题的建议。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。