数值分析在生活中应用举例及Matlab实现.docx

上传人:b****7 文档编号:10845158 上传时间:2023-02-23 格式:DOCX 页数:16 大小:83.02KB
下载 相关 举报
数值分析在生活中应用举例及Matlab实现.docx_第1页
第1页 / 共16页
数值分析在生活中应用举例及Matlab实现.docx_第2页
第2页 / 共16页
数值分析在生活中应用举例及Matlab实现.docx_第3页
第3页 / 共16页
数值分析在生活中应用举例及Matlab实现.docx_第4页
第4页 / 共16页
数值分析在生活中应用举例及Matlab实现.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

数值分析在生活中应用举例及Matlab实现.docx

《数值分析在生活中应用举例及Matlab实现.docx》由会员分享,可在线阅读,更多相关《数值分析在生活中应用举例及Matlab实现.docx(16页珍藏版)》请在冰豆网上搜索。

数值分析在生活中应用举例及Matlab实现.docx

数值分析在生活中应用举例及Matlab实现

个人收集整理仅供参考学习

一、最小二乘法,用MATLAB实现

1.数值实例

下面给定地是乌鲁木齐最近1个月早晨7:

00左右(新疆时间)地天气预报所得到地温度,按照数据找出任意次曲线拟合方程和它地图像.下面用MATLAB编程对上述数据进行最小二乘拟合.b5E2RGbCAP

2008年10月26~11月26

天数1、实例

1

2

3

4

5

6

7

8

9

10

温度

9

10

11

12

13

14

13

12

11

9

天数

11

12

13

14

15

16

17

18

19

20

温度

10

11

12

13

14

12

11

10

9

8

天数

21

22

23

24

25

26

27

28

29

30

温度

7

8

9

11

9

7

6

5

3

1

下面用MATLAB编程对上述数据进行最小二乘拟合

2、程序代码

x=[1:

1:

30];

y=[9,10,11,12,13,14,13,12,11,9,10,11,12,13,14,12,11,10,9,8,7,8,9,11,9,7,6,5,3,1];p1EanqFDPw

a1=polyfit(x,y,3)%三次多项式拟合%

a2=polyfit(x,y,9)%九次多项式拟合%

a3=polyfit(x,y,15)%十五次多项式拟合%

b1=polyval(a1,x)

b2=polyval(a2,x)

b3=polyval(a3,x)

r1=sum((y-b1).^2)%三次多项式误差平方和%

r2=sum((y-b2).^2)%九次次多项式误差平方和%

r3=sum((y-b3).^2)%十五次多项式误差平方和%

plot(x,y,'*')%用*画出x,y图像%

holdon

plot(x,b1,'r')%用红色线画出x,b1图像%

holdon

plot(x,b2,'g')%用绿色线画出x,b2图像%

holdon

plot(x,b3,'b:

o')%用蓝色o线画出x,b3图像%

3、数值结果

不同次数多项式拟合误差平方和为:

r1=67.6659

r2=20.1060

r3=3.7952

r1、r2、r3分别表示三次、九次、十五次多项式误差平方和.

4、拟合曲线如下图

1/10

个人收集整理仅供参考学习

二、线性方程组地求解(高斯-塞德尔迭代算法):

求解线性方程组(见书P233页)

xxx?

?

208?

?

32321?

?

xxx?

?

433?

11?

321?

xxx?

12?

3366?

?

?

312记Ax=b,其中

x?

?

20?

328?

?

?

?

1?

?

?

?

?

?

x33b?

x?

4111?

?

A?

?

?

?

?

?

2?

?

x?

?

?

?

366312?

?

?

?

?

?

3?

?

?

?

0Tx000?

进行迭代任取初始值.

2、用C语言实现,源程序如下:

#include

#include

structNode

{

doublevalue;//矩阵非零元素值

intindex;//元素地索引(序号或列标)

2/10

个人收集整理仅供参考学习

};

structMatrix

{

structNode*data;//记录元素数据

inttotal_elem;//矩阵非零元素个数

inttotal_ln;//矩阵地总行数

inttotal_col;//矩阵地总列数

};

//采用MSR法实现系数矩阵地存储

voidCreate_Matrix(structMatrix&matrix)

{

intindex=0,i=0;

doublevalue=0.0;

牰湩晴?

请输入线性方程组系数矩阵地非零元素个数及总行数、总列数:

);

scanf(%d%d%d,&matrix.total_elem,&matrix.total_ln,&matrix.total_col);DXDiTa9E3d

matrix.data=(structNode*)malloc(sizeof(struct

Node)*(matrix.total_elem+1));RTCrpUDGiT

牰湩晴?

请依次输入矩阵地主对角线元素及每行地非零非对角线元素(行优先)\n);

for(i=0;i<=matrix.total_elem;i++)

{

if(i==matrix.total_ln)

value=0;

else

scanf(%lf,&value);

matrix.data[i].value=value;

}

printf(\

系数矩阵地信息相关如下(Quote为添加项,表示序列号):

);

printf(\

Value:

);

for(i=0;i

printf(%3.0lf,matrix.data[i].value);

printf(\

Quote:

);

for(i=0;i

printf(=,i);

printf(\

\n);

for(i=0;i<=matrix.total_elem;i++)

{

if(i==0)

3/10

个人收集整理仅供参考学习

牰湩晴?

请参照上表输入第每行第一个非零非主对角元素地序号\n);

if(i==matrix.total_ln)

matrix.data[i].index=matrix.total_elem+1;

else

if(i==matrix.total_ln+1)

牰湩晴?

请依次输入非零非对角元素地列标\n);

if(i!

=matrix.total_ln)

scanf(%d,&matrix.data[i].index);

}

}

