计算方法报告.docx

上传人:b****6 文档编号:7258462 上传时间:2023-01-22 格式:DOCX 页数:8 大小:22.35KB
下载 相关 举报
计算方法报告.docx_第1页
第1页 / 共8页
计算方法报告.docx_第2页
第2页 / 共8页
计算方法报告.docx_第3页
第3页 / 共8页
计算方法报告.docx_第4页
第4页 / 共8页
计算方法报告.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

计算方法报告.docx

《计算方法报告.docx》由会员分享,可在线阅读,更多相关《计算方法报告.docx(8页珍藏版)》请在冰豆网上搜索。

计算方法报告.docx

计算方法报告

南昌航空大学实验报告

2011年6月20日

课程名称:

计算方法实验名称:

拉格朗日插值法

班级:

09041326姓名:

孙建伟同组人:

指导教师评定:

签名:

一、实验目的

1.了解拉格朗日插值法,掌握线性插值和抛物插值。

2.通过用C语言编制程序实现线性插值和抛物插值。

3.了解对于低阶插值,当插值节点增加时,所求得的

近似值精度有所提高。

二、实验内容与要求

已知

分别按下列要求用C语言编程求

的近似值,要求结果保留到小数点后四位。

三、实验源程序代码

#include

#include

#include

voidmain()

