计算方法上机实验报告
上课时间:2014-2015学年秋学期,6~14周
一.拉格朗日插值------------------------------------------------------1
二.牛顿插值------------------------------------------------------------3
三.改进欧拉法---------------------------------------------------------5
四.四阶龙格-库塔-----------------------------------------------------7
五.牛顿迭代------------------------------------------------------------9
六.复化Simpson公式------------------------------------------------11
七.Romberg算法------------------------------------------------------14
八. Seidel迭代法------------------------------------------------------17
九. Gauss列主元消去法----------------------------------------------20
一.拉格朗日插值 1.程序代码
#include
int i=0;
double a[10],b[10],L,L1,L2,L3,L4,x; cout<<\
for(i=0;i<4;i++) {
cin>>a[i]; }
cout<<\ for(i=0;i<4;i++) {
cin>>b[i]; }
cout<<\ cin>>x;
L1=(x-a[1])*(x-a[2])*(x-a[3])*b[0]/(a[0]-a[1])/(a[0]-a[2])/(a[0]-a[3]);
L2=(x-a[0])*(x-a[2])*(x-a[3])*b[1]/(a[1]-a[0])/(a[1]-a[2])/(a[1]-a[3]);
L3=(x-a[0])*(x-a[1])*(x-a[3])*b[2]/(a[2]-a[0])/(a[2]-a[1])/(a[2]-a[3]);
L4=(x-a[0])*(x-a[1])*(x-a[2])*b[3]/(a[3]-a[0])/(a[3]-a[1])/(a[3]-a[2]);
L=L1+L2+L3+L4; cout<<\}
void main() {
Lagrange(); cout< } 2.例子 3.运行结果 二.牛顿插值 1.程序代码 #include int n,i,j; double A[50][50],*x,*y; cout<<\请输入插值节点数:\ cin>>n; x=new double[n]; y=new double[n]; cout<<\请输入这\个插值节点(xi,yi):\ for(i=0;i<=n-1;i++) cin>>x[i]>>y[i]; double K=1,xx,N=0,P; for(i=0;i<=n-1;i++) { A[i][0]=x[i]; A[i][1]=y[i]; } for(j=2;j<=n;j++) for(i=1;i<=n-1;i++) { A[i][j]=(A[i][j-1]-A[i-1][j-1])/(A[i][0]-A[i-j+1][0]); } for(i=0;i<=n-1;i++) cout<<\输出第\阶差商为:\ cout<<\请输入预求值x=\ cin>>xx; for(i=0;i K*=xx-x[i]; N+=A[i+1][i+2]*K; P=A[0][1]+N; } cout<<\插值结果为:y=\ getch(); }