新手有关问题:如何运行后没有结果?
新手问题:怎么运行后没有结果?!
------解决方案--------------------
说明if里面的等式一直没有成立过啊
要解方程最好不要用这种方式,因为很难确定方程解的精度。假如你的解事1.0000001,那么if条件永远不会成立。
如果要用查找的方法,应该用二分法这样的方法而不是每次+0.01这样。
------解决方案--------------------
精度问题。判断是不是解时不要用 x==0, 用 fasb(x)<0.1 之类的。
------解决方案--------------------
仅供参考
- C/C++ code
#include <stdio.h> #include <math.h> int main(void) { double x = 0.0 , y = 0.0; for(x = -1.5; x <= 1.5; x += 0.01) { for(y = -1.5; y <= 1.5; y += 0.01) { if(pow(x * x + y * y - 1, 3) - x * x * x * y * y == 0 ) printf("\nX = %lf, Y = %lf", x, y); } } }
------解决方案--------------------
说明if里面的等式一直没有成立过啊
要解方程最好不要用这种方式,因为很难确定方程解的精度。假如你的解事1.0000001,那么if条件永远不会成立。
如果要用查找的方法,应该用二分法这样的方法而不是每次+0.01这样。
------解决方案--------------------
精度问题。判断是不是解时不要用 x==0, 用 fasb(x)<0.1 之类的。
------解决方案--------------------
仅供参考
- C/C++ code
//用C语言编程,求出2^x=x^10这个方程的解。 #include <math.h> #include <stdio.h> double x,e; void main () { x=-1.0; e=0.001; while (1) { while (1) { if (pow(2.0,x)<pow(x,10.0)) { x+=e; } else { break; } } e/=10.0; if (e<1e-15) break; while (1) { if (pow(2.0,x)>pow(x,10.0)) { x-=e; } else { break; } } e/=10.0; if (e<1e-15) break; } printf("%+.14g\n",x); x=1.0; e=0.001; while (1) { while (1) { if (pow(2.0,x)>pow(x,10.0)) { x+=e; } else { break; } } e/=10.0; if (e<1e-15) break; while (1) { if (pow(2.0,x)<pow(x,10.0)) { x-=e; } else { break; } } e/=10.0; if (e<1e-15) break; } printf("%+.14g\n",x); }
------解决方案--------------------
if(pow(x * x + y * y - 1, 3) - x * x * x * y * y == 0 )
双精度的比较是if (fabs(pow(x * x + y * y - 1, 3) - x * x *x *y *y ) < 1e-6)
双精度的数据比较是他们的差值的绝对值小于1e-6.说明两个数据相等。
------解决方案--------------------