{

//lagrange插值//

double*xi,*yi,x,y;//xi,yi为插值节点,x为//插值点;

南昌航空大学实验报告

2011年6月20日

课程名称:

计算方法实验名称:

拉格朗日插值法

班级:

09041326姓名:

孙建伟同组人:

指导教师评定:

签名:

intn;//n为插值区间数量;

inti,j,k;

doubleP;

y=0.0;

printf("请输入插值区间数量(n=):

\n");

scanf("%d",&n);

xi=(double*)malloc((n+1)*sizeof(double));

yi=(double*)malloc((n+1)*sizeof(double));

printf("请输入节点xi值:

\n");

for(i=0;i<=n;i++)

{printf("xi[%d]:

",i);

scanf("%lf",(xi+i));

printf("yi[%d]:

",i);

scanf("%lf",(yi+i));

printf("\n");}

printf("请输入插值点值:

\n");

南昌航空大学实验报告

2011年6月20日

课程名称:

计算方法实验名称:

拉格朗日插值法

班级:

09041326姓名:

孙建伟同组人:

指导教师评定:

签名:

printf("x=");

scanf("%lf",&x);printf("\n");//下面实现插值功能

for(k=0;k<=n;k++){

P=1.0;

for(j=0;j<=n;j++)

{

if(k!

=j)P*=(x-*(xi+j))/(*(xi+k)-*(xi+j));

}

y+=P*(*(yi+k));}

printf("插值点x上的值为(y=):

%lf",y);

free(xi);free(yi);

getche();

}

四、实验小结

通过本次实验,加强了对拉格朗日插值法的了解,也明白了拉格朗日的插值的C语言的编程算法,同时了解和加深了对C语言在工程数学上的运用和理解。

南昌航空大学实验报告

2011年6月20日

课程名称:

计算方法实验名称:

曲线拟合的最小二乘法

班级:

09041326姓名:

孙建伟同组人:

指导教师评定:

签名:

一、实验目的

1.了解最小二乘法,掌握最小二乘法求解曲线的拟合数据。

2.通过用C语言编制程序实现最小二乘法求解多项式曲线的拟合数据。

二、实验内容与要求

设有一组实验数据(x:

y:

)[i=1,2,3,...,n]要用最小二乘法求一个几次多项式曲线

来拟合这组数据。

三、实验源程序代码

#include

#defineM20

main()

{inti,j,k,m,t;

doublea[M][M],b[M],c[M][M],d[M][M],x[M],y[M],z[M][M],w[M];

//a[M][M]存放法方程的系数,b[M]右端向量,c[M][M]存放中间矩阵c,d[M][M]存放转置矩阵c,//x[M]存放了输入的x值,z[M][M]存放的为确定拟合次数后的增广矩阵,w[M]存所求方程系数即结果

printf("\nInputthevalueofm:

");//m为给出x的数据个数

scanf("%d",&m);

南昌航空大学实验报告

2011年6月20日

课程名称:

计算方法实验名称:

曲线拟合的最小二乘法

班级:

09041326姓名:

孙建伟同组人:

指导教师评定:

签名:

for(i=1;i<=m;i++)

{x[i]=0;y[i]=0;b[i]=0;w[i]=0;

for(j=1;j<=m;j++){a[i][j]=0;c[i][j]=0;d[i][j]=0;}

}

for(i=1;i<=m;i++)

{printf("\n输入矩阵x[%d]:

",i);

scanf("%lf",&x[i]);

}

for(i=1;i<=m;i++)//计算出c矩阵

{c[i][1]=1;

for(j=2;j<=m;j++)c[i][j]=x[i]*c[i][j-1];

}

printf("\nc矩阵:

\n\n");//显示出c矩阵

for(i=1;i<=m;i++)

{for(j=1;j<=m;j++)printf("%4.2lf\t",c[i][j]);

printf("\n");

}

南昌航空大学实验报告

2011年6月20日

课程名称:

计算方法实验名称:

曲线拟合的最小二乘法

班级:

09041326姓名:

孙建伟同组人:

指导教师评定:

签名:

for(i=1;i<=m;i++)//求出c矩阵的转置

{for(j=1;j<=m;j++)d[i][j]=c[j][i];

}

for(i=1;i<=m;i++)//计算出法方程的系数

{for(j=1;j<=m;j++)

for(k=1;k<=m;k++)a[i][j]=a[i][j]+d[i][k]*c[k][j];

}

printf("\n法方程系数矩阵:

\n\n");//显示出法方程矩阵的系数

for(i=1;i<=m;i++)

{for(j=1;j<=m;j++)printf("%4.1lf\t\t",a[i][j]);

printf("\n");

}

for(i=1;i<=m;i++)//输入y[i]

{printf("\n输入矩阵y[%d]:

",i);

scanf("%lf",&y[i]);

}

for(i=1;i<=m;i++)//计算出右端向量

南昌航空大学实验报告

2011年6月20日

课程名称:

计算方法实验名称:

曲线拟合的最小二乘法

班级:

09041326姓名:

孙建伟同组人:

指导教师评定:

签名:

for(j=1;j<=m;j++)b[i]=b[i]+d[i][j]*y[j];

printf("\n右端向量:

\n\n");//显示出右端向量

for(i=1;i<=m;i++)

{printf("%2.2lf",b[i]);printf("\n");

}

for(i=1;i<=m;i++)a[i][m+1]=b[i];//把右端向量也放入a矩阵中

printf("\n拟合次数t=");//输入拟合次数(应该是一次)

scanf("%d",&t);

printf("\n");

for(i=1;i<=t+1;i++)

for(j=1;j<=t+1;j++)

{z[i][j]=a[i][j];z[i][t+2]=a[i][m+1];

}

//解方程(按二元一次方程组解)只能执行一次

w[1]=(z[1][3]*z[2][2]-z[2][3]*z[1][2])/(z[1][1]*z[2][2]-z[2][1]*z[1][2]);

w[2]=(z[1][1]*z[2][3]-z[2][1]*z[1][3])/(z[1][1]*z[2][2]-z[2][1]*z[1][2]);

printf("\n所求系数:

\n\n");

南昌航空大学实验报告

2011年6月20日

课程名称:

计算方法实验名称:

曲线拟合的最小二乘法

班级:

09041326姓名:

孙建伟同组人:

指导教师评定:

签名:

for(i=1;i<=t+1;i++)

{printf("%2.2lf",w[i]);

printf("\n");

}

return0;

}

 

四、实验小结

通过本次实验,加强了对曲线拟合的最小二乘法的了解,也明白了曲线拟合的最小二乘法的C语言的编程算法,虽然这次实验程序源代码较多,但是,这个不影响对曲线拟合的最小二乘法的理解,同时了解和加深了对C语言在工程数学上的运用和理解。

 

南昌航空大学实验报告

2011年6月20日

课程名称:

计算方法实验名称:

欧拉法

班级:

09041326姓名:

孙建伟同组人:

指导教师评定:

签名:

一、实验目的

1.了解欧拉法,掌握欧拉法求解数据。

2.通过用C语言编制程序实现欧拉法求解数据。

二、实验内容与要求

已知区间[a,b]和步长h,求解边值X[0],Y[0],X[1],Y[1]。

三、实验源程序代码

#include

#include

floatf(floatx,floaty)//方程式

{y=-y;

return(y);

}

voidmain()

{floatx0,y0,x1,y1,h,yc,yp;

floata,b;

intN,i;

intn=1;

南昌航空大学实验报告

2011年6月20日

课程名称:

计算方法实验名称:

欧拉法

班级:

09041326姓名:

孙建伟同组人:

指导教师评定:

签名:

printf("pleaseinput[a,b]=:

");

scanf("%f,%f",&a,&b);

printf("pleaseinputh:

");

scanf("%f",&h);

N=(b-a)/h;

x0=0.0;

y0=1.0;

for(i=0;i<=N;i++)

{x1=x0+h;

yp=y0+h*f(x0,y0);

yc=y0+h*f(x1,yp);

y1=(yp+yc)/2;

printf("x(%d)=%3.2f,y[%d]=%3.8f\n",i,x1,i,y1);

x0=x1;

y0=y1;

}

printf("output:

\nx1=%10.9f\ny1=%10.9f\n",x1,y1);

南昌航空大学实验报告

2011年6月20日

课程名称:

计算方法实验名称:

欧拉法

班级:

09041326姓名:

孙建伟同组人:

指导教师评定:

签名:

return;

}

四、实验小结

通过本次实验,加强了对欧拉法的了解,也明白了欧拉法C语言的编程算法,虽然这次实验程序源代码较多,但是,这个不影响对欧拉法的理解,同时了解和加深了对C语言在工程数学上的运用和理解。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 制度规范

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1