資源描述:
《數(shù)值分析-源代碼》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、一,三次樣條插值#include#includevoidready(double*&A,double*&B,double*h,double*y,intm,intn,doublem0=0,doublemn=0){A=newdouble[n];B=newdouble[n];if(m==2){A[0]=0;B[0]=2*m0;A[n]=1;B[n]=2*mn;}else{A[0]=1;B[0]=3*(y[1]-y[0])/h[0];A[n]=0;B[n]=3*(y[n]-y[n-1])/h[n-1];}for(inti=1;i2、+){A[i]=h[i-1]/(h[i-1]+h[i]);B[i]=3*((1-A[i])*(y[i]-y[i-1])/h[i-1]+A[i]*(y[i+1]-y[i])/h[i]);}}voidcalculate1(double*&a,double*&b,double*A,double*B,intn){a=newdouble[n];b=newdouble[n];a[0]=-A[0]/2;b[0]=B[0]/2;for(inti=1;i<=n;i++){a[i]=-A[i]/(2+(1-A[i])*a[i-1]);b[i]=(B[i]-(1-A[i])*b[i-1])/(2
3、+(1-A[i])*a[i-1]);}}voidcalculate2(double*&m,double*a,double*b,intn){m=newdouble[n+1];m[n+1]=0;for(inti=n;i>=0;i--)m[i]=m[i+1]*a[i]+b[i];}voidmain(){inte,t,w,v;out:cout<<"求三次樣條插值函數(shù):"<>e;double*x,*y,*h,*A,*B,*a,*b,*m,s0,sn,u,s;cout<<"請輸入x的一系列值:"<4、double[e];for(inti=0;i>x[i];cout<<"請輸入y的一系列值:"<>y[f];h=newdouble[e];for(intd=0;d>t;if(t!=1&&t!=2){cout<<"輸入信息錯(cuò)誤!請重新輸入!"<<
5、endl;gotoloop;}if(t==1)ready(A,B,h,y,t,e);else{cout<<"請輸入s'(x0),s'(xn)的值:"<>s0>>sn;ready(A,B,h,y,t,e,s0,sn);}calculate1(a,b,A,B,e);calculate2(m,a,b,e);in:cout<<"請輸入所需要計(jì)算的x的值:("<>u;if(u6、
7、u>x[e-1]){cout<<"輸入數(shù)據(jù)錯(cuò)誤!"<8、e;c++){if(u>x[c]&&u9、(u-x[w])*(u-x[w])/((x[w+1]-x[w])*(x[w+1]-x[w])))*m[w+1];cout<<"f("<>v;if(v!=1&&v!=2){cout<<"輸入錯(cuò)誤!請重新輸入!"<