我在绘制这个问题时遇到了一些问题。一切都好,直到情节陈述没有任何情节。有人可以帮助我,以便它可以绘制一些东西。以下是我的代码:
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”中执行卷积并绘制。
我将非常感谢任何人的帮助。
非常感谢!
答案 0 :(得分:1)
看起来好像您正在使用=
,您应该使用:=
。前者立即赋值(称为Set
)另一个是延迟赋值(SetDelayed
)。差异是 Mathematica 的基础,你应该阅读文档,直到你彻底理解这个差异。
答案 1 :(得分: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小时),它会生成下面的图表
使用更惯用的方法制作此图可能是一种更有效的方法。如果您可以提供有关您发布的代码的更多详细信息,那么我或其他人可能会给您一个更有用的答案。
答案 2 :(得分: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}
这个原型如何与您的目标相匹配?