作业帮 > 综合 > 作业

Mathematica简单的编程题

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/06/23 12:04:56
Mathematica简单的编程题
仅用Select,Flatten,Apply和FreeQ命令获得下列表达式的变量列表(依变量在表达式中出现的次序)
x^3 + 3 x^2 y^2 + 3 x y^4 + y^6 + 3 x^2 z^3 + 6 x y^2 z^3 +
3 y^4 z^3 + 3 x z^6 + 3 y^2 z^6 + z^9
{x,x,y,x,y,y,x,z,x,y,z,y,z,x,z,y,z,z}
想看看他人的解法.
Mathematica简单的编程题
我想了个答案,但这个/@相当于用到Map了……不知是否还合题意?
Select[Flatten[
Apply[{##} &, #] & /@ Apply[{##} &, #] & /@
Apply[{##} &,
x^3 + 3 x^2 y^2 + 3 x y^4 + y^6 + 3 x^2 z^3 + 6 x y^2 z^3 +
3 y^4 z^3 + 3 x z^6 + 3 y^2 z^6 + z^9]], FreeQ[#, _Integer] &]
不过也可以避开/@:
Select[Flatten[
Apply[{##} &,
Apply[{##} &,
Apply[{##} &,
x^3 + 3 x^2 y^2 + 3 x y^4 + y^6 + 3 x^2 z^3 + 6 x y^2 z^3 +
3 y^4 z^3 + 3 x z^6 + 3 y^2 z^6 + z^9], {1}], {2}]],
FreeQ[#, _Integer] &]
再问: {##}&直接用List得了,弄得太乱了... 其实方法差不多,只是没有我自己弄得简洁 x^3 + 3 x^2 y^2 + 3 x y^4 + y^6 + 3 x^2 z^3 + 6 x y^2 z^3 + 3 y^4 z^3 + 3 x z^6 + 3 y^2 z^6 + z^9; Apply[List, %, {0, Infinity}] // Flatten~Select~(FreeQ[#, _Integer] &)