




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数值分析上机作业程序由C编写:l 习题一20.(上机题)舍入误差与有效数设,其精确值为。(1)编制按从大到小的顺序,计算的通用程序。(2)编制按从小到大的顺序,计算的通用程序。(3)按两种顺序分别计算, ,并指出其有效位数。(编制程序时用单精度)(4)通过本上机题,你明白了什么?解:# include# includeint _tmain(int argc, _TCHAR* argv) float Sn=0.0,i; int n; coutn; for(i=2;i=n;i+) Sn=Sn+1.0/(i*i-1); cout从大到小求和的值为:Sn=2;i-) Sn=Sn+1.0/(i*i-1); cout从小到大求和的值为:Snn; Sn=0.5*(1.5-1.0/n-1.0/(n+1); cout其精确值为 :Snn;return 0;实验结果如下:精确值从大到小求和的值有效位数从小到大的求和的值有效位数S0.7400490.74004960.7400505S0.7499000.74985240.7499006S0.7499990.74985230.7499996本上机题说明计算顺序对结果有影响,按从大到小计算会产生“大数吃小数”的现象,增大计算误差。若干同号数相加,采用绝对值较小者先加的算法,其结果的相对误差较小。l 习题二20.(上机题)Newton迭代法(1)给定初值及容许误差,编制Newton法解方程根的通用程序。(2)给定方程,易知其有三个根,。由Newton方法的局部收敛性可知存在,当时,Newton迭代序列收敛于根。试确定尽可能大的。试取若干初始值,观察当时Newton序列是否收敛,以及收敛于哪一个根。(3)通过本上机题,你明白了什么?解:参数中x0 表示初值,e表示容许误差。# include# includeint _tmain(int argc, _TCHAR* argv)double x0,e;void Newton(double ,double); / 主体程序coutx0;coute; Newton(x0,e);return 0;void Newton(double a,double e)int n=0;double x0,x1,temp;x0=a;double f(double); / 原函数double df(double); / 一次导函数don+;x1=x0-f(x0)/df(x0);temp=x1;x1=x0;x0=temp;while(fabs(x1-x0)e&n100);coutNewton迭代法的结果为:x0=100)cout不收敛n;cout迭代的次数为:nn;double f(double x)return(pow(x,3)/3-x);double df(double x)return(pow(x,2)-1);(1) 上述程序中Newton(double a,double e)为Newton法解方程根的通用程序。(2) 确定的最大为0.当时,Newton序列收敛于 当时,Newton序列收敛于或 当时,Newton序列收敛于 当时,Newton序列收敛于或当时,Newton序列收敛于上述容许误差取值为0.。(3) 通过本上机题,我明白了Newton法是局部收敛的,是否收敛以及收敛到哪一个根与选取的初值有关。l 习题三35.(上机题)列主元三角分解法对于某电路的分析,归结于求解线性方程组。其中(1)编制解n阶线性方程组的列主元三角分解法的通用程序;(2)用所编程序阶线性方程组,并打印出解向量,保留5位有效数;(3)本题编程之中,你提高了哪些编程能力?解:(1)# include # include int _tmain(int argc, _TCHAR* argv)void RowMainElement(float *Ab, int m, int n,float *result);int n; coutn;float *matrix=new floatn*(n+1);float *result=new floatn;cout输入n*n+1阶的增广矩阵:n;for(int i=0;in;i+) for(int j=0;jn+1;j+) cout输入第i行第jmatrixi*n+j; cout输入完毕!n;RowMainElement(matrix,nn,nn+1,result);/ 显示结果for(int r=0;rnn;r+)coutxr+1=resultrn; delete matrix;delete result;return 0;/(i,j)元素前面行和列的点积float dotsum(float *Ab,int n, int i, int j)float result=0.0f;int s,t;for(s=0,t=0; (si)&(tj); s+,t+)result += (Abs*n+j * Abi*n+t);return result;/交换Ab的第i行和第j行,n为Ab的列数void Exchange(float *Ab, int i, int j, int n)float temp = 0.0f;for(int k = 0; k n; k+)temp = Abi*n+k;Abi*n+k = Abj*n+k;Abj*n+k = temp;/列主元解方程,Ab-增广矩阵,m行数,n列数,result解向量void RowMainElement(float *Ab, int m, int n,float *result)int i=0,j=0,k=0,t=0;for(i=0; im; i+)/选主元int itemp=i;float temp=0.0f,st=0.0f;for(t=i; ttemp)itemp = t;temp = fabsf(st);if(itemp != i)Exchange(Ab, itemp, i, n); /交换第itemp行和第i行/计算行的数值for(j=i; jn; j+)Abi*n+j -= dotsum(Ab,n,i,j);/计算列的数值for(k=i+1; k=0; i-)float temp = Abi*n+n-1;for(j=n-2; ji; j-)temp -= resultj*Abi*n+j;resulti = temp / Abi*n+i;(2)计算结果如下:保留5位有效数:x1 = -0.28923;x2 = 0.34544;x3 = -0.71281;x4 = -0.22061;x5 = -0.43040;x6 = 0.15431;x7 = -0.057823;x8 = 0.20105;x9 = 0.29023;(3)在本题的编程之中,在充分掌握列主元三角分解法的同时,提高了运用数组和指针编程的能力,同时提高了灵活运用循环语句的能力。36.(上机题)逐次超松弛迭代法(1)编制解n阶线性方程组的SOR方法的通用程序(要求);(2)对于35题中所给的线性方程组,取松弛因子,容许误差,打印松弛因子、迭代次数、最佳松弛因子及解向量。解:(1)# include # include static int count = 0; /迭代次数float matrix910=31,-13,0,0,0,-10,0,0,0,-15,-13,35,-9,0,-11,0,0,0,0,27,0,-9,31,-10,0,0,0,0,0,-23,0,0,-10,79,-30,0,0,0,-9,0,0,0,0,-30,57,-7,0,-5,0,-20,0,0,0,0,-7,47,-30,0,0,12,0,0,0,0,0,-30,41,0,0,-7,0,0,0,0,-5,0,0,27,-2,7,0,0,0,-9,0,0,0,-2,29,10;void SOR(float *Ab, int m, int n, float w, float e, float *result);int _tmain(int argc, _TCHAR* argv)float e=0.000005f;for(float p=1.0f;p100.0;p+) float res9=0,0,0,0,0,0,0,0,0;count=0;float w=p/50;SOR(float *)matrix, 9, 10, w , e, (float *)res);cout松弛因子为:wt迭代次数为:countn;coutnn最佳松弛因子为:1.2解向量为:n;float res9=0,0,0,0,0,0,0,0,0;SOR(float *)matrix, 9, 10, 1.2 , e, (float *)res);for(int t=0;t9;t+)coutrestn;return 0;/超松弛迭代法,Ab增广矩阵,mAb的行数,nAb的列数,w松弛因子,e允许误差,result解向量void SOR(float *Ab, int m, int n, float w, float e, float *result)count+; /迭代次数增加int i=0,j=0;/保存上一次的迭代结果float * temp = new floatm;for(i=0; im; i+)tempi = resulti;/迭代一次for(i=0; im; i+)float sum=0.0f;for(j=0; jn-1; j+)if(j!=i)sum += (Abi*n+j*resultj);resulti = (1-w)*resulti + w*(Abi*n+n-1 - sum)/Abi*n+i;float errortemp=0.0f;for(i=0; ierrortemp) errortemp = ierror;delete temp;/迭代if(errortempe)return;elseSOR(Ab,m,n,w,e,result);(2) 根据以上计算可知,最佳松弛因子为1.2,迭代次数为10。解向量为:x1 = -0.28923;x2 = 0.34544;x3 = -0.71281;x4 = -0.22061;x5 = -0.43040;x6 = 0.15431;x7 = -0.057823;x8 = 0.20105;x9 = 0.29023;l 习题四38(上机题)3次样条插值函数、编制求第一型3次样条插值函数的通用程序;、已知汽车门曲线型值点的数据如下:xi012345678910yi2.513.304.044.705.225.545.785.405.575.705.80端点条件为。用所编程序求车门的3次样条插值函数S(x),并打印出。解:(1)3次样条插值的函数的程序如下:/求3次样条函数的M值/xx数组指针,y函数值数组指针,n数组长度,deri_x0x0处的导数值,deri_xnxn处的导数值/M求出的M值,计算结果储存在该数组中,空间在传入之前分配void M_Result(float *x, float *y, int n, float deri_x0, float deri_xn, float *M)int i;float *h = new floatn-1; /给h数组赋值for(i=0;in-1;i+)hi = xi+1-xi;float *U = new floatn-1;float *N = new floatn-1;/给U数组和N数组赋值Un-2 = 1;N0 = 1;for(i=0;in-2;i+)Ui = hi/(hi+hi+1);Ni+1 = 1.0f - Ui;float *d = new floatn;/求二阶差商,给d数组赋值d0 = 6.0f*(y1-y0)/h0-deri_x0)/h0;dn-1 = 6.0f*(deri_xn-(yn-1-yn-2)/hn-2)/hn-2;for(i=1; in-1; i+)di = 6.0f*(yi+1-yi)/hi-(yi-yi-1)/hi-1)/(xi+1-xi-1);/用追赶法解方程组,求数组M值float *B = new floatn;float *Y = new floatn;B0 = 2;Y0 = d0;float li;for(i=1; i=0;i-)Mi = (Yi - Ni*Mi+1)/Bi;/释放临时数组delete B;delete Y;delete d;delete N;delete U;delete h;/求三次样条函数的函数值/X表示所要求的自变量,j表示所求自变量所在区间,X在区间x(j),x(j+1)上/xx数组指针,y函数值数组指针,M求得的二阶导数值float YangTiao(float X, int j, float *x, float *y, float *M)float s;float cj = (yj+1-yj)/(xj+1-xj) - (Mj/3.0f+Mj+1/6.0f)*(xj+1-xj);s = yj + cj*(X-xj) + 0.5f*Mj*(X-xj)*(X-xj) + (Mj+1-Mj)*(X-xj)*(X-xj)*(X-xj)/(6.0f*(xj+1-xj);return s;(2)程序运行结果如下:计算得的M值为:M 0 = -0.M 1 = -0.M 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 从业人员素质培训考试及答案解析
- 住建部安全员b证试题库及答案解析
- 基金从业考试政策变更及答案解析
- 山西省安全知识竞赛题库及答案解析
- 医院岗前摸底考试及答案解析
- 货车安全培训考试试题及答案解析
- 奥的斯2025年安全考试测试题及答案解析
- 银行从业资格考试名称及答案解析
- 银行从业这个考试及答案解析
- 兴业证券岗前培训考试及答案解析
- 《生成式人工智能基础与应用》高职AIGC应用基础课程全套教学课件
- 环评管理培训
- 儿童编发课件图片
- 报废汽车回收公司车间管理制度
- 2025合肥市辅警考试试卷真题
- 淘宝客服合同协议书模板
- 骨水泥测试试题及答案
- 职业人群心理健康促进指南 2025
- 无人机教育培训创业计划书
- 咸阳社区面试题及答案
- 电力工程施工进度及安全保障措施
评论
0/150
提交评论