Mathematica怎么画不出d[3.3]的图?程序如下:Table[{M = Solve[(x - 8) (x - 5) (x - 6) == 0,x]; a1 = M[[1,1,2]]; a2 = M[[2,1,2]]; a3 = M[[3,1,2]]; {If[a2 < a3,{t = a2; a2 = a3; a3 = t}];If[a1 < a2,{t = a1; a1 = a2; a2 = t}];If[a2 < a3,{t = a2

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 16:47:32
Mathematica怎么画不出d[3.3]的图?程序如下:Table[{M = Solve[(x - 8) (x - 5) (x - 6) == 0,x]; a1 = M[[1,1,2]]; a2 = M[[2,1,2]]; a3 = M[[3,1,2]]; {If[a2 < a3,{t = a2; a2 = a3; a3 = t}];If[a1 < a2,{t = a1; a1 = a2; a2 = t}];If[a2 < a3,{t = a2

Mathematica怎么画不出d[3.3]的图?程序如下:Table[{M = Solve[(x - 8) (x - 5) (x - 6) == 0,x]; a1 = M[[1,1,2]]; a2 = M[[2,1,2]]; a3 = M[[3,1,2]]; {If[a2 < a3,{t = a2; a2 = a3; a3 = t}];If[a1 < a2,{t = a1; a1 = a2; a2 = t}];If[a2 < a3,{t = a2
Mathematica怎么画不出d[3.3]的图?
程序如下:
Table[{M = Solve[(x - 8) (x - 5) (x - 6) == 0,x]; a1 = M[[1,1,2]];
a2 = M[[2,1,2]];
a3 = M[[3,1,2]]; {If[a2 < a3,{t = a2; a2 = a3; a3 = t}];
If[a1 < a2,{t = a1; a1 = a2; a2 = t}];
If[a2 < a3,{t = a2; a2 = a3; a3 = t}]};
If[(a1 > 0) && (a2 > 0) && (a3 > 0),{s1 = Sqrt[a1]; s2 = Sqrt[a2];
s3 = Sqrt[a3];}];
d[i] = ListPlot[{{2 i,a1},{2 i,a2},{2 i,a3}}]}
,{i,1,4,0.1}];
然后输入点画图,都正常.但是当输入d[3.3]的时候,不能给出图形?
或者用一个更简单的命令:
Table[d[i] = ListPlot[{{i,1},{i,2}}],{i,2,4,0.1}];
可以画出其他的图,但是就是画不出d[3.3].
这个为什么?

Mathematica怎么画不出d[3.3]的图?程序如下:Table[{M = Solve[(x - 8) (x - 5) (x - 6) == 0,x]; a1 = M[[1,1,2]]; a2 = M[[2,1,2]]; a3 = M[[3,1,2]]; {If[a2 < a3,{t = a2; a2 = a3; a3 = t}];If[a1 < a2,{t = a1; a1 = a2; a2 = t}];If[a2 < a3,{t = a2
嗯,同学恭喜你,撞上了一个比较高端的问题.这和浮点数的性质有关系.你可以试试这个:
Table[i, {i, 2, 4, 0.1}] // FullForm
(*
\!\(\*
TagBox[
StyleBox[
RowBox[{"List", "[",
RowBox[{"2.`", ",", "2.1`", ",", "2.2`", ",", "2.3`", ",", "2.4`",
",", "2.5`", ",", "2.6`", ",", "2.7`", ",", "2.8`", ",", "2.9`",
",", "3.`", ",", "3.1`", ",", "3.2`", ",",
"3.3000000000000003`", ",", "3.4`", ",", "3.5`", ",", "3.6`",
",", "3.7`", ",", "3.8000000000000003`", ",", "3.9`", ",",
"4.`"}], "]"}],
ShowSpecialCharacters->False,
ShowStringCharacters->True,
NumberMarks->True],
FullForm]\)
*)
这是为什么呢,简单的说,对于数值运算(因为你使用了小数而非整数或分数之类的准确数),mathematica默认使用精度为MachinePrecision的浮点运算,于是,浮点运算产生了误差.
这种误差在计算中,是普遍存在的.顺便,不同的计算机上,产生的误差还不一样.
要避免这个问题,你可以把0.1改成1/10,然后在索引时使用33/10这样的准确量.