数值分析课程设计.docx

上传人:b****9 文档编号:25273268 上传时间:2023-06-06 格式:DOCX 页数:15 大小:232.04KB
下载 相关 举报
数值分析课程设计.docx_第1页
第1页 / 共15页
数值分析课程设计.docx_第2页
第2页 / 共15页
数值分析课程设计.docx_第3页
第3页 / 共15页
数值分析课程设计.docx_第4页
第4页 / 共15页
数值分析课程设计.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

数值分析课程设计.docx

《数值分析课程设计.docx》由会员分享,可在线阅读,更多相关《数值分析课程设计.docx(15页珍藏版)》请在冰豆网上搜索。

数值分析课程设计.docx

数值分析课程设计

淮海工学院计算机工程学院

课程设计报告书

课程名:

《数值分析》

题目:

数值分析课程设计

班级:

学号:

姓名:

 

数值分析课程设计

课程设计要求

1、研究第一导丝盘速度y与电流周波x的关系。

2、数据拟合问题运用样条差值方法求出温度变化的拟合曲线。

课程设计目的

1、通过编程加深对三次样条插值及曲线拟合的最小二乘法的理解;

2、学习用计算机解决工程问题,主要包括数据处理与分析。

课程设计环境

visualC++6.0

课程设计内容

课程设计题目1:

合成纤维抽丝工段中第一导丝盘的速度对丝的质量有很大的影响,第一丝盘的速度和电流周波有重要关系。

下面是一组实例数据:

X

49.2

50.0

49.3

49.0

49.0

49.5

49.6

49.9

50.2

50.2

y

16.7

17.0

16.8

16.6

16.7

16.8

16.9

17.0

17.0

17.1

其中x代表电流周波,y代表第一导丝盘的速度

课程设计题目3:

在天气预报网站上获得你家乡所在城市当天24小时温度变化的数据,认真观察分析其变化趋势,在此基础上运用样条差值方法求出温度变化的拟合曲线。

然后将该函数曲线打印出来并与原来的温度变化数据形成的曲线进行比较,给出结论。

写出你研究的心得体会。

课程设计步骤

1、利用最小二乘法写出题1的公式和算法;

2、利用excel表格画出数据拟合后题1的图像;

3、在VisualC++6.0中编写出相应的代码;

4、搜索11月12日南通当地一天的温度变化数据;

5、在VisualC++6.0中编写出相应的代码;

6、利用excel表格画出数据拟合后题3的图像

课程设计结果

课程设计题目1

数值拟合

 

解:

根据所给数据,在excel窗口运行:

x=[49.250.049.349.049.049.549.849.950.250.2]

y=[16.717.016.816.616.716.816.917.017.017.1]

课程设计题目3

数据为:

X=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23];

Y=[12,12,11,12,12,12,12,12,13,15,16,17,17,18,17,17,17,16,15,15,15,15,14,14];

源代码为:

第一题:

#include

#include"math.h"

usingnamespacestd;

//doublex[100],y[100];

intmain(){

inti;

doublek,b;

doublesum1=0,sum2=0,sum3=0,sum4=0;

doublex[10]={49.2,50.0,49.3,49.0,49.0,49.5,49.8,49.9,50.2,50.2};

doubley[10]={16.7,17.0,16.8,16.6,16.7,16.8,16.9,17.0,17.0,17.1};

for(i=0;i<10;i++){

sum1+=x[i]*y[i];

sum2+=x[i];

sum3+=y[i];

sum4+=x[i]*x[i];

}

//cout<

k=sum1/sum4;

b=(sum3-sum2*k)/10;

cout<<"k="<

cout<<"y="<

doublestart=x[0],end=x[9],result;

for(doublej=start;j

result=k*j+b;

cout<<"x="<

}

return0;

}

第三题:

#include

#include"math.h"

#include

usingnamespacestd;

doublea[100],b[100],c[100],d[100];

doubleaa[100],bb[100],cc[100],dd[100],M[100];

voidtranslate(doublex[],doubley[],intn){//根据输入数据x[]和y[]求出三对角矩阵

doubleh[100],f[100];

inti,j;

intflag=1;

intk;

floats;

for(j=0;j

h[j]=x[j+1]-x[j];

}

for(j=0;j

f[j]=(y[j+1]-y[j])/h[j];

}

for(j=1;j<=n-2;j++){

a[j]=h[j-1]/(h[j-1]+h[j]);

c[j]=h[j]/(h[j-1]+h[j]);

d[j]=6*(f[j]-f[j-1])/(h[j-1]+h[j]);

}

cout<<"a[i]"<<"";

for(i=1;i<=n-2;i++){

cout<

:

fixed)<

cout<

}

cout<

cout<<"c[i]"<<"";

for(i=1;i<=n-2;i++){

cout<

:

fixed)<

cout<

}

cout<

cout<<"d[i]"<<"";

for(i=1;i<=n-2;i++){

cout<

:

fixed)<

cout<

}

cout<

cout<<"b[i]"<<"";

for(i=1;i<=n-1;i++){

b[i]=2;

cout<

}

cout<

for(i=0;i

aa[i]=a[i+1];

cc[i]=c[i+1];

dd[i]=d[i+1];

}

for(j=0;j

bb[j]=b[j+1];

}

//用追赶法求三对角矩阵

for(k=0;k

//注意此处不用循环,与高斯消去法不同。

因为存在许多零

bb[k+1]=bb[k+1]-(aa[k+1]/bb[k])*cc[k];

dd[k+1]=dd[k+1]-(aa[k+1]/bb[k])*dd[k];

//a[i]=0.000000;

}

M[n-2]=dd[n-2]/bb[n-2];

for(i=n-3;i>=0;i--)

{

s=dd[i];

s=s-cc[i]*M[i+1];

//此处也不用循环

M[i]=s/bb[i];

}

cout<<"此方程的解为:

"<

for(i=0;i

{

cout<<"M["<

:

showpoint)<

}

for(k=n-1;k>=0;k--){//使数组下标从0开始M[0]=M[n-1]=0;

if(k==n-1||k==0)

M[k]=0;

else

M[k]=M[k-1];

}

for(i=0;i

cout<

}

cout<

//输出三次样条差值函数

for(j=0;j

if(j==0){

cout<<"当"<<"("<

"<

cout<<"S(x)="<

<<"+"<<(y[j+1]-(M[j+1]*h[j]*h[j])/6.0)/h[j]<<"*(x-"<

}

elseif(j==n-2){

cout<<"当"<<"("<

"<

cout<<"S(x)="<

<<"+"<<(y[j+1]-(M[j+1]*h[j]*h[j])/6.0)/h[j]<<"*(x-"<

}

else{

cout<<"当"<<"("<

"<

cout<<"S(x)="<

<<"+"<<(y[j+1]-(M[j+1]*h[j]*h[j])/6.0)/h[j]<<"*(x-"<

}

}

}

intmain(){

doublex[100],y[100];

intn;

cout<<"请输入数据的个数n"<

cin>>n;

cout<<"请输入x[i]"<

for(inti=0;i<=n-1;i++){

cin>>x[i];

}

cout<<"请输入y[j]"<

for(intj=0;j<=n-1;j++){

cin>>y[j];

}

translate(x,y,n);

//run(a,b,c,d,n);

return0;

}

运行结果为:

图一

图二

图三

图四

图五

图六

图七

图八

课程设计体会

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

当前位置:首页 > 工作范文 > 演讲主持

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

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