已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一高斯消元法1问题描述测试分析报告是把测试的结果写成文档,并对测试结果进行分析,为纠正软件的缺陷提供依据,也为软件验收和交付打下基础。是软件开发的另一里程碑。及时记录测试阶段的工作过程和工作成果,如实反映测试过程中所解决的各种问题,把集成测试和确认测试的结果以文件形式加以记载,使开发者能在第一时间对遇到的问题做迅速反应。2算法说明首先将线性方程组做成增广矩阵,对增广矩阵进行行变换。对元素aii,在第i列中,第i行及以下的元素选取绝对值最大的元素,将该元素最大的行与第i行交换,然后采用高斯消元法 将新得到的aii消去第i行以下的元素。一次进行直到ann。从而得到上三角矩阵。再对得到的上三角矩阵进行回代操作,即可以得到方程组的解。3程序设计#include#include#include/在列向量中寻找绝对值最大的项,并返回该项的标号int FindMax(int p,int N,double *A)int i=0,j=0;double max=0.0;for(i=p;imax) j=i;max=fabs(Ai*(N+1)+p);return j;/交换矩阵中的两行void ExchangeRow(int p,int j,double *A,int N)int i=0;double C=0.0;for(i=0;iN+1;i+)C=Ap*(N+1)+i;Ap*(N+1)+i=Aj*(N+1)+i;Aj*(N+1)+i=C;/上三角变换,A为增广矩阵的指针,N为矩阵的行数。void uptrbk(double *A,int N)int p=0,k=0,q=0,j=0;double m=0.0;for(p=0;pN-1;p+)/找出该列最大项的标号j=FindMax(p,N,A);/交换p行和j行ExchangeRow(p,j,A,N);if(Ap*(N+1)+p=0)printf(矩阵是一个奇异矩阵,没有唯一解!);break;/消去P元素以下的p列内容。for(k=p+1;kN;k+)m=Ak*(N+1)+p/Ap*(N+1)+p;for(q=p;qN+1;q+)Ak*(N+1)+q=Ak*(N+1)+q-m*Ap*(N+1)+q;printf(n增广矩阵高斯列主元消去后的矩阵为:n);for(j=0;j=0;k-)temp=0.0;for(i=k+1;i256|N=0)printf(输入的数字不再范围之内!);printf(n);return 0; else A=(double*)calloc(N*(N+1),sizeof(double); printf(请输入待求解方程组的增广矩阵(%d行%d列):n,N,N+1);for(i=0;iN*(N+1);i+)scanf(%lf,&Ai);system(cls); printf(方程的增广矩阵为:n);for(i=0;iN*(N+1);i+)if(i%(N+1)=0)printf(n);printf(%lft,Ai);uptrbk(A,N); /上三角变换X=backsub(A,N); /回代函数printf(nn方程组的解为:n);for(i=0;iN;i+)printf(X(%d)= %lfn,i+1,Xi);free(A);free(X);exit(0);4算例及计算结果输入增广矩阵 1 2 4 1 21 2 8 6 4 52 3 10 8 8 52 4 12 10 6 82结果 x1=1 X2=2 X3=3 X4=45,结果分析31总结采用高斯列主元消去法解线性方程组得到的结果和实际的计算结果是一致的,高斯列主元消去法比较简单,在提高近似值解的精度上是非常起作用的,而且又具有计算量不大、算法组织容易,且对于有唯一解的线性方程组都可以计算,要求的条件比较低等等优点。不过,由于消去的循环次数比较多,当要解决比较大的线性方程组时计算就比较慢了。但对于一般的方程组,高斯列主元消去法还是能够胜任的。高斯消去法是常用的解线性方程组的基本方法。测试过程中发现的缺陷主要有以下几个方面:(1) 编码过程中一些编码格式不符合C编码规范每一种编程语言都有自己的编码规范,严格遵守其编码规范有助于代码的可读性,减少代码的二义性增强代码的可移植性。在该软件的源代码中存在大量编码规范问题,从而可能导致后期维护成本增大。应该修改代码使之符合编码规范。(2) 需求定义不明确在需求文档中对条件要求不够明确,在测试过程中相关问题表现出来,导致浪费开发时间和开发积极性。二复合辛普森公式一 实验目的1. 掌握复合辛普森公式的基本思想。2. 编程实现用复合辛普森公式求积分。二 实验内容1、用复合辛普森公式计算积分I=4/(1+x2)dx,求它0到1的积分。精确度为10-5.(0.00001)l5计算公式h=(b-a)/2n=(xi+1-xi)/2 ;(i=0,1,n-1)S=h/3f(xi)+4f(xi+1/2)+f(xi+1) (i=0,1,n-1)l6算法分析 复合辛普森公式来求积分是将区间等分为2n份,在每两个相邻的数间再取中间值,利用for循环实现辛普森公式。该公式等分的份数更多,是的精度也更高。l7源程序function f1=fun4(x)f1=4/(1+x2); %公式f(x)function f=xinpusen(a,b) %a,b分别为区间的端点值a=0;b=1;disp(*复合辛普森形公式*)h1=0.25; %h表示区间被等分成若干份后,每两个相邻数的间距m=(a:h1:b);h=h1/2;n=length(m);for i=1:n-1 Z(i)=(m(i)+m(i+1)/2; D(i)=fun4(m(i)+fun4(m(i+1)+4*fun4(Z(i);endR=h/3*sum(D);t=pi-R; %精度R;tl9实验结果讨论和分析 从计算结果可以看到,复合辛普森你公式结果更接近精确解,精确度更高,而且运算次数只有40次,大大减少了运算次数,比复合梯形公式收敛性高。三 本次实验总结在本次实验过程中,我掌握了复合辛普森公式的基本算法思想,通过编程来实现用复合辛普森公式求积分。而且通过上机实验,可以看到复合辛普森公式的用法三四阶龙格库塔方法一 实验目的1. 掌握的四阶龙格库塔法基本思想。2. 编程实现用四阶龙格库塔法解一阶常微分方程。二实验内容四阶龙格库塔法解一阶二元微分方程/dxi/dt=c*(xi-xi3/3+yi)+K*(X-xi)+c*zi/dyi/dt=(xi-b*yi+a)/c/i=1,2,3/X=sum(xi)/N#include #include #include #include #define N 1000 /定义运算步数;#define h 0.01 /定义步长;float a,b,c;/定义全局变量常数a,b,c/定义微分方程:double fx(double x,double dx,double y,double dy,double z,int i,double k,double xavg)int j;double xi,yi;xi=xi+dx;yi=yi+dy;return c*(xi-pow(xi,3)/3+yi)+k*(xavg-xi)+c*zi;double fy(double x,double dx,double y,double dy,int i)double xi,yi;xi=xi+dx;yi=yi+dy;return (xi-b*yi+a)/c;void main()double Kx34,Ky34,x3=1,2,3,y3=2,3,4,xavg,k=0;/定义x,y的初值;double z3=0;int i,j,m,n,S;FILE *fp1,*fp;fp=fopen(sjy.txt,w);fp1=fopen(sjykxy.txt,w);fprintf(fp1,ktx1tx2tx3ty1ty2ty3n);if(fp=NULL|fp1=NULL) printf(Failed to open file.n); getch(); return; printf(Input the value of const a,b,c(seperated by ,eg 0.1,0.2,0.3):); scanf(%f,%f,%f,&a,&b,&c); printf(Input the three values of z(seperated by spacekey,eg 0.1 0.2 0.3):); for (m=0;m3;+m) scanf(%lf,&zm); printf(Input the value of Steps to get different values of xt,yt(S):); scanf(%d,&S);while(k=1) fprintf(fp,k=%.3fn,k); fprintf(fp,ttx1tx2tx3ty1ty2ty3n);fprintf(fp1,n%.3f,k); for(j=1;jN;+j) printf(%.3lf,j*h); fprintf(fp,%.3lf,j*h); xavg=0; for(i=0;i3;+i) xavg+=xi; xavg=xavg/3.0; /四阶龙格库塔法: for(i=0;i3;+i) Kxi0=fx(x,0,y,0,z,i,k,xavg); Kyi0=fy(x,0,y,0,i); Kxi1=fx(x,h/2*Kxi0,y,h/2*Kyi0,z,i,k,xavg); Kyi1=fy(x,h/2*Kxi0,y,h/2*Kyi0,i); Kxi2=fx(x,h/2*Kxi1,y,h/2*Kyi1,z,i,k,xavg); Kyi2=fy(x,h/2*Kxi1,y,h/2*Kyi1,i); Kxi3=fx(x,h*Kxi2,y,h*Kyi2,z,i,k,xavg); Kyi3=fy(x,h*Kxi2,y,h*Kyi2,i); xi=xi+(Kxi0+2*Kxi1+2*Kxi2+Kxi3)/6*h; yi=yi+(Kyi0+2*Kyi1+2*Kyi2+Kyi3)/6*h; for(i=0;i3;+i) printf(t%.3lf,xi); fprintf(fp,t%.3lf,xi); for(i=0;i3;+i) printf(t%.3lf,yi); fprintf(fp,t%.3lf,yi); printf(n); fprintf(fp,n); /取第S步,即时间为S*h的x1,x2,x3,y1,y2,y3随k值的变化; while(j=S) for(n=0;n3;+n) fprintf(fp1,t%.3lf,xn); fo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 胆囊壁肌增生的护理
- 雨课堂学堂在线学堂云《播音主持艺术( 兰文理)》单元测试考核答案
- 高考化学“8+1”模拟练试卷含答案(七)
- 2026年劳务员之劳务员基础知识考试题库200道附参考答案【培优a卷】
- 2026年设备监理师之设备监理合同考试题库附参考答案【轻巧夺冠】
- 2025东风奕派汽车科技公司社会招聘历年真题汇编带答案解析
- 2025北京市百瑞(鄂尔多斯)律师事务所招聘备考题库带答案解析
- 2026广东中山市委党校招聘事业单位人员2人参考题库附答案解析
- 中国移动卓越公司2025秋季校园招聘备考题库附答案
- 2025新疆机场(集团)有限责任公司阿克苏管理分公司第四季度招聘100人历年真题汇编附答案解析
- 教务老师管理培训课件
- 顶管施工工艺课件
- 医院科主任培训课件
- 多光谱成像原理课件
- 小儿针四缝课件
- 民族区域自治法课件
- 天文学基础知识历法
- (2025年标准)优先认购权 协议书
- 2025三力测试考试题库及答案
- 三菱系统M70加工中心面板基本操作
- 船舶伙食管理办法
评论
0/150
提交评论