新手有关问题:如何运行后没有结果?

新手问题:怎么运行后没有结果?!C/C++ code#include stdio.h#include math.hint main(void){double x

新手问题:怎么运行后没有结果?!

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.说明两个数据相等。
[解决办法]
探讨

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.说明两个数据相等。