level 4
c = 3*10^8;
la = c/10^(9);
k0 = 2*\[Pi]/la;
u0 = 10^(-7)*4*\[Pi];
dz = 0.2;
r1 = -0.4813192;
r2 = 0.038972715;
re = r1 + r2*I;
For[i = 1, i < 20001, i += 10; FindRoot[-I*Sin[k*dz]*(k/k0 - k0/k) == re*(2*Cos[k*dz] + I*Sin[k*dz]*(k/k0 + k0/k)), {k, i}]]
2020年06月14日 12点06分
1
level 7
写法基本是对的,问题在于For循环是没有输出的,你需要手动Print或者把计算结果收集到一个List里,当然更好的办法是不要用(在Mathematica里不被鼓励使用的)For循环,把最后一句换成
roots=Table[FindRoot[-I*Sin[k*dz]*(k/k0-k0/k)==re*(2*Cos[k*dz]+I*Sin[k*dz]*(k/k0+k0/k)),{k,i}],{i,1,20001,10}]
顺便提供一个结果去重的方法,需要注意,判断浮点数相等不能直接用==
Union[roots[[All,1,2]],SameTest->(Abs[
#1-#
2]<0.01&)]
2020年06月14日 16点06分
3
感谢并摩拜大佬👍👍
2020年06月15日 02点06分