2016.01.07

2025.03.05

逆三角関数 逆余弦 acos

三角関数イメージ72

はじめに

acos(アークコサイン、逆余弦)とは、cosθの値からθを求めるものです。

	cosθ → θは?

メソッド

Math.acosメソッド

public static double Math.acos( double a )
・引数aで指定した値の逆余弦 (アークコサイン)を返します。

  パラメータ a : 余弦 (コサイン)の値。

  戻り値    aの逆余弦 (アークコサイン)をラジアンで戻す。

メソッド使用時に注意すること

このメソッドを使うときに注意することを書いておきます。

1つ目は、渡す引数範囲は-1.0~1.0であるということです。範囲外の値を引数として渡すとメソッドNaNを戻します。

2つ目は、戻り値角度ラジアン)の範囲は0.0~πであるということです(πはパイ)。ある角度θMath.cosメソッドに代入して得られた値を、Math.acosメソッドに代入するとθ'が得られたとします。その結果は、必ずしもθ=θ'となりません。それは、同じ値のcosを示す角度は、0~2π(360°)の中に1または2つあるからです。cosθ=1のときθ=0(0°)、cosθ=-1のときθ=π(180°)となり、θを1つだけ求めることが出来ますが、それ以外のときはθの候補が2つ存在します。Math.acosメソッド戻り値の範囲を0.0~πとすることでθの候補を1つに絞っています。

以下の図は、cosθcos(360°-θ)が同じになることを示している図で、cosに渡す角度が違ってもcosの値が同じになることが分かります。

acos

以上です。Math.acosメソッドを使うときの参考にしてください。

Javaソースコード

Math.acosメソッドを使ったJavaソースコードを紹介します。

AcosSample.java

001
002
003
004
005
006
007
008
009
010
011
012
public class AcosSample {
	public static void main( String[] args ) {
		// 30°をラジアンに変換
		double rad1 = Math.toRadians( 30.0 ); 
		// 330°をラジアンに変換
		double rad2 = Math.toRadians( 360.0 - 30.0 );

		// 結果の表示
		System.out.println( Math.acos( Math.cos( rad1 ) ) );
		System.out.println( Math.acos( Math.cos( rad2 ) ) );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis AcosSample.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac AcosSample.java

実行

C:\talavax\javasample>java AcosSample

実行結果

0.5235987755982987
0.5235987755982994

出力された2つ値は、30°をラジアンに変換した値とほぼ一致しています。

Javaソースコードの解説

ここからは、このソースコードを上から順番に解説していきます。

001
public class AcosSample {

クラス名を、AcosSampleとしています。

002
	public static void main( String[] args ) {

このmainメソッドからプログラムを実行します。

003
004
		// 30°をラジアンに変換
		double rad1 = Math.toRadians( 30.0 ); 

30°をMath.toRadiansメソッドラジアンに変換し、変数rad1に代入しています。

005
006
		// 330°をラジアンに変換
		double rad2 = Math.toRadians( 360.0 - 30.0 );

150°をMath.toRadiansメソッドラジアンに変換し、変数rad2に代入しています。

Math.toRadiansメソッド

public static double Math.toRadians( double a )
・引数aで指定した角度をラジアンに変換した値を返します。

  パラメータ a : 角度(単位:度)[

  戻り値    ラジアン
008
009
		// 結果の表示
		System.out.println( Math.acos( Math.cos( rad1 ) ) );

Math.cosメソッドにrad1を渡して求めたcosの値を、Math.acosメソッドに渡した結果をコンソール出力しています。

010
		System.out.println( Math.acos( Math.cos( rad2 ) ) );

Math.cosメソッドにrad2を渡して求めたcosの値を、Math.acosメソッドに渡した結果をコンソール出力しています。

Math.cosメソッド

public static double Math.cos( double a )
・引数aで指定した角度の余弦 (コサイン) を返します。

  パラメータ a : ラジアンで指定した角度。

  戻り値    aの余弦

以上です。

逆三角関数に関するコンテンツ

「逆三角関数」に関係があるコンテンツをまとめています。

関連コンテンツ

sin(サイン)の意味と、Math.sinメソッドの使い方をソースコードを使って詳しく解説しています。

2020.03.23

cos(コサイン)の意味と、Math.cosメソッドの使い方をソースコードを使って詳しく解説しています。

2020.03.23

tan(タンジェント)の意味と、Math.tanメソッドの使い方を解説しています。

2020.03.23

逆正弦 asinと、Math.asinメソッドの使い方をソースコードを使って詳しく解説しています。

2016.01.07

逆正接 atanと、Math.atanメソッドの使い方をソースコードを使って詳しく解説しています。

2016.02.21

Math.cosメソッドとMath.sinメソッドを使ってtanθを計算する方法を解説しています。

2024.05.16

Math.sinメソッド、Math.cosメソッドを使わない計算方法を詳しく解説します。

2017.08.09

単位円の意味をくわしく解説しています。

2020.03.23

日本で使われてきた伝統文様「和柄」について解説しています。

2022.07.27

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

プログラムの最初に実行されるメソッドは?

2022.12.13

プログラミングで使う変数って何?

2020.03.23

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

Javaのプログラムを作ってみませんか?プログラミングに必要なものの用意から実行までを説明しています。

2020.03.23

Javaの学習に役立つソースコードを多数紹介しています。是非、ご覧ください。

2022.09.10

Swingパッケージを使ってグラフィック表示を行う方法を解説しています。

2020.03.23

画像フォーマット形式・色・大きさ・傾きなどの変更、特定の図形(文字・記号など)を見つけたり、取り出したりする画像処理について詳しく解説。

2015.11.29

繰り返し処理を使ったJavaのソースコードサンプルを紹介しています。

2020.03.23

配列を使うJavaソースコードを多数紹介しています。

2021.05.18

数学に関係するJavaのメソッドやソースコードなどを紹介しています。

2022.10.25

三角形、台形、円などいろいろな図形の面積を計算するプログラムを紹介しています。詳しくは、記事をご覧ください。

2021.05.18

StringクラスとStringBuilderクラスを利用したプログラミングの仕方を紹介しています。

2016.12.16

Javaを使った簡単な応用プログラム(生年月日から年齢を計算プログラムなど)を紹介しています。

2022.07.07

プログラミング、ITに関する用語をまとめています。

2022.10.17

国際単位系における角度の単位のラジアンについて説明しています。興味のある方は、記事をご覧ください。

2016.01.26

メソッドの定義方法を詳しく解説しています。Javaのサンプルソースコードを使った説明もあります。

2020.03.23

数値として表せない計算結果はどうなる?

2016.02.15

メソッドを抜けるときに使用するreturn文について説明しています。

2020.03.20

円周率、πってどうゆう意味?

2020.03.23

プログラミング言語とは?種類や特徴について説明しています。

2022.08.03

「ゆるゆるプログラム」のコンテンツを紹介しています。興味のある方はこの記事をご覧ください。

2020.03.23

広告