1

java-scriptのプロトタイプを使用して複雑な関数の1つの乗算を作成しました

function ComplexNumber(real,imaginary) {
    this.real = real;
    this.imaginary = imaginary;
}
ComplexNumber.prototype = {
mult: function() {
         var multiplier = arguments[0];
         if(arguments.length != 1)
                multiplier = new ComplexNumber(arguments[0], arguments[1]);
         return new ComplexNumber(this.real * multiplier.real - this.imaginary * multiplier.imaginary,                    
         this.real * multiplier.imaginary + this.imaginary * multiplier.real);             
    },
 toString: function() {
       return this.real + " + " + this.imaginary + "j";
        }
 },
var complexA = new ComplexNumber(5, 8),
complexB = new ComplexNumber(3, 4),
complexSum = complexA.mult(complexB);
console.log(complexSum.toString());

試した複素数の除算を作成する必要がありますが、機能しませんでした...以下は私のdiv関数です:

div : function(){
         var multiplier = arguments[0];
         if(arguments.length != 1)
                multiplier = new ComplexNumber(arguments[0], arguments[1]);

        return new ComplexNumber((this.real * multiplier.real - this.imaginary * multiplier.imaginary,                    
         this.real * multiplier.imaginary + this.imaginary * multiplier.real)/( ((this.real)*(this.real))) +((this.multiplier)*(this.multiplier)));
    },
4

1 に答える 1

1

によると

(a+ib)/(c+id)=(ac+bd+i(bc-ad))/(c^2+d^2)

式、あなたはこれが必要です:

var det = multiplier.real*multiplier.real + multiplier.imaginary * multiplier.imaginary;
return new ComplexNumber(
  (this.real * multiplier.real + this.imaginary * multiplier.imaginary)/det,                    
  (this.imaginary * multiplier.real - this.real * multiplier.imaginary)/det
);
于 2012-06-23T07:08:28.653 に答える