北航数值分析大作业(三).docx

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

《数值分析》第三次上机大作业

姓名:学号:

一、题目

关于x,y,t,u,v,w的下列方程组

0.5cost+u+v+w-x=2.67

t+0.5sinu+v+w-y=1.07

0.5t+u+cosv+w-x=3.74

t+0.5u+v+sinw-y=0.79

以及关于z,t,u的下列二维数表

zu

t

0

0.4

0.8

1.2

1.6

2

0

-0.5

-0.34

0.14

0.94

2.06

3.5

0.2

-0.42

-0.5

-0.26

0.3

1.18

2.38

0.4

-0.18

-0.5

-0.5

-0.18

0.46

1.42

0.6

0.22

-0.34

-0.58

-0.5

-0.1

0.62

0.8

0.78

-0.02

-0.5

-0.66

-0.5

-0.02

1.0

1.5

0.46

-0.26

-0.66

-0.74

-0.5

确定了一个二元函数z=f(x,y)。

1.试用数值方法求出f(x,y)在区域D={(x,y)︱0≤x≤0.8,0.5≤y≤1.5}上的一个近似表达式

要求p(x,y)一最小的k值达到以下的精度

其中xi=0.08i,yj=0.5+0.05j。

2.计算f(xi*,yj*),p(xi*,yj*)(i=1,2,…,8;j=1,2,…,5)的值,以观察p(x,y)逼近f(x,y)的效果,其中xi*=0.1i,yj*=0.5+0.2j。

二、算法方案

1.使用C++语言实现,使用牛顿迭代法求解非线性方程组,对,,()的共计11×21组分别求出非线性方程组的解,即求出与对应的。均为11×21的矩阵。

2.由求出的,使用分片二次代数插值法对题中给出的数表进行插值得到。即得到的11×21个数值解。

3.k=0时的多项式拟合必然不符合要求,从k=1开始迭代,使用最小二乘法的曲面拟合法对进行拟合,计算在不符合要求的情况下增大。当时结束计算,输出结果。

4.由3中得到的系数计算的值,再次使用牛顿迭代法对进行求解得到,再次进行二次插值得到结果,以观察逼近的效果。其中,,。

三、源程序:

#includeiostream

#includevector

#includecmath

#includealgorithm

#includeiomanip

#defineN4//方程组未知个数

#defineM6//z,t,u数表阶数

#defineX_Num11

#defineY_Num21//定义数表大小

#defineEPSL1e-12//定义阶数,精度

#defineEPSL21e-7

usingnamespacestd;

typedefvectorvectordoubleMat;//将二维数组简写为Mat

vectordoubleEquation(Matinput);//定义求解非线性方程的函数,同时供Inverse,Zxy函数调用

MatInverse(intrank,Matinput2);//定义求解逆矩阵的函数

doubleAccuracy(vectordoubleX_1,vectordoubleX_2);//定义求解近似向量精度的函数

doubleInterpolation(doubleu_1,doublet_1);//定义分片代数二次插值函数

MatCrs(vectordoubleX,vectordoubleY,MatU);//最小二乘法求解近似表达式系数

MatZxy(vectordoubleX1,vectordoubleY1);//定义非线性方程组,调用Equation,Accuracy和Interpolation完成求解

//所有的output应该调整,是否调整为输出到文件为好

voidoutput(vectordoubleFinal1,vectordoubleFinal2,MatFinal3);//定义输出函数,输出矩阵

voidoutput2(MatXi);

doublevector_u[M]={0,0.4,0.8,1.2,1.6,2};

doublevector_t[M]={0,0.2,0.4,0.6,0.8,1};

doublemat_z[M][M]={

{-0.5,-0.34,0.14,0.94,2.06,3.5},

{-0.42,-0.5,-0.26,0.3,1.18,2.38},

{-0.18,-0.5,-0.5,-0.18,0.46,1.42},

{0.22,-0.34,-0.58,-0.5,-0.1,0.62},

{0.78,-0.02

文档评论(0)

159****1944 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档