wolfram-mathematica - 如何在 Mathematica 中将有理数转化为实数

标签 wolfram-mathematica

我这里有一些问题,我不知道如何以好的方式解决。例如,我想使用 BaseForm[1/3, 3]。但是,除非我输入 BaseForm[1/3.,3],否则这不会达到我的预期。给定有理数形式的数据,如何将其转换为实数形式?我尝试使用Apply,它不起作用。 (很奇怪,呃?对我来说,Apply 总是可以用来更改标题。)

对于这个具体问题,我可以做类似 BaseForm[1/3*1.,3] 的事情,但它确实不是很好。

感谢您的帮助。

最佳答案

BaseForm 将 10 基数的有理数转换为您想要的任何基数的有理数...因此它可以满足您的期望。

In[1]:= BaseForm[1/3,3]
Out[1]//BaseForm= Subscript[1, 3]/Subscript[10, 3]

正如您所指出的,给它一个实数可以这样做:

In[2]:= BaseForm[1/3.,3]
Out[2]//BaseForm= Subscript[0.1, 3]

最安全的改变方法是定义你自己的 baseForm ,它与 BaseForm 相同,除了给定有理数时:

baseForm[r_Rational,b_]:=BaseForm[N[r],b]

然后

In[3]:= baseForm[1/3,3]
Out[3]//BaseForm= Subscript[0.1, 3]

不太安全的方法(因为你不知道它还会破坏什么)是重新定义BaseForm

Unprotect[BaseForm];
BaseForm[r_Rational, b_] := BaseForm[N[r], b]
Protect[BaseForm];

然后正常使用。

关于wolfram-mathematica - 如何在 Mathematica 中将有理数转化为实数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5603003/

相关文章:

wolfram-mathematica - 如何编译计算 Hessian 矩阵的函数?

math - 随机有理数生成

wolfram-mathematica - 删除保留外观顺序的重复列表元素

string - 在 Mathematica 中使用 "CreateDocument"函数而不丢失格式

wolfram-mathematica - 列表列表中此 ReplaceAll 的正确语法是什么?

wolfram-mathematica - 数学 D 和 Dt 表现不正常?

list - 如何将列表列表转换为固定大小的矩阵?

wolfram-mathematica - 如何检查两个向量的元素相等性?

parsing - 为什么这种使用 Begin[] 不起作用?

wolfram-mathematica - 加快 ListLinePlot 速度