我現在在試著用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(=)了,
有人可以幫我解惑一下嗎?