计算方法报告文档格式.docx

上传人:b****6 文档编号:20365325 上传时间: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

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

三、实验源程序代码

#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语言在工程数学上的运用和理解。

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

当前位置:首页 > 农林牧渔 > 林学

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

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