如何用VB写一个计算反三角函数的程序?
网友解答: 首先,你得明确,VB是一种语言,凡是语言都有一定规范,计算机语言在这方面更严格,语言的基本单位是字词,学习一门语言,你不能想当然认为你学过的东西在新的语言中一定适用。向我们翻
首先,你得明确,VB是一种语言,凡是语言都有一定规范,计算机语言在这方面更严格,语言的基本单位是字词,学习一门语言,你不能想当然认为你学过的东西在新的语言中一定适用。向我们翻词典一样,VB也有自己的词典,其中有内置的函数,你可能在想,VB一定认识“arccos”,但实际上,它的词典中并没有这个词,但这并不意味着我们拿这个问题没办法,VB有很多函数、算法实现这个目的。
对于这个问题,可以用级数的方法,或者找到类似的函数进行转换。相似地,VB自带函数有cos(余弦函数)和atn(反正切),考虑到算法最优,可以选择atn。
下面分析反余弦和反正切的关系。仅从数学上推导,设arccos(x)=y,则x=cosy,1-x²=siny,得到tany=√(1-x²) /x,充分考虑了两个函数的定义域和值域后,关系是个类似分段函数的形式:当-1≤x<0时,arccos(x)=π+atn√(1-x²) /x;当x=0时,arccos(x)=π /2;当0<x≤1时,arccos(x)=π+atn√(1-x²) /x。具体怎么写,到后面介绍函数过程一起带过。
再说说“函数未申明”什么意思。前面说过,VB有自己的语言体系,没看到过的它就不认识,但它也没有这么死板,你可以把新词加入到它的词库,比如说“arccos”,你得让VB认识它,就得介绍它,就要用一大堆话解释它,解释一次,VB就知道了,以后可以直接用了。在你要经常用到“arccos”,给它申明下,写个function过程很有用。
函数申明的语法
[private][public]function bb(a as 数据类型,b as 数据类型……) as 数据类型
……
end function
function arccos(x as double)as string
const pi=3.1415926
if x<-1 or x1 then
arccos="无意义"
else
select case x
case is <0
arccos=str(pi+atn(sqr(1-x^2)/x))
case 0
arccos=str(pi/2)
case else
arccos=str(atn(sqr(1-x^2)/x))
end select
end if
end function
没试过,不知道有什么问题,有兴趣自己慢慢调试。