Board logo

标题: [数值计算] [已解决]批处理怎样计算三角函数asin和sqrt? [打印本页]

作者: hkxinghu    时间: 2010-11-6 09:03     标题: [已解决]批处理怎样计算三角函数asin和sqrt?

求助,批处理计算三角函数    主要能计算这两个就行 asin反正弦        SQRT平方根

[ 本帖最后由 hkxinghu 于 2010-11-27 08:53 编辑 ]
作者: hkxinghu    时间: 2010-11-6 10:12

自己顶起 求高手回复啊
作者: qq106942397    时间: 2010-11-6 10:20

asin反正弦        SQRT平方根
是P高手不一定是数学高手呀
作者: vsbat    时间: 2010-11-6 10:26

Impossible

批处理 连小数运算 都不支持-- 更不要说 反正弦 了 ---
作者: hkxinghu    时间: 2010-11-6 14:25

小数运算批处理可以解决啊 希望高手能把这个也给解决掉
作者: broly    时间: 2010-11-6 15:26

粗略的写了一个。原理就在那里,如果你想要达到更具体的目的,自己修改
  1. @echo off
  2. :begin
  3. set/p num=请输入你的角度或者反函数值:
  4. if %num% leq 1 (call :sub2 %num%) else (call :sub1 %num%)
  5. goto begin
  6. :sub1
  7. mshta vbscript:msgbox("sin(%1)="^&sin(%1*3.14159/180)^&chr(13)^&chr(10)^&"cos(%1)="^&cos(%1*3.14159/180))(window.close)
  8. goto :eof
  9. :sub2
  10. mshta vbscript:msgbox("ArcSin(%1)="^&atn(%1/Sqr(1-%1*%1))*180/3.14159)(window.close)
复制代码

作者: Skyfengluo    时间: 2010-11-7 10:56

原帖由 broly 于 2010-11-6 15:26 发表
粗略的写了一个。原理就在那里,如果你想要达到更具体的目的,自己修改
@echo off
:begin
set/p num=请输入你的角度或者反函数值:
if %num% leq 1 (call :sub2 %num%) else (call :sub1 %num%)
goto begin

...
厉害啊。。。不但要对数学理解,还要对DOS深度的理解啊。。。。
作者: hkxinghu    时间: 2010-11-7 11:42     标题: 回复 6楼 的帖子

谢谢高手帮忙   这样计算的结果不能引用吧   我还想在下面的算式中引用这个结果怎么弄啊 还有这是算asin反正弦 还是 SQRT平方根的啊  请指点
作者: broly    时间: 2010-11-7 12:48

这样实现调用结果很麻烦的,还不如直接写一个vbs,而不是批处理
作者: broly    时间: 2010-11-7 12:49

那个是反正弦
作者: hkxinghu    时间: 2010-11-7 13:25     标题: 回复 9楼 的帖子

写VBS能实现也可以的  期待。。。。。。。。。
作者: broly    时间: 2010-11-7 20:26     标题: 回复 11楼 的帖子

你现在是要写批处理还是VBS?写VBS得到的结果,只能在VBS下运用
作者: hkxinghu    时间: 2010-11-7 21:38

想写批处理啊 能引用结果的批处理   要是批处理不能实现 VBS也行  批处理不是能调用VBS吗 不能引用他的结果吗
作者: broly    时间: 2010-11-8 10:03     标题: 回复 13楼 的帖子

好吧,给你写一个类似第三方软件的VBS。
作者: broly    时间: 2010-11-8 10:54

