读书人

大神帮忙看上这个解方程代码哪错了

发布时间: 2012-12-30 10:43:15 作者: rapoo

大神帮忙看下这个解方程代码哪错了?
用牛顿迭代法做的

float spow(float oper,int p)
{
float product=1;
if(p>0)
{
while(p)
{
product*=oper;
p--;
}
return product;
}
else if(p=0)
return 1;
else
{
while(p)
{
product*=oper;
p--;
}
return 1/product;
}
}

int main()
{
float co[10];
int npow[10];
int n,i;
float f0,f1,x0,x1,res;
cout<<"多项式项数"<<endl;
cin>>n;
cout<<"根附近的数:";
cin>>x0;
x1=x0;
for(i=0;i<n;i++)
{
cout<<"输入第"<<i+1<<"项系数:";
cin>>co[i];
cout<<"输入第"<<i+1<<"项系数:";
cin>>npow[i];
}
do
{
for(i=0,f0=0;i<n;i++) f0+=co[i]*spow(x0,npow[i]);
for(i=0,f1=0;i<n;i++) f1+=co[i]*npow[i]*spow(x0,npow[i]-1);
x1=x0-f0/f1;


for(i=0,res=0;i<n;i++) res+=co[i]*spow(x1,npow[i]);
x0=x1;
}while(res*res>=0.0001);
cout<<"近似结果:"<<x1<<endl;
return 0;
}

[解决办法]
多给一些信息出来,比如思路,还是觉得哪个地方有什么不妥。
[解决办法]
将所有float改为double
单步调试或设断点调试。
[解决办法]
gdb设断点调试下

读书人网 >C语言

热点推荐