0

我在绘制这个时遇到了一些问题。一切都很好,直到没有任何情节的情节声明。有人可以帮助我,以便它可以绘制一些东西。以下是我的代码:

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

B[n_] = Integrate[2*Sin[n*Pi*x]*(x), {x, 0, 1}];
u[x_, psi_] = Sum[B[n]*Sin[n*Pi*x]*Exp[-(n*Pi)^2*psi], {n, 1, j}];

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

w = RandomReal[NormalDistribution[0, 1], 101];
d = Round[100*x + 1];
S = Total[Total[u[x, psi]/Length[u[x, psi]]] + w[d]]

T[x_, psi_] = Integrate[K[x - y, psi]*(y)*S, {y, -10, 10}]

Plot3D[T[x, psi], {x, 0, 1}, {psi, 0.01, 1}, 
 AxesLabel -> {"x", "t", "Temperature"}, Boxed -> False, 
 Mesh -> False]

基本上,我有一些来自“u”的数据,我想让每个“x”值(来自“w”)变得嘈杂,然后在“T”中执行卷积并绘图。

我将非常感谢任何人的帮助。

非常感谢!

4

3 回答 3

1

看起来非常像是您=在应该使用的地方使用:=. 前者进行立即赋值(称为Set),而另一个进行延迟赋值(SetDelayed)。区别是Mathematica的基础,你应该阅读文档,直到你彻底理解这个区别。

于 2012-07-11T14:31:41.980 回答
1

我不确定我是否理解您要解决的问题。但是,如下所示修改您的代码允许它运行 - 我将几个表达式改写为函数(一个好的经验法则是使用 := 如果左侧涉及模式,如 B[n_])并且我删除了一些显然试图将标量视为向量的代码。

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

ClearAll[B];
B[n_] := B[n] = Integrate[2*Sin[n*Pi*a]*(a), {a, 0, 1}];

ClearAll[u];
u[x_, psi_] := Sum[B[n]*Sin[n*Pi*x]*Exp[-(n*Pi)^2*psi], {n, 1, j}];

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

S[x_, psi_] := u[x, psi] + RandomReal[NormalDistribution[]]

T[x_, psi_] := Integrate[K[x - y, psi]*(y)*S[x, psi], {y, -10, 10}]

Plot3D[T[x, psi], {x, 0, 1}, {psi, 0.01, 1}, 
 AxesLabel -> {"x", "t", "Temperature"}, Boxed -> False, 
 Mesh -> False]

运行一段时间(〜1小时)后,它会产生下面的情节

T 的图

可能有一种更有效的方法来使用更惯用的方法来生成这个情节。如果您可以提供有关您尝试使用发布的代码做什么的更详细信息,那么也许我或其他人可以为您提供更有用的答案。

于 2012-07-12T04:13:32.297 回答
0

这是基于您的问题大纲的模板解决方案:

data = RandomInteger[{0, 1}, 100]; (* data creation function *) 
noise = RandomVariate[NormalDistribution[0, 1], Length@data]; (* noise vector *)
noisyData = data + noise; (* sum noise and data *)
ListConvolve[data, noisyData] (* apply convolution *)

{8.20928}

这个原型如何与您的目标相匹配?

于 2012-07-11T19:14:23.720 回答