28

最近、虚数を含むいくつかの方程式を使って計算しようとしてiいます。ただし、eorとは異なりπ、 を返すメソッドやネイティブ関数はありませんi。Googleで簡単に検索しても答えが得られませんでした。それを達成する方法についてのアイデアはありますか?

function imaginary(){
    return {
        rational: this,
        imaginary: "2i"  //magic code that does this
    };
};
Number.prototype.imaginary = imaginary;
4

3 に答える 3

23

math.js ライブラリは、複素数、行列などをサポートしています。このライブラリは、JavaScript の組み込みの Math ライブラリと互換性があるため、非常に使いやすいです。

http://mathjs.org

次のようなことができます:

math.i;                         // i
math.sqrt(-4)                   // 2i
var a = math.complex('2 + 3i'); // 2 + 3i
var b = math.complex(4, 5);     // 4 + 5i
math.add(a, b);                 // 6 + 8i
math.multiply(a, b);            // -7 + 22i
math.eval('e^(pi*i) + 1');      // ~0
// etc...

編集: math.js には式パーサーが付属していることに注意してください。これにより、複雑な値や数式を扱うのがより便利になります。

math.eval('(2 + 3i) * (4 + 5i)'); // -7 + 22i
于 2013-05-13T20:50:11.557 に答える
13

虚数成分だけでなく、本当に複素数が必要であると仮定します。

2D ポイント、つまり数値のペアをモデル化するのと同じように、複素数をモデル化します。

点に x 成分と y 成分があるように、複素数には実数成分と虚数成分があります。どちらのコンポーネントも、通常の数値型 (int、float など) でモデル化できます。

ただし、すべての数学演算に対して新しい機能を定義する必要があります。

複素数の足し算と引き算は、点の足し算と引き算と同じように機能します。別々の成分を互いに足し合わせてください。それらを混ぜないでください。例えば:

(3+2i)+(5+4i) = (8+6i)

乗算は、(a+b)*(c+d) = (ac+ad+bc+bd) を乗算するときに代数で学んだのと同じように機能します。

ただし、i*i = -1 であることも覚えておく必要があります。そう:

(a+bi)*(c+di) = (ac+adi+bci+bdii) = (ac-bd) + (ad+bc)i

除算と累乗については、http://en.wikipedia.org/wiki/Complex_numberを参照してください。

于 2013-03-14T02:45:38.803 に答える
6

私は数学の専門家ではありませんが、別の用語で検索しようとすると、異なる結果が得られました。

これらを確認してください:

これがお役に立てば幸いです。

于 2013-03-14T01:06:59.317 に答える