作业帮 > 数学 > 作业

fortran 复数开方问题

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/08 07:25:03
fortran 复数开方问题
fortran 下,对一个复数开方,有两个解,程序为什么只输出一个解?复介电常数的开方
例如
program main
implicit none
complex*16::a
a=(9.0d0,-40.0d0)
write(*,*) cdsqrt(a)
end
输出:( 5.0000000000000000 ,-4.0000000000000000 )
另外一个解为(-5,4)
默认输出实部>0的解
再问: 那对一个实际问题,怎么选择呢?sqrt(epsilon2/epsilon1-sin(theta)), 不知道你是否了解? 或者从纯数学角度来说,它应该把结果都输出,只给一个是不准确的
再答: 对于介电常数问题,应该是有物理意义的吧? 介电常数的开方,就应该是取实部大于零的根的。 当然,如果你想得到全部的根,开方的也简单,另一个就是计算结果的相反数
再问: 直觉上,觉得一个复介电常数开方后,根也应该是实部大于0,可是它的根并不表示为一个介电常数,为什么非要实部大于0呢?到现在还没找到相关的文章。我再找找看吧。
再答:   我不搞这个,帮不了你了,不过前段时间帮人计算过反射率,里面有介电常数和磁导率的有关计算,对方告诉我,开方后取实部大于零的根,不过我计算的是介电常数和磁导率的乘积的开方,还有磁导率与介电常数的商的开方。