« 「平家伝説殺人事件」を読んだ。 | トップページ | 相対論的水素原子のエネルギー準位(Dirac方程式の解)をkeisan.casio.jpにUP! »

2010年5月 7日 (金)

Javascriptで複素数を扱うライブラリ

練習を兼ねて作ってみた。ソースリストは最後のほうにつけてます。使い方は

(作成) a = new Complex(1,1);

(足し算) c = Complex.cadd(a, b);

(引き算) c = Complex.csub(a, b);

(掛け算) c = Complex.cmul(a, b);

(割り算) c = Complex.cdiv(a, b);

(べき乗) c = Complex.cpow(a, b);

(exp)    c = Complex.cexp(a);

(log)     c = Complex.clog(a);

とかでOK。

---------------------

function Complex(x, y) {
    this.x = x;
    this.y = y;

    return this;
}

Complex.cadd = function (a, b) {
    return Complex(a.x+b.x, a.y+b.y);
}

Complex.csub = function (a, b) {
    return Complex(a.x-b.x, a.y-b.y);
}

Complex.cmul = function (a, b) {
    return Complex(a.x*b.x-a.y*b.y, a.x*b.y+a.y*b.x);
}

Complex.cdiv = function (a, b) {
    r2= b.x*b.x + b.y*b.y;
    return Complex((a.x*b.x+a.y*b.y)/r2, (-a.x*b.y+a.y*b.x)/r2);
}

Complex.cconj = function (a) {
    return Complex(a.x, -a.y);
}

Complex.cexp = function (a) {
    return Complex(Math.exp(a.x)*Math.cos(a.y),Math.exp(a.x)*Math.sin(a.y));

}

Complex.clog = function (a) {
    r2= a.x*a.x + a.y*a.y;
    return Complex(0.5*Math.log(r2), Math.atan2(a.y,a.x));
}

Complex.cpow = function (a, b) {
    return Complex.cexp(Complex.cmul(Complex.clog(a),b));
}

function cabs(a) {
    return Math.sqrt(a.x*a.x+a.y*a.y);
}

function carg(a) {
    return Math.atan2(a.y,a.x);
}

« 「平家伝説殺人事件」を読んだ。 | トップページ | 相対論的水素原子のエネルギー準位(Dirac方程式の解)をkeisan.casio.jpにUP! »

パソコン・インターネット」カテゴリの記事

学問・資格」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/512682/48201023

この記事へのトラックバック一覧です: Javascriptで複素数を扱うライブラリ:

« 「平家伝説殺人事件」を読んだ。 | トップページ | 相対論的水素原子のエネルギー準位(Dirac方程式の解)をkeisan.casio.jpにUP! »

2018年4月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
フォト
無料ブログはココログ