早教吧作业答案频道 -->数学-->
fortran77中为什么不能像正数那样求负数的三次方根,该怎么求?
题目详情
fortran77 中为什么不能像正数那样求负数的三次方根,该怎么求?
▼优质解答
答案和解析
主要因为幂函数x**a是定义在[0,+无穷)上的,在Fortran77中除了特殊的指数a之外x**a一般都按照exp(a*log(x))来实现.
如果x.GE.0.0D0,那么x**(1.0D0/3.0D0)当然没什么问题.
如果x.LT.0.0D0,Fortran是不会知道x**(1.0D0/3.0D0)是开三次方的意思,何况1/3在计算机中不能精确表示,所以上面的乘方运算其实还是按照指数和对数复合的方式来实现的,但是此时log(x)是多值函数,在计算机中一般不会允许x是负数的情形,这样可以避免取单值支的麻烦.
对于你说的开立方根这个问题,解决的办法是用-(-a)**(1.0D0/3.0D0)来代替a**(1.0D0/3.0D0),不要把问题留给编译器.
如果x.GE.0.0D0,那么x**(1.0D0/3.0D0)当然没什么问题.
如果x.LT.0.0D0,Fortran是不会知道x**(1.0D0/3.0D0)是开三次方的意思,何况1/3在计算机中不能精确表示,所以上面的乘方运算其实还是按照指数和对数复合的方式来实现的,但是此时log(x)是多值函数,在计算机中一般不会允许x是负数的情形,这样可以避免取单值支的麻烦.
对于你说的开立方根这个问题,解决的办法是用-(-a)**(1.0D0/3.0D0)来代替a**(1.0D0/3.0D0),不要把问题留给编译器.
看了 fortran77中为什么不...的网友还看了以下:
数学直线方程正负(AX1+BY1+C)/根号(A方+B方)=正负(一个符号打不出来)用来确点P关于 2020-05-13 …
0只有一个平方根,是它本身;负数()平方根.正负根号16=()它表示()根号8=()它表示()?小 2020-05-16 …
一个关于加速度方向正负值的物理问题关于匀变速直线运动中加速度的方向和正负值问题,下列说法错误的是( 2020-05-17 …
下列计算或命题中正确的个数是正负4都是6的立方根x的立方根=x8的算术平方根的立方根是2正负8的平 2020-07-09 …
81的四分之一次方是正负3还是3? 2020-07-17 …
幂的乘方正负号怎么判断?比如说(—1)^2算出来应该得1但是给(—1)前面提个负号不就是—(1)^ 2020-07-30 …
库伦定律说Q表示点电荷的电荷量但课本上说带负电的话点电荷量的表示就是个负值为什么老师说Q只能带正值 2020-07-31 …
求下列各式中的x的值:4(x-1)²-49=0求下列各数的算数平方根(1)25/81(2)196( 2020-08-03 …
关于加速度为负的理解加速度的方向正负应怎么理解?加速度表示的是速度的变化量但总不能透彻理解其方向问题 2020-11-21 …
下午三模了在这里问2个物理问题,请进,作图题中请关于小磁针的方向正负SN这类作图题中,我搞不懂的是电 2020-12-18 …