七.Romberg算法 1.程序代码(C++代码)
#include
using namespace std;
#define f(x) (4/(1+x*x)) #define epsilon 0.0001 #define MAXREPT 10
double Romberg(double aa,double bb) { int m,n; double h,x; double s,q; double ep;
double *y =new double[MAXREPT]; double p; h=bb-aa;
y[0]=h*(f(aa)+f(bb))/2.0; m=1; n=1;
ep=epsilon+1.0;
while((ep>=epsilon)&&(m for(int i=0;i p=(y[0] + h*p)/2.0; s=1.0; for(int k=1;k<=m;k++) { s=4.0*s; q=(s*p-y[k-1])/(s-1.0); y[k-1]=p; p=q; } p=fabs(q-y[m-1]); m=m+1; y[m-1]=q; n=n+n;h=h/2.0; } return (q); } int main() {double a,b; cout<<\积分,请输入积分范围a,b:\ cin>>a>>b; cout<<\积分结果:\ system(\ return 0; } 2.例子(I??1?014x2dx) 3.运行结果 八.Seidel迭代法 1.程序代码(C++代码) # include float a[3][3]={{10,-1,-2},{-1,10,-2},{-1,-1,5}}; float b[3]={7.2,8.3,4.2}; float x[3]={0,0,0}; float y[3]; float S(int m) {int n; float S=0; float y; for(n=0;n<3;n++) {if(m==n){} else {S+=a[m][n]*x[n]; } }y=(b[m]-S)/a[m][m]; return y; } void main() {int i; int F,T=1,k=1; do {F=0; if(T) {T=0;} else {k++; for(i=0;i<3;i++) {x[i]=y[i]; } } for(i=0;i<3;i++) {y[i]=S(i); } for(i=0;i<3;i++) {if(fabs(x[i]-y[i])>EPS) {F=1; } }printf(\ }while(((F==1)&&k!=max)); printf(\迭代次数:%d\\n\ for(i=0;i<3;i++) {printf(\} } ?10x1?x2?2x3?7.22.例子(???x1?10x2?2x3?8.3) ??x1?x2?5x3?4.2?