公告:本站正式转型为非交互式静态网站!
转型:本站将通过笔记和博客的形式继续为大家服务,关于 Mathematica 问答服务请移步至QQ群:365716997
联系:如有问题请联系QQ群管理员,或发送邮件至:lixuan.xyz@qq.com。
感谢:最后非常感谢大家多年来的支持与帮助!
参考《互联网跟帖评论服务管理规定》《中华人民共和国网络安全法》《网络信息内容生态治理规定》《互联网用户账号信息管理规定》

—— 2022-11-27

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

语法高亮:在编辑器中点击

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

支持LaTex数学公式
行内公式标识符:\$ 或“$\backslash ($”+“$\backslash )$”,
行间公式标识符:\$\$ 或 “$\backslash [$”+“$\backslash ]$”

社区建议QQ群:365716997

分类

0 投票
3.8k 浏览
ReMantissa[x_,b_]:=RealDigits[Re[x],b][[1]]
ImMantissa[x_,b_]:=RealDigits[Im[x],b][[1]]
ReExp[x_,b_]:=RealDigits[Re[x],b][[2]]
ImExp[x_,b_]:=RealDigits[Im[x],b][[2]]
FromComplexDigits[Refn_, Imfn_, xn_, b_] :=
 FromDigits[{IntegerDigits[Refn[FromDigits[ReMantissa[xn, b]]], b], 
    ReExp[xn, b]}] +
  FromDigits[{IntegerDigits[Imfn[FromDigits[ImMantissa[xn, b]]], b], 
     ImExp[xn, b]}]*I
FromComplexDigits[fn_, xn_, b_] := FromComplexDigits[fn, fn, xn, b]
(*函数定义*)

In[67]:= FromComplexDigits[IntegerReverse,9876.54321+12345.6789I,10]
Out[67]= 123456789/100000+(987654321 I)/10000
(*计算测试*)

计算测试通过,但是做各种列表操作报错。。。实在检查不出来,头都爆炸了。。

===============================================================================

Debug过程,列表操作:

In[55]:= PlotC`Core`test[fn_,xmin_,xmax_,ymin_,ymax_,step_]:=
Table[
Hue[(Arg[fn]+\[Pi])/(2 \[Pi]),1/(1+0.3 Log[Abs[fn]+1]),1-1/(1.1+5 Log[Abs[fn]+1]),1],
{y,ymin+0.0012,ymax,step},
{x,xmin+0.0012,xmax,step},
Method->"FinestGrained"]
PlotC`Core`test[FromComplexDigits[IntegerReverse,x+y I,10],-25,25,-25,25,0.5]


Out[56]= Table[Hue[(1/(2 \[Pi]))(Arg[10+10 IntegerDigits[IntegerReverse[FromDigits[-Im[y]+Re[x]]],10]+I (10+10 IntegerDigits[IntegerReverse[FromDigits[Im[x]+Re[y]]],10])]+\[Pi]),1/(1+0.3 Log[Abs[10+10 IntegerDigits[IntegerReverse[FromDigits[-Im[y]+Re[x]]],10]+I (10+10 IntegerDigits[IntegerReverse[FromDigits[Im[x]+Re[y]]],10])]+1]),1-1/(1.1 +5 Log[Abs[10+10 IntegerDigits[IntegerReverse[FromDigits[-Im[y]+Re[x]]],10]+I (10+10 IntegerDigits[IntegerReverse[FromDigits[Im[x]+Re[y]]],10])]+1]),1],{y,-24.9988,25,0.5},{x,-25+0.0012,25,0.5},{Method->FinestGrained}]

 

对话框报错:

FromDigits::nlst: 表达式 -Im[y]+Re[x] 不是一个由数字组成的列表,也不是由有效数字组成的字符串. >>
FromDigits::nlst: 表达式 Im[x]+Re[y] 不是一个由数字组成的列表,也不是由有效数字组成的字符串. >>
Table::iterb: 迭代器 {Method->FinestGrained} 没有适当的边界. >>
Table::iterb: 迭代器 {Method->FinestGrained} 没有适当的边界. >>

 

用户: EmberEdison (806 分)
修改于 用户:EmberEdison
要不你Clear或者Quit一下?运行没问题。
数值计算一直正常,但是绘图或者table就出现一些好像被Hold锁住的错误- -
具体出问题的code是什么啊,是不是出了这种错误:FromComplexDigits[IntegerReverse, 9876.54321 + 12345.6789 I, 1]
更新了出错过程, 最少 12 个字符
更新了出错过程, 填满 12 个字符

1个回答

+2 投票
 
已采纳

改这三处:

1.去掉{Method->FinestGrained},Table没这选项。

2.

FromComplexDigits[Refn_, Imfn_, xn_?NumericQ, b_?NumericQ]

3.还有你画图函数的Hue的第一个argument:

(Arg[fn] + \[Pi])/(2 \[Pi]) // N

或者复制一下改完的完整代码:

ReMantissa[x_, b_] := RealDigits[Re[x], b][[1]];
ImMantissa[x_, b_] := RealDigits[Im[x], b][[1]];
ReExp[x_, b_] := RealDigits[Re[x], b][[2]];
ImExp[x_, b_] := RealDigits[Im[x], b][[2]];
FromComplexDigits[Refn_, Imfn_, xn_?NumericQ, b_?NumericQ] := 
  FromDigits[{IntegerDigits[Refn[FromDigits[ReMantissa[xn, b]]], b], 
     ReExp[xn, b]}] + 
   FromDigits[{IntegerDigits[Imfn[FromDigits[ImMantissa[xn, b]]], b], 
      ImExp[xn, b]}]*I;
FromComplexDigits[fn_, xn_, b_] := FromComplexDigits[fn, fn, xn, b];
PlotC`Core`test[fn_, xmin_, xmax_, ymin_, ymax_, step_] := 
 Table[Hue[(Arg[fn] + \[Pi])/(2 \[Pi]) // N, 
   1/(1 + 0.3 Log[Abs[fn] + 1]), 1 - 1/(1.1 + 5 Log[Abs[fn] + 1]), 
   1], {y, ymin + 0.0012, ymax, step}, {x, xmin + 0.0012, xmax, step}]

数据太多了就截取了一个list,还挺好看的

用户: happyfish (1.8k 分)
采纳于 用户:EmberEdison
原版是并行table,忘记删除了。其他的非常感谢。
你的数据在哪里,我运行happyfish改完的代码后没有任何反应呢
我改完的代码只是函数定义,没有具体要运行的code。上面那个彩色方块表是运行PlotC`Core`test[FromComplexDigits[IntegerReverse,x+y I,10],-25,25,-25,25,0.5]得出来的第一个
谢谢 我试了试 出现了你说的彩色方块
...