帮忙把下面c语言程序改为c++语言,程序为用矩形法求fx=1/(1+x^2)在0到1的定积分近似值,求修改成能运行啊

format long
n=100;a=0;b=1;
inum1=0;inum2=0;inum3=0;
syms x fx
fx=1/(1+x^2);
for i=1:n
xj=a+(i-1)*(b-a)/n; %左点
xi=a+i*(b-a)/n; %右点
fxj=subs(fx,'x',xj); %左点值
fxi=subs(fx,'x',xi); %右点值
fxij=subs(fx,'x',(xi+xj)/2); %中点值
inum1=inum1+fxj*(b-a)/n;
inum2=inum2+fxi*(b-a)/n;
inum3=inum3+fxij*(b-a)/n;
end
inum1
inum2
inum3
integrate=int(fx,0,1)
integrate=double(integrate)

fprintf('The relative error between inum1 and real-value is about: %d\n\n',...
abs((inum1-integrate)/integrate))

fprintf('The relative error between inum2 and real-value is about: %d\n\n',...
abs((inum2-integrate)/integrate))

fprintf('The relative error between inum3 and real-value is about: %d\n\n',...
abs((inum3-integrate)/integrate))

附录2:梯形法(fulu2.m)
format long
n=100;a=0;b=1;inum=0;
syms x fx
fx=1/(1+x^2);
for i=1:n
xj=a+(i-1)*(b-a)/n;
xi=a+i*(b-a)/n;
fxj=subs(fx,'x',xj);
fxi=subs(fx,'x',xi);
inum=inum+(fxj+fxi)*(b-a)/(2*n);
end
inum
integrate=int(fx,0,1)
integrate=double(integrate)

fprintf('The relative error between inum and real-value is about: %d\n\n',...
abs((inum-integrate)/integrate))
梯形法不用理他,只需改矩形法的

#include <iostream.h>
#include <cmath>
class tang
{
double a,b,n,x1,x2,x3;
public:
tang(int a,int b,int k);
int calc();
void show();
double f(double x);
};

tang::tang(int i,int j,int k):a(i),b(j),n(k)
{
}

double tang::f(double x)
{
return (1/(1+x*x));
}

int tang::calc()
{
if(a>b)
return -1;
double h=(b-a)/n;
int i;
x1=x2=x3=0;
for(i=0;i<n;i++)
{
x1+=f(a+i*h);
x2+=f(a+(i+0.5)*h);
x3+=f(a+(i+1)*h);
}

x1*=h;
x2*=h;
x3*=h;
return 1;
}

void tang::show()
{
calc();
double ret=atan(b)-atan(a);

cout<<"函数f(x)=1/(1+x*x)"<<endl;
cout<<"积分域为("<<a<<","<<b<<")"<<endl;
cout<<"分割为"<<n<<"个矩形"<<endl;

cout<<"真实结果为"<<ret<<endl;
cout<<"左点计算结果为"<<x1<<",误差为"<<fabs( (x1-ret)/ret )<<endl;
cout<<"中点计算结果为"<<x2<<",误差为"<<fabs( (x2-ret)/ret )<<endl;
cout<<"右点计算结果为"<<x3<<",误差为"<<fabs( (x3-ret)/ret )<<endl;
}

void main()
{
tang t(0,1,10);
t.show();
}追问

能给联系方式么,很需要您的帮忙,qq可以么,可以把qq号发到我邮箱[email protected]

追答

574366563

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-17
看不懂啊
相似回答