2012-06-26 41 views
0

我想分段使用我的問題之一,我有兩個變量:x和psi。但是,相應的功能僅對定義的「x」範圍有效,且psi範圍相同。我正在嘗試製作這些3D圖 - 我基本上只有Plot3D [p,{x,0,1},{psi,0.01,1}] - >這些範圍適用於整個繪圖範圍,我已經在分段函數中定義了各個函數的x範圍。Mathematica使用分段繪圖的問題

我得到以下錯誤:說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

這裏是一個工作版本:

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

+0

非常感謝。你真棒 – user1482746