| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
免费IT实战开发视频教程合集分享千里之行 始于足下
共有 517 人关注过本帖
标题:vb中负数的三分之一次方怎么表示
只看楼主 加入收藏
小麦哥
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2018-3-14
结帖率:50%
  已结贴   问题点数:20  回复次数:9   
vb中负数的三分之一次方怎么表示
vb中负数的三分之一次方怎么表示
2018-09-04 16:26
wmf2014
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:156
帖 子:1711
专家分:9531
注 册:2014-12-6
  得分:5 
经测试,负数的x(0<x<1)次幂无效,正数的0至1次幂可以表示出来,比如a的三分之一次方表示为a^(1/3)。

能编个毛线衣吗?
2018-09-04 17:30
wds1
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:27
帖 子:262
专家分:1447
注 册:2016-3-10
  得分:5 
x = -3 ^ (1 / 3)

x= -1.44224957030741
2018-09-04 19:02
ZHRXJR
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:74
帖 子:765
专家分:4045
注 册:2016-5-10
  得分:5 
一、
X = -22.35 ^ (1 / 3)   '指数大于0
返回值 X = -2.81682051997775
二、
X = -4.357 ^ -(1 / 3)   '指数小于0
返回值 X = -0.612262245594765
三、
X = 0.357 ^ -(1 / 3)   '指数小于0
返回值 X = 1.40964772450889
引申:
实际上在指数小于 0 时,其实就是 X = 1 / (0.357 ^ (1 / 3)), 返回值 X = 1.40964772450889 。
2018-09-05 23:34
wmf2014
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:156
帖 子:1711
专家分:9531
注 册:2014-12-6
  得分:0 
看来楼上两位已经改写数学历史,可以在实数范围内得到负数的平方根了。

能编个毛线衣吗?
2018-09-06 08:32
ZHRXJR
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:74
帖 子:765
专家分:4045
注 册:2016-5-10
  得分:0 
哈哈,实数不是虚数
看看数学的定义吧 A的负B次方,其实就是A的B次方的倒数。
难道不是实数吗?看下面代码及运行效果图:
程序代码:

X = -2 ^ -2
Y = 1 / (-2 ^ 2)
Label1.Caption = "X = " & Format(X, "0.00000")
Label2.Caption = "Y = " & Format(Y, "0.00000")


虚数是负数的平方根,就是说负数在实数范围内的平方根是不存在的,因为它是虚数!!
而楼主的问题不是负数平方根,而是负数的幂次方,看清楚!!!

如果是 X = Sqr(-2) ,那就是错误的,不在实数范围内!!

[此贴子已经被作者于2018-9-6 13:28编辑过]

附件: 您没有浏览附件的权限,请 登录注册
2018-09-06 12:51
wmf2014
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:156
帖 子:1711
专家分:9531
注 册:2014-12-6
  得分:0 
算了,不用扣字眼了。
楼主原话“vb中负数的三分之一次方怎么表示”,把三分之一换成二分之一应该没问题吧,于是就是“vb中负数的二分之一次方怎么表示”,这应该和“vb中负数的平方根怎么表示”应该如出一辙吧,这能表示吗?我觉得大部分人会这样理解楼主题意的,尽管数学上负数的立方根是在实数范围内,我二楼回答的是“经测试……”,只是阐述了vb不能得到(-2)^(1/3)的结果这个事实。
如果要理解成楼上大神的意思,楼主就应该这样问:“vb中负数的负三分之一次方怎么表示”。

能编个毛线衣吗?
2018-09-06 14:21
wds1
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:27
帖 子:262
专家分:1447
注 册:2016-3-10
  得分:0 
负数可以开奇次方根,不能开偶次方根

vb中,负数变量不能开奇数方根,个人认为可能它是调用的递归函数计算的,所以报错。

如果是1/3,那么带变量的可以如下计算
a = -2
c = Sgn(a) * Abs(a) ^ (1 / 3)
Debug.Print c

[此贴子已经被作者于2018-9-6 15:23编辑过]

2018-09-06 15:13
ZHRXJR
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:74
帖 子:765
专家分:4045
注 册:2016-5-10
  得分:0 
回复 7楼 wmf2014 :
VB 中计算“负数的二分之一次方怎么表示”,与算术中计算“负数的二分之一次方怎么表示”是不一样的
VB 中计算时需要考虑优先级,X = -8 ^ (1 / 2),在计算时首先计算的是 1 / 2 ,那么结果是 X = -8 ^ 0.5,最后得到结果 X = -2.82842712474619(在vb中已经测试)
而不是首先 X = -8 ^ 1,然后再  X = Sqr(-8),而  X = -8 ^ 0.5 是在 VB 中可以计算的。
算术中计算时一般首先 X = -8 ^ 1,然后再  X = Sqr(-8),需要使用平方根的方式计算,因此会出现错误。
由于楼主的问题是 “vb中负数的三分之一次方怎么表示” ,前提是在 VB 中,因此我们讨论的是 VB 中,没有考虑算术计算。
其实你说的也是道理的,而是考虑问题的前提不太一样而已。
在 VB 中,计算负数的幂次方数,首先计算的是幂次方数的表达式,这个表达式的返回值可能是整数、长整数、单精度数、双精度数、字节数,唯一不可能的是分数(VB中没有分数的数据类型),因此是可以计算负数的幂次方数的。
而算术中,计算某负数的幂次方数,无法对小数进行幂次方计算,因此首先将小数转换为一个既约分数,然后首先对它进行分子的幂次方计算,
再进行分母的方根计算,这样如果分母是偶数将不可能计算,因为负数不可能开偶次方,如果分母是奇数,也是可以计算的,因为负数可以开奇次方。

[此贴子已经被作者于2018-9-7 08:07编辑过]

2018-09-07 07:29
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
  得分:5 
沒理解错的话lz说a^(1/3),a<0

无知
2018-09-09 03:17







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052444 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved