资源描述:
《nbsp;(8)改进欧拉法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
(8)改进欧拉法#include#include#define f(x,y) (x)-(y)+1main(){int k,n; float a,b,h,y0,x,y,t[2]; scanf("%f,%f,%f,%d",&a,&b,&y0,&n); h=(b-a)/n; x=a;y=y0; printf("%f,%f",x,y); k=1; do{t[0]=y+h*f(x,y); x=x+h; t[1]=y+h*f(x,t[0]); y=(t[0]+t[1])/2; printf("%f,%f",x,y); k++; }while(k<=n);} (9)高斯消去法#include#includemain(){float a[10][10],b[10],m[10][10],x[10],sum; int i,j,k,n; printf("the top exp:"); scanf("%d",&n); printf(""); for(i=0;i=0;i--) {sum=0; for(j=i+1;j#includefloat f(float x){float y; y=sqrt(10/(4+x)); return y;}main(){float x0,x1,a; int k,N; k=0; scanf("%f,%f,%d",&x0,&a,&N); for(k=0;k=N) {printf("error"); }} (11)列主元元素消元#include#includemain(){float a[10][10],b[10],s,t,e,sum; int i,j,k,n,m; printf("The top exp is "); scanf("%d",&n); for(i=0;i=0;i--) {sum=0; for(k=i+1;k#include#define f(x) 4/(1+(x)*(x))float g(int k){int i,total; total=1; for(i=1;i<=k;i++) total*=2; return total;}main(){int k0,k1,k,tag,i; float a,b,e,e1,t[50],s[50],c[50],r[50],sum; scanf("%f,%f,%f,%d,%d",&a,&b,&e,&k0,&k1); t[0]=(b-a)*(f(0)+f(1))/2; k=1; tag=0; do{if(k==1) {t[1]=t[0]/2+(b-a)*f(a+(b-a)/2)/2; s[0]=(4*t[1]-t[0])/3; } if(k==2) {t[2]=t[1]/2+(b-a)*(f(a+(b-a)/4)+f(a+3*(b-a)/4))/4; s[1]=(4*t[2]-t[1])/3; c[0]=(16*s[1]-s[0])/15; } if(k>=3) {sum=0; for(i=1;i<=g(k-1);i++) sum+=f(a+(2*i-1)*(b-a)/g(k)); t[k]=t[k-1]/2+(b-a)*sum/g(k); s[k-1]=(4*t[k]-t[k-1])/3; c[k-2]=(16*s[k-1]-s[k-2])/15; r[k-3]=(64*c[k-2]-c[k-3])/63; } if(k>=k1) {e1=fabs(r[k-3]-r[k-4]); if(e1=k0) printf("error!");} (13)龙格库塔方法#include#include#define f(x,y) (x)-(y)+1main(){int n,k; float a,b,y0,h,x,y,t[4]; scanf("%f,%f,%f,%d",&a,&b,&y0,&n); h=(b-a)/n; x=a;y=y0; printf("%f,%f",x,y); k=1; do{t[0]=f(x,y); x=x+h/2; t[1]=f(x,y+h*t[0]/2); t[2]=f(x,y+h*t[1]/2); x=x+h/2; t[3]=f(x,y+h*t[2]); y=y+h*(t[0]+2*t[1]+2*t[2]+t[3])/6; printf("%f,%f",x,y); k++; }while(k<=n);} (14)牛顿插值多项式#include#includemain(){int i,j,k,n; float x[10],y[10],a,b,p; printf("input n"); scanf("%d",&n); printf("input X"); for(i=0;i<=n;i++) scanf("%f",&x[i]); printf("input Y"); for(i=0;i<=n;i++) scanf("%f",&y[i]); printf("input x"); scanf("%f",&a); b=0; k=0; do{p=1; j=0; do {if(j!=k) p=p*(a-x[j])/(x[k]-x[j]); j++; }while(j