0

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

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

谁能帮我解决这个问题。我正在尝试遵循与以下相同的程序:如何将 Piecewise[] 与可变数量的图形/间隔一起使用 但是,我不知道如何处理绘图部分。

谢谢。

以下是我的代码:

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}]
4

1 回答 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"

在此处输入图像描述

于 2012-06-26T15:17:32.527 回答