这个VBS保存为calc.vbs,与批处理放一起
  1. dim i,objArgs
  2. set objArgs = Wscript.Arguments
  3. if objArgs(0) <> "." then
  4.   Wscript.echo "sin("& objArgs(0) & ")=" & sin(objArgs(0)*3.14159/180)
  5.   Wscript.echo "cos("& objArgs(0) & ")=" & cos(objArgs(0)*3.14159/180)
  6.   Wscript.echo "tan("& objArgs(0) & ")=" & tan(objArgs(0)*3.14159/180)
  7. end if
  8. if objArgs(1) <> "." then
  9. Wscript.echo "ArcSin("& objArgs(1) & ")=" & atn(objArgs(1)/Sqr(1-objArgs(1)*objArgs(1)))*180/3.14159
  10. end if
  11. if objArgs(2) <> "." then
  12. Wscript.echo "Sqr(" & objArgs(2) & ")=" & Sqr(objArgs(2))
  13. end if
复制代码
在命令行下的用法:
   cscript.exe calc.vbs 角度值 反函数值 开根值                  
  1. cscript.exe calc.vbs 30 0.5 25
复制代码
不求的请用 . 代替。如
  1. cscript.exe calc.vbs 30 0.5 .
复制代码
下面是我写的一个样本批处理,你可以参照修改:
  1. @echo off
  2. echo 输入你的角度和反函数值和求方根的值:
  3. echo 用空格隔开,不求的请用 . 代替。如 30 0.5 25或者 30 . 25
  4. :begin
  5. set /p input=输入:
  6. for /f "tokens=1-3 delims= " %%a in ("%input%") do (
  7.   for /f "skip=2 delims=" %%i in ('cscript.exe calc.vbs %%a %%b %%c') do (
  8.   echo %%i
  9.   )
  10. )
  11. pause>nul&echo\&goto begin
复制代码

[ 本帖最后由 broly 于 2010-11-8 10:56 编辑 ]
作者: hkxinghu    时间: 2010-11-12 21:46

谢谢 辛苦了
作者: defanive    时间: 2010-11-13 04:31

  1. '&echo off&cls 2>nul 3>nul
  2. '&set /p n=Input:
  3. '&for /f %%a in ('cscript /e:vbs /nologo "%~f0" %n%') do set r=%%a
  4. '&echo The Square Root Of %n% Is %r%
  5. '&pause
  6. wscript.echo sqr(wscript.arguments(0))
复制代码

作者: batman    时间: 2010-11-26 01:07

偶然中翻到此贴,个人觉得可以利用批+excel的函数来解决这一问题
作者: batman    时间: 2010-11-26 09:10     标题: 如下示例(保留两位小数):

  1. @echo off
  2. set /p str=请输入要计算的正弦值:
  3. echo =round^(sin^(radians^(%str%^)^),2^)>temp.xls
  4. start temp.xls
复制代码

作者: hkxinghu    时间: 2010-11-27 09:30     标题: 回复 15楼 的帖子

谢谢 这个VBS加批处理很好的计算平方根和反正弦  这两个结果我再下面的计算中还需要引用  怎么引用啊 能不能 set /p 反正弦=ArcSin       %反正弦%          因为我还要对这个计算结果进行加减乘除运算  请指点谢谢
作者: broly    时间: 2010-11-27 20:23     标题: 回复 20楼 的帖子

这个是可以显示结果的批处理。我给你注释一下
  1. @echo off
  2. echo 输入你的角度和反函数值和求方根的值:
  3. echo 用空格隔开,不求的请用 . 代替。如 30 0.5 25或者 30 . 25
  4. :begin
  5. set /p input=输入:
  6. for /f "tokens=1-3 delims= " %%a in ("%input%") do (
  7.   rem 下面这个for 是调用VBS 进行计算
  8.   for /f "skip=2 delims=" %%i in ('cscript.exe calc.vbs %%a %%b %%c') do (
  9.   rem 这个就是显示结果的命令。用echo 把计算的结果显示出来。
  10.   rem 如果你需要调用结果,那个你可以进行变量的赋值。
  11.   rem 比如可以把变量赋值给t : set t=%%i
  12.   rem 这样下面就可以用%t%进行计算了。
  13.   rem 这个只是一个举例,你可以根据自己的需求进行修改。
  14.   echo %%i
  15.   )
  16. )
  17. pause>nul&echo\&goto begin
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2