我无法通过公式让这个程序评估一系列值。
范围=( - 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;
}
答案 0 :(得分:3)
当x
为-3
时,或者一般为负数时,您正在尝试计算sqrt(3*(pow(x,3))
,它是负数的平方根。这就是为什么你得到奇怪的结果。使用pow
对计算整数幂并不是非常有效。但对于小型节目而言,这可能无关紧要。
附录:正如Nawaz在评论中指出的那样,请每次在循环中重新评估y,否则你只能获得y的初始值。
答案 1 :(得分:2)
您需要在循环中计算y
,而不只是一次。
正如@simonc评论的那样 - 需要为每个x
答案 2 :(得分:0)
您只计算x = -3的公式,对于该值,您试图得到负数的平方根。在循环内移动y的计算。