您cin
变量f
的值。 f
可能类似于:
pow(5.957,-X*X*X*X)-cos(X*X) +20*sin(X*X)
或其他一些复杂的数学函数。我也试图直接声明它。
f = pow(5.957,-X*X*X*X)-cos(X*X) +20*sin(X*X);
std::cout << "Bisection method on function, f = " << f << " "<<std::endl;
输出在MinGW和VS2010上:
f = nan
如何让cout在屏幕上打印f?
我宣布了这样的
double F(double X) { double f; f = pow(5.957,-X*X*X*X)-cos(X*X) +20*sin(X*X); return f; }
我基本上是在编写一个C ++程序来执行不同的数值方法来找到函数的根源:bisection,Monte Carlo,Newtwon的方法等。这些工作,但我想在用户输入后向用户显示该函数,它只是显示为NaN。
答案 0 :(得分:2)
从它的外观来看,你试图将f
定义为实际的数学函数(以直接的方式)。这肯定是行不通的。
但是如果你有一个字符串,那么f
将输出一个字符串,忽略数学函数。
请记住,与其他编程语言不同,C ++非常......气质。
您不能将字符分配给int
,反之亦然。但是string
可以保存任何,因为它只是一段文字。
尝试使用getline
...等一下,我就去拿我的书..
编辑:好的。如果您使用getline (cin, foo);
,其中foo
定义为string foo
,并且您包含<string>
,那么这应该有效。那是你的编码最初的样子吗?
Edit2:您仍然可以使用stream
来回转换字符串...但我需要比我更有经验的人来确认。< / p>
答案 1 :(得分:0)
您似乎在寻找代数系统。虽然这些事情可能存在,但它们相当罕见。您必须寻找一个以一般方式处理公式的库,在运行时将文本表示转换为可执行(或可解释)格式。
答案 2 :(得分:0)
X的值是多少?这个数字可能很大,以至于你得到一个过度(或不足)的流量错误,这可以解释为什么你得到NaN。
我建议您打印X并更新问题。