2016-04-27 6 views
-2

なぜ私は1.0より上の値を取得していますか?なぜ私の方程式が間違った結果を出すのですか?

このグラフを実装しようとしている:

enter image description here

を私がこのようにそれを置くとき、それぞれy = (1/3)x + 1またはy = (-1/3)x + 1で両方のライン/\の簡単な数学の方程式を提供するために、thisサイトを使用します:

for (int i = 0; i < 50; i++) 
{ 
    input = GenerateRandom(-3.0, 3.0); // this function works fine 
    output = FuzzyFunction(input); // get crisp outputs 
    std::cout << "input: " << input << " - output: " << output << " \n"; 
} 

// stuff  

double FuzzyFunction(double inputVal) 
{ 
    outputVal = (1.0/3) * inputVal + 1; 
    return outputVal; 
} 

出力は次のようになります。

enter image description here

+0

あなたは、いくつかの予想される出力例を含むことはできますか? –

+2

正の数のPLUS ONEが1つよりも少ないと思われるのはなぜですか? –

+2

この機能は、あなたが話したことを正確に実行しています。最初の行を見ると、 'input = 2.74548'です。これに '1.0/3'を掛けてから' + 1'を実行すると '1.91516'が得られます。 '1.91516'を得たくない場合は、関数内で別の入力または別の方程式を使用する必要があります。 –

答えて

0

私はひどい論理ミスを犯しました。私は私のFuzzyFunction()でこれを必要:

if(inputVal<0) 
    outputVal = (1.0/5) * inputVal + 1; 
else if (inputVal > 0) 
    outputVal = (-1.0/5) * inputVal + 1; 
else 
    outputVal = 0; 

正しい出力:

enter image description here

0

を正の入力に対する傾きは負でなければなりません:

double FuzzyFunction(double inputVal) 
{ 
    if (inputVal < 0) 
     outputVal = (1.0/3) * inputVal + 1; 
    else 
     outputVal = (-1.0/3) * inputVal + 1; 
    return outputVal; 
} 
関連する問題