Report8 simpson Romberg trapezoid 2011, Feb 05 #include <stdio.h> #include <math.h></p> float Tarr[100]={0,}; float Sarr[100]={0,}; float Carr[100]={0,}; float Darr[100]={0,}; float function(float x); void trapezoid(); void simpson(); void Romberg(); float e; float l=3; float start = -1; float end = 2; int index = 0; int main() { printf("upsilon? : "); scanf("%f",&e); trapezoid(); simpson(); Romberg(); printf(" Ti // Si // Ci // Di \n" ); for(int z =0 ; z<index ; z++) { printf("%d >> %f // %f // %f // %f\n",z,Tarr[z],Sarr[z],Carr[z],Darr[z] ); } } void simpson() { for(int i=0;;i++) { if(Tarr[i+1]==0) break; else { Sarr[i] = (4*Tarr[i+1]-Tarr[i] )/3; } } } void Romberg() { for(int i=0;;i++) { if(Sarr[i+1]==0) break; else { Carr[i] = (pow((float)4,2)*Sarr[i+1]-Sarr[i] )/(pow((float)4,2)-1); } } for(int i=0;;i++) { if(Carr[i+1]==0) break; else { Darr[i] = (pow((float)4,3)*Carr[i+1]-Carr[i] )/(pow((float)4,3)-1); } } } void trapezoid() { Tarr[0] = (function(start)+function(end))/2; for(int i=1;;i++) { float temp=0; int Max_index = pow((float)2,(float)i); int Max_indexd2 = pow((float)2,(float)i-1); for(int j=0; j< Max_indexd2 ;j++) { temp += function( (start + ((end-start)/(Max_index))*(2*j+1)) ); //printf("%d ",2*j+1); } temp= temp*l/Max_indexd2; //printf("$$%f %d\n ",temp,Max_index); temp = Tarr[i-1]+temp; temp = temp/2; Tarr[i]=temp; index = i; float temp1 =abs(Tarr[i]-Tarr[i-1]); if(temp1<e) break; } } float function(float x) { return 3*pow(x,3)-2*pow(x,2)+x-1; } </textarea> </div> Please enable JavaScript to view the comments powered by Disqus.