Wolfram mathematica 一个列表和哪个问题

Wolfram mathematica 一个列表和哪个问题,wolfram-mathematica,Wolfram Mathematica,我快发疯了,因为我不能让Mathematica乖乖的 我正在用NDSolve解决一个ODE,但它不起作用,因为有一个函数没有输出我所期望的结果 我的职能如下: y[x_] := Which[ 0<=x<=10, {{1,2,3},{-9,-8,-7}}, 10<x<20, {{4,5,6},{-6,-5,-4}}, x>=20, {{7,8,9},{-3,-2,-1}} ]; 只要我用一个数值来称呼它,它就会起作用 Ans[3] = Total[y[3

我快发疯了,因为我不能让Mathematica乖乖的

我正在用NDSolve解决一个ODE,但它不起作用,因为有一个函数没有输出我所期望的结果

我的职能如下:

y[x_] := Which[
  0<=x<=10, {{1,2,3},{-9,-8,-7}},
  10<x<20, {{4,5,6},{-6,-5,-4}},
  x>=20, {{7,8,9},{-3,-2,-1}}
];
只要我用一个数值来称呼它,它就会起作用

Ans[3] = Total[y[3][[1]] {10,20,30}] = Total[{1,2,3} {10,20,30}] = Total[{10,40,90}] = 140
但是,当我的ODE解算器用另一个函数调用它时,它的行为非常奇怪

Ans[z[t]] = Total[y[z[t]][[1]] {10,20,30}] = Total[(0<=x<=10) {10,20,30}] = ??? non-sense

Ans[z[t]]=Total[y[z[t][[1]]{10,20,30}]=Total[(0回答您提出的问题:


原因是,当您计算
y[x]
时,它只会给出
,其中[0尝试
Ans[w]//Trace
,以查看Mma执行的计算步骤,从而获得“答案”
60(0它仍然不起作用,但我已在Mma堆栈交换中重新解释了我的问题:
Ans[z[t]] = Total[y[z[t]][[1]] {10,20,30}] = Total[(0<=x<=10) {10,20,30}] = ??? non-sense
Clear[ans]
ans[x_?NumericQ] := Total[y[x][[1]] {10,20,30}]