0

私の例では Math.PI を使用しているため、double です。これは単純なコードですが、どうすればよいかわかりません。

ユーザーが指定した乗数値を使用して、関数または関数の基本周期を計算するコードがX必要です。値は で初期化され、整数値です。sincosann=1

の結果(2 * pi * n)/a = Xがそれよりも小さい場合pinインクリメントする必要があり、その数が の倍数になるまで継続する必要がある場合はpi、結果を出力します。

明確にするために:関数または次のようなa乗数です:xsincos

cos(ax)

sin(ax)

私が問題を抱えているビットは、数値が の倍数であるかどうかを調べることですpi(それが既に より大きい場合pi)。

これは私が得た限りであり、不完全です。

 public void printSinusoidalPeriod(double multiplier /* this would be `a` */){

    double pi=Math.PI;

    double p = (2 * pi * (double) n) / multiplier;

    while(p<pi){

        if(n%pi==0){

            n=n+1;
            System.out.println(n);
                            p = (2 * pi * (double) n) / multiplier;
        }
    }
    p= (double)Math.round(p * 100) / 100;


    System.out.println("period of function is = " + p + " and n = " + n);
}

if 文に入らず、while ループに巻き込まれてしまっているようです

4

4 に答える 4

1

私があなたを正しく理解しているなら

 while((2 * pi * n)/a)<pi)
    {
        if(!(n%pi==0))
        {
            n++;
            }
    }

y の倍数は、自分で把握する必要がある部分です。しかし、私があなたを正しく理解していれば、これはロジックを理解するのに役立つはずです.

于 2012-07-28T03:45:42.107 に答える
1

あなたはいつ計算しているように見えますか

(2 * pi * n)/a = m * pi where m is some integer multiple.

それで

2 * pi * n = m * pi * a

2 * n = m * a

n = m * a / 2

あなたの他の制約は

(2 * pi * n)/a < pi

それで

2 * pi * n < pi * a
2 * n < a
n < a / 2;

両方の方程式が真であるためには、m は 1 未満の整数でなければなりませんが、n を 1 から開始しているため、真になることはありません。

于 2012-07-28T08:41:38.617 に答える
1

あなたの問題を正しく理解していれば、php を使用する前にこれと同様の問題を解決する必要がありました。javascript の正しい構文はわかりませんが、(x/pi) が pi の倍数であることを示す整数になるまで継続するカウンターを保持する必要があるかもしれません。

これは正しいコードではありませんが、次のようなものです。

    while (!isint(x/pi)) {
    x++;
    }
    if (isint(x/pi)) {
    //CODE TO EXECUTE
    }
于 2012-07-28T03:47:02.323 に答える
0

ここでの提案の助けを借りて、最終的にどのようにそれを行ったかは次のとおりです。

public void printSinusoidalPeriod(double a){

    double pi=Math.PI;
    double p=m*pi;

    while(n<a/2){

        if((double)Math.round((n*pi)%pi)!=0.01){

            n=n+1;

            m = (int) Math.round(((2 * (double) n) / a));
            p= (double)Math.round(m * pi * 100) / 100;
            p=p*n;

        }
    }
    System.out.println("period of function is = " + p + " and n = " + n);
    System.out.println("Check: p/n = " + p/n);
}

ロジックに問題がある場合はお知らせください。私はまだ多くの可能性を経験していませんが、私が行ったものは大丈夫に見えました.

于 2012-07-28T18:50:30.697 に答える