-4

このプログラムで数式を使用して値の範囲を評価するのに問題があります。

範囲 = (-3.0,4.0) 数式 = (9(x^3)-27(x^2)-4x+12) / (sqrt(3(x^2)+1) + abs(5-(x^ 4)))

プログラムは、y as -1.IND

なぜすべての y が出てくるのかを明らかにするための助けをいただければ幸い-1.INDです。

ありがとう、デイブ

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    cout << "This program outputs formula results\n";
    long double x = -3.0;
    long double y = 1.0;
    long double a = (9*(pow(x,3))-27*(pow(x,2))-4*x+12);
    long double b = (sqrt(3*(pow(x,2))+1) + abs(5-(pow(x,4))));
    y = a/b;

        for(;x <4.5; x=x+.5){
            cout << "X = " << x << ", " << "Y = " << y;
        if(y==0)
            cout << "Y IS ZERO" << endl;
        else if(y<0)
            cout << "Y IS NEGATIVE" << endl;
        else if(y>0)
            cout << "Y IS POSITIVE\n" << endl;
        }
    return 0;
}
4

3 に答える 3

3

xis 、または一般に負の場合、どれが負の数の平方根であるか-3を計算しようとしています。sqrt(3*(pow(x,3))そのため、奇妙な結果が得られます。を使用powすると、整数の累乗を計算するのにあまり効率的ではありません。ただし、小さなプログラムの場合は問題にならない場合があります。

補遺: Nawaz がコメントで指摘しているように、ループ内で毎回 y を再評価してください。そうしないと、最初の x に対してのみ y が取得されます。

于 2013-01-25T08:11:26.723 に答える
2

y一度だけではなく、ループで計算する必要があります。

@simoncがコメントしたように-方程式全体をそれぞれについて再計算する必要がありますx

于 2013-01-25T08:12:41.933 に答える
0

x = -3 に対してのみ式を計算しており、その値に対して負の数の平方根を取得しようとしています。y の計算をループ内に移動します。

于 2013-01-25T08:14:57.563 に答える