//显示系数矩阵地相关信息

voidDisplay_Matrix(structMatrixmatrix)

{

inti=0;

牰湩晴?

系数矩阵采用MSR存储法地相关信息如下(Quote为添加项,表示序列号):

);

printf(\

Quote:

);

for(i=0;i<=matrix.total_elem;i++)

printf(=,i);

printf(\

value:

);

for(i=0;i<=matrix.total_elem;i++)

printf(%3.0lf,matrix.data[i].value);

printf(\

Index:

);

for(i=0;i<=matrix.total_elem;i++)

printf(=,matrix.data[i].index);

printf(\

);

}

//初始化向量,使之分量全为0

voidInit_X(double*X,intn)

{

inti=0;

for(i=0;i

X[i]=0;

}

//初始化右端向量

voidInit_b(double*b,intn)

{

inti=0;

4/10

个人收集整理仅供参考学习

Init_X(b,n);

printf(\

请输入%d个数(方程组地右端项):

n);

for(i=0;i

scanf(%lf,&b[i]);

}

//初始化未知向量,得到初始值

voidInit_temp_X(double*temp,intn)

{

inti=0;

Init_X(temp,n);

牰湩晴?

请输入X向量地初始值:

);

for(i=0;i

scanf(%lf,&temp[i]);

}

//采用高斯-塞德尔GS迭代法求值

intCalculate_X_GS(structMatrixA,double*X,double*b)5PCzVD7HxA

{

inti=0,j=0,sum=0;

doubletemp=0.0,temp_1=0.0,*temp_X=0,judge=0.0;jLBHrnAILg

temp_X=(double*)newdouble[A.total_ln];

Init_temp_X(temp_X,A.total_ln);

for(i=0;i

X[i]=temp_X[i];

sum=0;

do

{

judge=0.0;

for(i=0;i

temp_X[i]=X[i];

for(i=0;i

{

temp=0.0;

temp_1=0.0;

for(j=A.data[i].index;A.data[j].index

temp_1+=A.data[j].value*X[A.data[j].index];

for(;j

5/10

个人收集整理仅供参考学习

temp+=A.data[j].value*temp_X[A.data[j].index];

X[i]=(b[i]-temp_1-temp)/A.data[i].value;

}

for(i=0;i

{

if(X[i]-temp_X[i]<0)

judge=temp_X[i]-X[i]>judge?

temp_X[i]-X[i]:

judge;Zzz6ZB2Ltk

else

judge=X[i]-temp_X[i]>judge?

X[i]-temp_X[i]:

judge;dvzfvkwMI1

}

sum++;

printf(\

\n第%d次迭代地结果:

sum);

for(i=0;i

printf(\

X[%d]=%g,i,X[i]);

printf(\

judge=%g,judge);

}while(judge>0.000001);

returnsum;

}

voidmain()

{

structMatrixA;

//实现系数矩阵地存储及显示

Create_Matrix(A);

Display_Matrix(A);

double*X=0,*b=0;

X=(double*)newdouble[A.total_ln];

b=(double*)newdouble[A.total_ln];

Init_X(X,A.total_ln);

Init_b(b,A.total_ln);

inti=0,sum=0;

sum=Calculate_X_GS(A,X,b);

printf(\

\n线性方程组地解为:

);

for(i=0;i

printf(\

X[%d]=%g,i,X[i]);

printf(\

总共迭代了%d次\n\n,sum);

}

6/10

个人收集整理仅供参考学习

3、运行结果如下:

7/10

仅供参考学习个人收集整理

版权申明.本文部分内容,包括文字、图片、以及设计等在网上搜集整理版权为个人所有pictures,someparts,includingtext,includesThisarticle

anddesign.Copyrightispersonalownership.rqyn14ZNXI

以及其研究或欣赏,用户可将本文地内容或服务用于个人学习、他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律8/10

仅供参考学习个人收集整理

除此以外,将本.地规定,不得侵犯本网站及相关权利人地合法权利须征得本人及相关权利人地书面文任何内容或服务用于其他用途时,.许可,并支付报酬EmxvxOtOco

Usersmayusethecontentsorservicesofthisarticle

forpersonalstudy,researchorappreciation,andother

non-commercialornon-profitpurposes,butatthesametime,

theyshallabidebytheprovisionsofcopyrightlawandother

relevantlaws,andshallnotinfringeuponthelegitimate

addition,relevantobligees.Inandthisrightsofwebsiteits

whenanycontentorserviceofthisarticleisusedforother

purposes,writtenpermissionandremunerationshallbe

obtainedfromthepersonconcernedandtherelevant

obligee.SixE2yXPq5

转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目地地合理、善意引用,不得对本文内容原意进行曲解、修改,.并自负版权等法律责任6ewMyirQFL

Reproductionorquotationofthecontentofthisarticle

newsofthecitationandbemustreasonablegood-faithforuse

orinformativepublicfreeinformation.Itshallnot

misinterpretormodifytheoriginalintentionofthecontent

ofthisarticle,andshallbearlegalliabilitysuchas

9/10

仅供参考学习个人收集整理

copyright.kavU42VRUs

10/10

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

当前位置:首页 > 医药卫生 > 中医中药

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

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