.net column

.NET開発者のためのブログメディア

C#で2乗する方法は?|C#のMathライブラリを紹介!

2020年07月13日

SE
C#で2乗をする方法はありますか?

PM
Mathライブラリを使用することで2乗を処理することができます。

C#で2乗する方法は?

C#で2乗の計算を行うには、C#のMathライブラリを利用します。この記事では、C#で2乗の計算を行う方法と、そのほかに3乗やn乗を行う方法を紹介し、またMathライブラリを用いてほかに出来ることを紹介していきます。

C#で2乗を実践する方法を紹介

実際のソースコードを用いて、C#で2乗する方法を紹介します。環境構築などはされている前提ですが、もしされていない場合は以下のリンクからVisual Studioをインストールし、プロジェクトを作成してください。

Visual Studio

2乗する方法

今回は、SquareTesterというクラスの中で2乗の処理を記述していきます。もしファイル名が違う場合は、C#のコード内のクラス名はそのファイル名に合わせてください。

以下のコードを記述し、実行します。
using System;

public class SquareTester {
static void Main() {
for (int i = 1; i <= 8; i++) {
Console.WriteLine(Math.Pow(i, 2));
}
}
}

[出力] 1
4
9
16
25
36
49
64

やっていることは単純で、xのy乗を返してくれるMath.Pow(double x, double y)関数を用いて2乗の計算を行っています。iに1~8の値をfor文で代入し、第二引数に2を入れているので、1~8の2乗が返ってくる、というわけです。

n乗する方法

次に、2乗以外のプログラムも作ってみましょう。PowTesterというクラスの中でn乗処理を記述していきます。もしファイル名が違う場合は、C#のコード内のクラス名はそのファイル名に合わせてください。

以下のコードを記述し、実行します。
using System;

public class PowTester {
static void Main() {
int x = 2;
Console.WriteLine(Math.Pow(x, 3));
Console.WriteLine(Math.Pow(x, 4));

x = 2;
Console.WriteLine(Math.Pow(x, 0.5));
}
}

[出力] 8
16
1.4142135623731

このように、2の3乗や2の4乗、また4の0.5乗(つまり平方根、ルートをつけること)など、2乗以外の乗数も指定することが出来ます。返り値はdouble型ですので、整数として処理したい場合は気を付けましょう。

活用例 : 二次方程式の解を求める

与えられた数値の乗数を返す、Math.Pow関数の活用例のひとつを紹介します。二次方程式、ax^2 + bx + c = 0について、そのxを求める方法を考えます。

この時、xについて以下の式が成り立ちます。
x = (-b ± √b^2 – 4ac) / 2a
恐らく小・中学校あたりで習った公式かと思いますが、今回はこれをC#で実際に解いてみましょう。

QuadraticSolverというクラスの中で求める処理を記述していきます。もしファイル名が違う場合は、C#のコード内のクラス名はそのファイル名に合わせてください。

以下のコードを記述し、実行します。
using System;

public class Hello{
static double x1(int a, int b, int c) {
double inside_root = Math.Pow(b, 2) – 4 * a * c;
double child = -b + Math.Pow(inside_root, 0.5);
double x = child / (2.0 * a);
return x;
}

static double x2(int a, int b, int c) {
double inside_root = Math.Pow(b, 2) – 4 * a * c;
double child = -b – Math.Pow(inside_root, 0.5);
double x = child / (2.0 * a);
return x;
}

static void Main() {
int a = 1, b = -7, c = 6; // x^2 – 7x + 6 = 0 について解く.
double ans1 = x1(a, b, c);
double ans2 = x2(a, b, c);
Console.WriteLine(“”x = {0}, {1}””, ans1, ans2);
}
}

[出力] x = 6, 1

少々長いプログラムですが、難しいことはしていません。x1関数で分子の±が+のときを、x2関数で分子の±が-のときを処理しています。inside_root変数でrootの内部を計算し、childで分子、xが解を表しています。

このように、算数・数学における複雑な計算もMath.Pow関数を用いることで、C#で書くことが出来るようになります。

Mathクラスとは?便利な関数を紹介!

C#には、Mathクラスというものが実装されています。このライブラリは、様々な数学に関する処理を用意したライブラリのようなクラスで、これを用いて2乗以外にも様々な計算を行うことが出来ます。

ここでは、そんなMathライブラリの便利関数と使用例を紹介していきます。

最大値・最小値

MaxMinTesterというクラスの中で最大値・最小値の処理を記述していきます。もしファイル名が違う場合は、C#のコード内のクラス名は、そのファイル名に合わせてください。

以下のコードを記述し、実行します。
using System;

public class MaxMinTester {
static void Main() {
int[] arr = new int[] {14, 3, 5, 6, 8};
int max = 0, min = 100;
for(int i = 0; i < 5; i++){
max = Math.Max(arr[i], max) ;
min = Math.Min(arr[i], min) ;
}
Console.WriteLine(“”max is {0}, min is {1}””, max, min);
}
}

[出力] max is 14, min is 3

Math.Max関数は二つの引数を比較して大きいほうを、Math.Min関数は二つの引数を比較して小さい方を返します。for文の中でそれぞれmax, min変数に最大値・最小値を保存していくことで、配列の数値の最大値を求めることが出来ます。

int max = 0, min = 100;
としている初期化部分は、maxは「配列のどれかの値よりも小さい数値」、minは「配列のどれかの値よりも大きい数値」でないと最大値・最小値を求められないため、こうのようしています。

例えばmin = 0としてfor文を行ってしまうと、最初に代入した0より小さい値が入ることができません。なので最小値が0と出力されてしまい、正しい結果が得られなくなってしまいます。

三角関数

TriangleTesterというクラスの中で三角関数処理を記述していきます。もしファイル名が違う場合は、C#のコード内のクラス名はそのファイル名に合わせてください。

以下のコードを記述し、実行します。
using System;

public class TriangleTester {
static void Main()
{
double angle1 = 0; // 0度
double angle2 = Math.PI / 2; // 90度

Console.WriteLine(“”Angle1 sin : {0}, cos : {1}, tan : {2}””, Math.Sin(angle1), Math.Cos(angle1), Math.Tan(angle1));
Console.WriteLine(“”Angle2 sin : {0}, cos : {1}, tan : {2}””, Math.Sin(angle2), Math.Cos(angle2), Math.Tan(angle2));
}
}

[出力] Angle1 sin : 0, cos : 1, tan : 0
Angle2 sin : 1, cos : 6.123233995736766E-17, tan : 16331239353195370

この通り、Mathクラスでは三角関数を計算することもできます。Math.PI / 2の精度が完璧ではなかったため、出力ではcos90°が0にならなかったり(ほぼ0ですが)、tan90°が存在していたりしています。

Mathクラスの三角関数の引数は、弧度法でなくラジアンの角度であるため、angle°の三角関数が求めたければ、rad = angle / 180 * Math.PIといった風にラジアンに変換する必要があります。

SE
2乗処理以外にも様々な計算処理ができるのですね。

PM
そうですね。Mathクラスも使用して高度な計算処理を使いこなしていきましょう。

C#の2乗処理を使って高度な計算を!

この記事では、C#のMath.Pow関数を使って2乗処理を行う方法を紹介し、他にもn乗処理や2次方程式の解の公式の実装、またMathクラスに実装されている最大値・最小値処理や三角関数といった便利な処理を紹介しました。これらを用いて、高度な計算処理を記述していきましょう。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)