请帮我看看这个程序,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/23 17:26:41
#include "iostream.h"
#include "fstream.h"
#include "math.h"

double Tn,T2n;
double error=10000;
int n,x;

double f(double x)
{if (0<=x<0.05)
{return x*x-pow(x,4)/12+pow(x,6)/240;}

else if (0.05<=x<=20)
{return pow(x,4)*exp(x)/(exp(x)-1)*(exp(x)-1);}
}

double integrate(int n)
{
double h=x/double(n);
double I=0;
double xi;
for(int i=0;i<n;i++)
{
xi=0+h*i;
I=I+2*(f(xi))+4*(f(xi+h/2));
}
return I*h/6;
}
double f01()
{
int n=1;
Tn=integrate(n);
int cnt=0;

while(error>0.000001||error<-0.000001)
{
T2n=integrate(2*n);
error=T2n-Tn;
Tn=T2n;
cnt++;

因为我不知道你这个程序到底要实现什么,我只改了你的几个问题,具体程序还得你自己调试一下结果对不对。
你运行程序没看到有几个警告吗,找到然后改了就可以运行了,但是你这个程序计算量有点大(可能你的参数设置有些问题,或者是进入死循环了),运行比较慢,你输入一个数字后等几秒才能见反应...
我不得不给你提一点哈,你的程序只有你自己看得轻松,因为没什么注释。而且没什么结构,比如:
double f(double x)
{
if (0<=x&&x<0.05) //0<=x<=0.05改为0<=x&&x<0.05
{
return x*x-pow(x,4)/12+pow(x,6)/240;
}
else if (x>=0.05&&x<=20)
{
return pow(x,4)*exp(x)/(exp(x)-1)*(exp(x)-1);
}
else return 0;
}
这样一个函数的结构就很明显了,一眼就看出来了这是一个函数...
有一个0<=x<=20;这个计算机是识别不了的,只能写成x>=0&&x<=20
哦,对了,你先输入0或1,它反应就比较快,但你输其它的,它就得运行很久。
你不信你输一个20然后打开任务管理器看看你的cpu使用是多少...
祝你好运!你最好把题目说一下,才知道你要干什么啊
#include "iostream.h"
#include "fstream.h"
#include "math.h"

double Tn,T2n;
double error=10000;
int n,x;

double f(double x)
{if (0<=x&&x<0.05) //0<=x<=0.05改为0<=x&&x<0.05
{return x