使用分段数的Mathematica绘图问题

时间:2012-06-26 12:48:19

标签: wolfram-mathematica plot piecewise

我试图在我的一个问题中使用分段绘图,我有两个变量:x和psi。但是,各个功能仅对定义的“x”范围有效,psi范围相同。我试图制作这些的3D图 - 我基本上只有Plot3D [p,{x,0,1},{psi,0.01,1}] --->这些范围适用于整个绘图范围,各个功能的x范围已在分段功能中定义。

我收到以下错误:说Plot :: exclul:......必须是一个等式列表或\实值函数。

任何人都可以帮助我。我试图遵循以下相同的程序:How can I use Piecewise[] with a variable number of graphs/intervals 但是,我不知道如何处理绘图部分。

感谢。

以下是我的代码:

j = 10; 
s = 0; r = 0;

K[x_, psi_] := 
  Sum[Sin[n*Pi*x]*
    Sin[n*Pi*
      psi]*(2*Exp[-(n*Pi)^2*
         Abs[s + r]] - (Exp[-(n*Pi)^2*Abs[s - r]] - 
         Exp[-(n*Pi)^2*(s + r)])/(n*Pi)^2 ), {n, 1, j}];

TL[x_, psi_] = Integrate[K[x - y, psi]*y, {y, -10, 10}];

TU[x_, psi_] = Integrate[K[x - y, psi]*(1 - y), {y, -10, 10}];

eq = {TL[x, psi], TU[x, psi]};
cond = {{0 <= x <= 0.5, 0.01 <= psi <= 1}, {0.5 < x <= 1, 
    0.01 <= psi <= 1}};
p = Piecewise[{eq, cond}];

Plot3D[p, {x, 0, 1}, {psi, 0.01, 1}]

1 个答案:

答案 0 :(得分:1)

这是一个工作版本:

time = AbsoluteTime[];
j = 10; s = 0; r = 0;
K[x_, psi_] :=
  Sum[Sin[n*Pi*x]*Sin[n*Pi*psi]*
    (2*Exp[-(n*Pi)^2*Abs[s + r]] -
      (Exp[-(n*Pi)^2*Abs[s - r]] -
         Exp[-(n*Pi)^2*(s + r)])/(n*Pi)^2), {n, 1, j}];
TL[x_, psi_] := Integrate[K[x - y, psi]*y, {y, -10, 10}];
TU[x_, psi_] := Integrate[K[x - y, psi]*(1 - y), {y, -10, 10}];
Plot3D[Piecewise[
  {{TL[x, psi], 0 <= x <= 0.5}, {TU[x, psi], 0.5 < x <= 1}}],
 {x, 0, 1}, {psi, 0.01, 1}]
ToString[Round[AbsoluteTime[] - time]] <> " seconds"

enter image description here