ユーザーに任意の数値 (通常は大きな数値) を要求し、それを変数 "mu" に格納するプログラムがあります。次に、ユーザーに 4 つの重要な値を入力するように求めます。作成しようとしている式は、単純に 4 つの重要な値を取り、それらを w、x、y、および z に設定します。私が持っている式はそのようなものです。ムー = w^a * x^b * y^c * z^d. ここで、a、b、c、d はこれらの可能な 17 の値 {{-5、-4、-3、-2、-1、-1/2、-1/3、-1/4、0、1 のいずれかです。 /4、1/3、1/2、1、2、3、4、5}。プログラムのポイントは、選択された各指数が mu に最も近い値になるまで、考えられる各値を調べることです。たとえば、ユーザーが mu を 200,000 と入力し、w、x、y、z の入力が 45,180,402,110 であるとします。次に、プログラムの仕事は、45^a * 180 ^b * 402^c * 110^d が mu または 200,000 に最も近くなるように、どの値を指数として設定するかを推測することです。今、whileループを使用してこれを機能させようとしていますが、私のプログラムは正しい推測を選択していないようです。(編集して比較する別のエラーを追加しましたが、正しいとは思いません)
これまでの私のコードは次のとおりです。
double[] Guess = { -5, -4, -3, -2, -1, -1.0 / 2, -1 / 3, -1.0 / 4.0, 0,
1.0 / 4.0, 1.0 / 3.0, 1.0 / 2.0, 1, 2, 3, 4, 5 };
int a = 0;
int b = 0;
int c = 0;
int d = 0;
double er = 0.0;
out.print("Enter a value for mu:");
double mu = in.nextDouble();
double er1 = Math.abs((mu-mu)/mu);
out.print("Enter your first favorite positive value:");
double w = in.nextDouble();
out.print("Enter your second favorite positive value:");
double x = in.nextDouble();
out.print("Enter your third favorite positive value:");
double y = in.nextDouble();
out.print("Enter your fourth favorite positive value:");
double z = in.nextDouble();
while (a < Guess.length) {
double W = Math.pow(w, Guess[a]);
while (b < Guess.length) {
double X = Math.pow(x, Guess[b]);
while (c < Guess.length) {
double Y = Math.pow(y, Guess[c]);
while (d < Guess.length) {
double Z = Math.pow(z, Guess[d]);
er = ((W * X * Y * Z) - mu) / mu; //calculates percent error
if (er < 0)
{
er = er1 * -1;
}
if (er < er1){
er1 = er;
}
d++;
}
d = 0;
c++;
}
c = 0;
b++;
}
b = 0;
a++;
}
out.print("error = " + er);
私が間違っている可能性があること、または追加する必要がある可能性があることについて、誰かが洞察を持っていますか? 助けてくれてありがとう!while ループで正しい数値が得られることはわかっていますが、a、b、c、d またはパーセント エラーを正しく設定していないと思います。
編集 = 取得するエラー値は非常に大きいです。莫大な価値。