写法基本是对的,问题在于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&)]