我现在在试着用Mathematica写一个FDTD的算法
希望可以画出电磁波的传递动画
但是在跑的时候一直出现错误讯息
ke = 100; nsteps = 100; ks = ke/2;
c0 = 3 10^8;
Ex = Table[0, {i, 0, ke}];
Hy = Table[0, {i, 0, ke}];
dx = 0.01; dt = dx/(2 c0);
cc = c0 dt/dx;
t0 = 20; sp = 8;
plotex = ListPlot[Ex];
Dynamic[plotex]
For[t = 1, t <= nsteps, t++,
(For[kk = 2, kk <= ke - 1, kk++,
Ex[[kk]] = Ex[[kk]] + cc (Hy[[kk - 1]] - Hy[[kk]]);
]
Ex[[ks]] = Exp[-0.5*(t - t0)^2/sp^2];
For[kk = 1, kk <= ke - 1, kk++,
Hy[[kk]] = Hy[[kk]] + cc (Ex[kk] - Ex[[kk + 1]])];
ListPlot[Ex])]
错误讯息是
Set::write :
"Tag Times in 0.\ Null is Protected. "
"Tag Times in Null\ (0. +0.5\ (0.5\ (0. \
+{0,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,\
0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,\
0.,0.,0.,0.,<<51>>}[49])-0.5\ (0. \
+{0,0.,0.,<<45>>,0.,0.,<<51>>}[50]))) is Protected. \
\!\(\*ButtonBox[\">>\",
Appearance->{Automatic, None},
BaseStyle->\"Link\",
ButtonData:>\"paclet:ref/message/General/write\",
ButtonNote->\"Set::write\"]\)"
但是我实在找不到我哪边有误用Set(=)了,
有人可以帮我解惑一下吗?