计算方法报告文档格式.docx
《计算方法报告文档格式.docx》由会员分享,可在线阅读,更多相关《计算方法报告文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
的近似值,要求结果保留到小数点后四位。
三、实验源程序代码
#include<
stdio.h>
malloc.h>
conio.h>
voidmain()
{
//lagrange插值//
double*xi,*yi,x,y;
//xi,yi为插值节点,x为//插值点;
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));
请输入节点xi值:
for(i=0;
i<
=n;
i++)
{printf("
xi[%d]:
"
i);
scanf("
%lf"
(xi+i));
printf("
yi[%d]:
(yi+i));
}
请输入插值点值:
printf("
x="
x);
//下面实现插值功能
for(k=0;
k<
k++){
P=1.0;
for(j=0;
j<
j++)
{
if(k!
=j)P*=(x-*(xi+j))/(*(xi+k)-*(xi+j));
}
y+=P*(*(yi+k));
插值点x上的值为(y=):
y);
free(xi);
free(yi);
getche();
四、实验小结
通过本次实验,加强了对拉格朗日插值法的了解,也明白了拉格朗日的插值的C语言的编程算法,同时了解和加深了对C语言在工程数学上的运用和理解。
曲线拟合的最小二乘法
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]存所求方程系数即结果
\nInputthevalueofm:
"
//m为给出x的数据个数
m);
for(i=1;
=m;
{x[i]=0;
y[i]=0;
b[i]=0;
w[i]=0;
for(j=1;
j++){a[i][j]=0;
c[i][j]=0;
d[i][j]=0;
i++)
{printf("
\n输入矩阵x[%d]:
x[i]);
i++)//计算出c矩阵
{c[i][1]=1;
for(j=2;
j++)c[i][j]=x[i]*c[i][j-1];
\nc矩阵:
\n\n"
//显示出c矩阵
{for(j=1;
j++)printf("
%4.2lf\t"
c[i][j]);
i++)//求出c矩阵的转置
j++)d[i][j]=c[j][i];
i++)//计算出法方程的系数
for(k=1;
k++)a[i][j]=a[i][j]+d[i][k]*c[k][j];
printf("
\n法方程系数矩阵:
);
//显示出法方程矩阵的系数
%4.1lf\t\t"
a[i][j]);
i++)//输入y[i]
\n输入矩阵y[%d]:
y[i]);
i++)//计算出右端向量
j++)b[i]=b[i]+d[i][j]*y[j];
\n右端向量:
//显示出右端向量
%2.2lf"
b[i]);
i++)a[i][m+1]=b[i];
//把右端向量也放入a矩阵中
\n拟合次数t="
//输入拟合次数(应该是一次)
t);
=t+1;
{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]);
\n所求系数:
%2.2lf"
w[i]);
return0;
通过本次实验,加强了对曲线拟合的最小二乘法的了解,也明白了曲线拟合的最小二乘法的C语言的编程算法,虽然这次实验程序源代码较多,但是,这个不影响对曲线拟合的最小二乘法的理解,同时了解和加深了对C语言在工程数学上的运用和理解。
欧拉法
1.了解欧拉法,掌握欧拉法求解数据。
2.通过用C语言编制程序实现欧拉法求解数据。
已知区间[a,b]和步长h,求解边值X[0],Y[0],X[1],Y[1]。
math.h>
floatf(floatx,floaty)//方程式
{y=-y;
return(y);
voidmain()
{floatx0,y0,x1,y1,h,yc,yp;
floata,b;
intN,i;
intn=1;
南昌航空大学实验报告
pleaseinput[a,b]=:
%f,%f"
a,&
b);
pleaseinputh:
%f"
h);
N=(b-a)/h;
x0=0.0;
y0=1.0;
=N;
{x1=x0+h;
yp=y0+h*f(x0,y0);
yc=y0+h*f(x1,yp);
y1=(yp+yc)/2;
x(%d)=%3.2f,y[%d]=%3.8f\n"
i,x1,i,y1);
x0=x1;
y0=y1;
output:
\nx1=%10.9f\ny1=%10.9f\n"
x1,y1);
return;
通过本次实验,加强了对欧拉法的了解,也明白了欧拉法C语言的编程算法,虽然这次实验程序源代码较多,但是,这个不影响对欧拉法的理解,同时了解和加深了对C语言在工程数学上的运用和理解。