早教吧作业答案频道 -->数学-->
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中为什么不...的网友还看了以下:
向心运动最终会转变为什么运动向心运动是因为所受合力大于所需向心力,做不断靠近圆心的运动,那么我想问 2020-04-09 …
求解一道表面积变化的应用题.一个正方体,如果将它高增加4CM,就成为一个长方体,且表面积增加8.0 2020-04-27 …
关于质点做匀速圆周运动的说法正确的是()A.由a=v2r可知,a与r成反比B.由a=v2r可知,a 2020-05-13 …
E=U/d 可以说E和U成正比么?这种公式真难理解阿怎么办好呢?可以说单位距离上,电势差越大,场强 2020-05-16 …
对于牛顿第一定律的看法,下列观点正确的是()A.验证牛顿第一定律的实验可以做出来,所以惯性定律是正 2020-06-10 …
如图(1)是一个正方体,不考虑边长的大小,它的平面展开图为图(2),四边形APQC是切正方体的一个 2020-06-15 …
我们比任何时候都接近梦想是什么意思请各位学识渊博的哥哥姐姐帮助我解答下问题好吗?么么哒!么么哒!么 2020-06-21 …
关于人体衰老细胞和癌细胞的叙述,正确的是()A.癌细胞与衰老细胞都有基因表达B.癌变和衰老都是细胞 2020-07-25 …
“若一个数不是负数,则它的平方不是正数”和这个命题真值相同的命题()A.若一个数是负数,则它的平方是 2020-12-31 …
(-2/3)-(+1/2)-(-5/6)-(-1/3)=?负-正怎么算?(-1)-2正-负怎么算?2 2021-01-14 …