用shell scripts計算反三角函數 - Linux

Table of Contents

我現在寫一個腳本 想要算出反三角函數的值

我有一個資料檔data裡面有我的數據

如下

#!/bin/bash

cat data |awk '
NR>=1{
b = acos($1)
x = 2*b*cos($3*0.01745)*sin($1/2*0.01745)/sin(b*0.01745)
y = b*sin($3*0.01745)/sin(b*0.01745)
printf"%8.6f, %1s, %8.6f\n" ,x, $2, y}'$dataname-input

現在就是b = 那個地方

無論我用acos還是arccos 好像都沒辦法算出反三角數

完全沒頭緒..有甚麼辦法可以去計算反三角函數嗎?

終點機顯示:

awk: cmd. line:2: (FILENAME=- FNR=1) fatal: function `acos' not defined

如果是這樣 是要我自己定義acos的意思嗎?

要怎麼去定義??

跪求相關想法 麻煩了

解答:

我查詢了awk的功能 發現他只有支援arctan 寫成atan2(y,x)

先找出cos(a)=b 因為我們已經有b值
已經知道cos(a)=b/1(斜邊分之臨邊) 表示對邊邊就是sqrt(1-b^2)

這樣可以找出sqrt的值以後 對邊跟b在用atan2即可以找出a角度為多少

很感謝大家的解答 雖然有看沒有懂 囧

補上自己比較笨的作法 希望可以幫助到有需要的人


--

All Comments

Zora avatarZora2010-08-09
你要定義 acos cos sin是什麼東西不是用數學軟體會不認得
Olivia avatarOlivia2010-08-09
pi=`bc -l <<< "a(1.0)*4"`
Jack avatarJack2010-08-11
s(rad)=>sine;c(rad)=>cosine;angle should be a radians
Christine avatarChristine2010-08-11
You should be man bc also
Rosalind avatarRosalind2010-08-15
如果沒有限制使用工具.可以考慮用octave.
http://www.gnu.org/software/octave/
Regina avatarRegina2010-08-17
如果沒記錯. octave應該可以用來計算三角函數.
Hedwig avatarHedwig2010-08-21
sin cos 這些對 octave 來說超小兒科吧XD 它的目標是matlab
Isabella avatarIsabella2010-08-22
這種事 wcalc就可以了... 134kb 的小東西