如何修复程序
How to fix the procedure
请帮帮我!
有程序 operation[f_]
。
它可以正常工作并绘制 functions:Cos,Sin。但是,不幸的是,它不适用于 E^x 和 Log[E,x] 并输出错误,可能是因为输入了不正确的函数名称或其他原因;((有什么问题?
spxsin = {-1, -0.35, 0.3, 0.95, 1.6, 2.375, 3.15, 3.925, 4.7, 5.025,
5.35, 5.675, 6};
spxcos = {-1, -0.75, -0.5, -0.25, 0, 0.775, 1.55, 2.325, 3.1, 3.825,
4.55, 5.275, 6};
spxlny = {-1, 0.75, 2.5, 4.25, 6};
spxey = {-1, 0.75, 2.5, 4.25, 6};
operation[f_] := Block[{data},
data = Table[{x, f[x]}, {x, -1, 6, 0.1}];
Graphics[{Thick, Blue, Line[data],
Green, Table[Point[{spx[[i]], f[spx[[i]]]}], {i, 1, Length[spx]}],
Pink, Opacity[.7],
Table[Rectangle[{spx[[i]], f[spx[[i]]]}, {spx[[i + 1]],
f[spx[[i + 1]]]}], {i, 1, Length[spx] - 1}]
}, Axes -> True]]
Which[ f == Sin, spx := spxsin, f == Cos, spx := spxcos, f == E^x ,
spx := spxlny, f == Log, spx := spxey]
operation[Sin]
operation[Cos]
operation[E^x]
operation[Log]
欧拉的E需要输入Esc ee Esc。
我看你输入的是标准的E.
另请注意,Exp 是 Mathematica 中的指数函数。
编辑现已测试:您可以将纯函数传递给您的 operation
,因此不要:operation[E^x]
尝试
operation[E^# &]
或者例如,如果您想要 base 2 日志,它将是
operation[Log[2,#]&]
其他一些需要指出的事情:Log
失败仅仅是因为您的 x
table 范围是负数。
此外,您的 Which
声明没有任何作用。在你的函数之外,f
没有定义,所以 none 的条件是 True
。将 Which
移动到函数内部,这有效:
spxsin = {-1, -0.35, 0.3, 0.95, 1.6, 2.375, 3.15, 3.925, 4.7, 5.025,
5.35, 5.675, 6};
spxcos = {-1, -0.75, -0.5, -0.25, 0, 0.775, 1.55, 2.325, 3.1, 3.825,
4.55, 5.275, 6};
spxlny = {-1, 0.75, 2.5, 4.25, 6};
spxey = {-1, 0.75, 2.5, 4.25, 6};
operation[f_] :=
Block[{data}, data = Table[{x, f[x]}, {x, -1, 6, 0.1}];
Clear[spx];
Which[
TrueQ[f == Sin], spx := spxsin,
TrueQ[f == Cos], spx := spxcos ,
TrueQ[f == (E^# &)], spx := spxey ];
Graphics[{Thick, Blue, Line[data], Green,
Table[{PointSize[.1], Point[{spx[[i]], f[spx[[i]]]}]}, {i, 1, Length[spx]}],
Pink, Opacity[.7],
Table[Rectangle[{spx[[i]], f[spx[[i]]]}, {spx[[i + 1]],
f[spx[[i + 1]]]}], {i, 1, Length[spx] - 1}]}, Axes -> True,
AspectRatio -> 1/GoldenRatio]]
注意每个包含在 TrueQ
中的测试,以确保它是 True
或 False
(测试 Sin==Cos
对所有值都不是假的,所以也是不是 return False
)
operation[Sin]
operation[Cos]
operation[E^# &]
现在,如果您希望 Exp
也能正常工作,您需要将该表单明确地放入 Which
语句中。 ( f==(E^#&) || f==Exp
)
请帮帮我!
有程序 operation[f_]
。
它可以正常工作并绘制 functions:Cos,Sin。但是,不幸的是,它不适用于 E^x 和 Log[E,x] 并输出错误,可能是因为输入了不正确的函数名称或其他原因;((有什么问题?
spxsin = {-1, -0.35, 0.3, 0.95, 1.6, 2.375, 3.15, 3.925, 4.7, 5.025,
5.35, 5.675, 6};
spxcos = {-1, -0.75, -0.5, -0.25, 0, 0.775, 1.55, 2.325, 3.1, 3.825,
4.55, 5.275, 6};
spxlny = {-1, 0.75, 2.5, 4.25, 6};
spxey = {-1, 0.75, 2.5, 4.25, 6};
operation[f_] := Block[{data},
data = Table[{x, f[x]}, {x, -1, 6, 0.1}];
Graphics[{Thick, Blue, Line[data],
Green, Table[Point[{spx[[i]], f[spx[[i]]]}], {i, 1, Length[spx]}],
Pink, Opacity[.7],
Table[Rectangle[{spx[[i]], f[spx[[i]]]}, {spx[[i + 1]],
f[spx[[i + 1]]]}], {i, 1, Length[spx] - 1}]
}, Axes -> True]]
Which[ f == Sin, spx := spxsin, f == Cos, spx := spxcos, f == E^x ,
spx := spxlny, f == Log, spx := spxey]
operation[Sin]
operation[Cos]
operation[E^x]
operation[Log]
欧拉的E需要输入Esc ee Esc。 我看你输入的是标准的E.
另请注意,Exp 是 Mathematica 中的指数函数。
编辑现已测试:您可以将纯函数传递给您的 operation
,因此不要:operation[E^x]
尝试
operation[E^# &]
或者例如,如果您想要 base 2 日志,它将是
operation[Log[2,#]&]
其他一些需要指出的事情:Log
失败仅仅是因为您的 x
table 范围是负数。
此外,您的 Which
声明没有任何作用。在你的函数之外,f
没有定义,所以 none 的条件是 True
。将 Which
移动到函数内部,这有效:
spxsin = {-1, -0.35, 0.3, 0.95, 1.6, 2.375, 3.15, 3.925, 4.7, 5.025,
5.35, 5.675, 6};
spxcos = {-1, -0.75, -0.5, -0.25, 0, 0.775, 1.55, 2.325, 3.1, 3.825,
4.55, 5.275, 6};
spxlny = {-1, 0.75, 2.5, 4.25, 6};
spxey = {-1, 0.75, 2.5, 4.25, 6};
operation[f_] :=
Block[{data}, data = Table[{x, f[x]}, {x, -1, 6, 0.1}];
Clear[spx];
Which[
TrueQ[f == Sin], spx := spxsin,
TrueQ[f == Cos], spx := spxcos ,
TrueQ[f == (E^# &)], spx := spxey ];
Graphics[{Thick, Blue, Line[data], Green,
Table[{PointSize[.1], Point[{spx[[i]], f[spx[[i]]]}]}, {i, 1, Length[spx]}],
Pink, Opacity[.7],
Table[Rectangle[{spx[[i]], f[spx[[i]]]}, {spx[[i + 1]],
f[spx[[i + 1]]]}], {i, 1, Length[spx] - 1}]}, Axes -> True,
AspectRatio -> 1/GoldenRatio]]
注意每个包含在 TrueQ
中的测试,以确保它是 True
或 False
(测试 Sin==Cos
对所有值都不是假的,所以也是不是 return False
)
operation[Sin]
operation[Cos]
operation[E^# &]
现在,如果您希望 Exp
也能正常工作,您需要将该表单明确地放入 Which
语句中。 ( f==(E^#&) || f==Exp
)