计算方法B上机报告

合集下载

上机实验报告(精选11篇)

上机实验报告(精选11篇)

上机实验报告篇1用户名se××××学号姓名学院①实验名称:②实验目的:③算法描述(可用文字描述,也可用流程图):④源代码:(.c的文件)⑤用户屏幕(即程序运行时出现在机器上的画面):2.对c文件的要求:程序应具有以下特点:a可读性:有注释。

b交互性:有输入提示。

c结构化程序设计风格:分层缩进、隔行书写。

3.上交时间:12月26日下午1点-6点,工程设计中心三楼教学组。

请注意:过时不候哟!四、实验报告内容0.顺序表的插入。

1.顺序表的删除。

2.带头结点的单链表的\'插入。

3.带头结点的单链表的删除。

注意:1.每个人只需在实验报告中完成上述4个项目中的一个,具体安排为:将自己的序号对4求余,得到的数即为应完成的项目的序号。

例如:序号为85的同学,85%4=1,即在实验报告中应完成顺序表的删除。

2.实验报告中的源代码应是通过编译链接即可运行的。

3.提交到个人空间中的内容应是上机实验中的全部内容。

上机实验报告篇2一、《软件技术基础》上机实验内容1.顺序表的建立、插入、删除。

2.带头结点的单链表的建立(用尾插法)、插入、删除。

二、提交到个人10m硬盘空间的内容及截止时间1.分别建立二个文件夹,取名为顺序表和单链表。

2.在这二个文件夹中,分别存放上述二个实验的相关文件。

每个文件夹中应有三个文件(.c文件、.obj文件和.exe文件)。

3. 截止时间:12月28日(18周周日)晚上关机时为止,届时服务器将关闭。

三、实验报告要求及上交时间(用a4纸打印)1.格式:《计算机软件技术基础》上机实验报告用户名se××××学号姓名学院①实验名称:②实验目的:③算法描述(可用文字描述,也可用流程图):④源代码:(.c的文件)⑤用户屏幕(即程序运行时出现在机器上的画面):2.对c文件的要求:程序应具有以下特点:a 可读性:有注释。

b 交互性:有输入提示。

列车运行计算与设计模拟实验系统实验报告

列车运行计算与设计模拟实验系统实验报告

列车运行计算上机实验报告一、机车、列车、线路等数据录入1、线路数据截图第一部分第二部分第三部分2、机车数据截图1)DF4F机车数据截图DF4H-251158机车基本数据DF4H-251158机车牵引特性曲线DF4H-251158机车燃油曲线2)SS1机车数据截图SS1-251158机车基本数据SS1-251158机车牵引特性曲线SS1-25115机车电阻制动特性曲线SS1-251158机车有功电流曲线3、列车数据截图251158-A列车基本数据251158-B列车基本数据251158-C列车基本数据二、运行数据对比分析1、对同一列车分别在B站停车和通过的数据对比分析表1:列车251158-A走行数据统计1)在走行时间和速度方面,列车在通过B站停车与通过B站不停车相比,在相同区间内,走行时间要长,平均速度也低,在B-C区段内达到最高速度的位置也要延后。

是因为设置了在B站停车120s,所以平均速度肯定会因为有停车的缘故而降低。

设置了停车站以后,列车从速度为0牵引到最高速度时所需要的距离肯定会比直接通过B站要长。

2)在能耗消耗方面,列车在通过B站停车与通过B站不停车相比,A-B区间内能耗消耗要小,B-C区段内能耗消耗大,整个A-C区段内能耗消耗要大。

是因为在A-B区段,列车要准备在B站停车,那么这一部分的牵引力消耗就会因为进站停车而降低,取而代之的制动能耗与牵引能耗相比小很多,所以会导致进站停车的A-B区段能耗消耗小。

但在B站出站后,列车需要通过牵引加速到最高速度,这一部分的能耗消耗比直接通过B站然后保持惰行的列车消耗的能耗要大得多,所以导致了再出B站后的B-C区段消耗的能耗要大。

从整体上来说进站停车的列车比直接通过的列车所消耗的能耗要大。

2、对同一机车牵引不同车辆的运行数据对比对比表1和表2分析DF4H牵引机车分别牵引质量3300t和2000t的车辆时的走行数据,对比分析两者的时间、速度和能耗等各方面数据。

数值计算方法上机实验报告

数值计算方法上机实验报告

数值计算方法上机实验报告
一、实验目的
本次实验的主要目的是熟悉和掌握数值计算方法,学习梯度下降法的
原理和实际应用,熟悉Python语言的编程基础知识,掌握Python语言的
基本语法。

二、设计思路
本次实验主要使用的python语言,利用python下的numpy,matplotlib这两个工具,来实现数值计算和可视化的任务。

1. 首先了解numpy的基本使用方法,学习numpy的矩阵操作,以及numpy提供的常见算法,如矩阵分解、特征值分解等。

2. 在了解numpy的基本操作后,可以学习matplotlib库中的可视化
技术,掌握如何将生成的数据以图表的形式展示出来。

3. 接下来就是要学习梯度下降法,首先了解梯度下降法的主要原理,以及具体的实际应用,用python实现梯度下降法给出的算法框架,最终
可以达到所期望的优化结果。

三、实验步骤
1. 熟悉Python语言的基本语法。

首先是熟悉Python语言的基本语法,学习如何使用Python实现变量
定义,控制语句,函数定义,类使用,以及面向对象编程的基本概念。

2. 学习numpy库的使用方法。

其次是学习numpy库的使用方法,学习如何使用numpy库构建矩阵,学习numpy库的向量,矩阵操作,以及numpy库提供的常见算法,如矩阵分解,特征值分解等。

3. 学习matplotlib库的使用方法。

课内上机实验报告

课内上机实验报告

实验一:P60.3某百货公司连续40天的商品销售额如下表所示:根据表中的数据进行适当的分组,编制频数分布表,并绘制直方图。

操作步骤:1.打开数据文件。

2.选择数据菜单中的“排序”选项对数据按变量值升序排序。

3.选择“数据分析”对话框中“直方图”,跳出“直方图”对话框。

4.在“输入区域”对应编辑框输入学生成绩数据的引用。

5.在“接受区域”对应编辑框输入数据划分单元格的引用。

6.单击确定。

结果输出如下在图中显示的统计结果中,可以看见输出的内容分为两部分,一部分是数据表示形式,一部分是直方图形式。

在数据表部分,显示每个区间中的日销售额及累计百分率数值。

通过该统计结果,我们可以知道,日销售额有19个在49万~41万之间,13个在41万~33万之间,7个在33万~25万之间,1个在25万及以下。

实验二:P157,3实验内容:某大学生为了解学生每天上网的时间,在全校7500名同学中采取不重复抽样方法随机抽取36人,调查他们每天上网的时间,得到下面的数据(单位:小时):求该校大学生平均上网时间的置信区间,置信水平分别为90%,95%和99%。

操作步骤:1.在excel中输入以上36人的平均上网时间。

2.运用计算公式计算出各指标。

3.以下为计算结果:(2.863481748,3.769851585),即我们有90%的把握认为学生每天上网的时间平均在2.863481748(小时)到3.769851585(小时)之间,;置信水平为95%时大学生平均上网时间的置信区间为(2.772141751,3.861191582),即我们有95%的把握认为学生每天上网的时间平均在2.772141751(小时)到3.861191582 (小时)之间;置信水平为99%时大学生平均上网时间的置信区间为(2.58607496,4.047258373),即我们有99%的把握认为学生每天上网的时间平均在2.58607496(小时)到4.047258373 (小时)之间。

计算方法与计算 实验一误差分析

计算方法与计算 实验一误差分析
(1)MATLAB 主程序 function [k,juecha,xiangcha,xk]= liti112(x0,x1,limax) % 输入的量--x0是初值, limax是迭代次数和精确值x;
% 输出的量--每次迭代次数k和迭代值xk,
%
--每次迭代的绝对误差juecha和相对误差xiangcha,
误差分析
误差问题是数值分析的基础,又是数值分析中一个困难的课题。在实际计算 中,如果选用了不同的算法,由于舍入误差的影响,将会得到截然不同的结果。 因此,选取算法时注重分析舍入误差的影响,在实际计算中是十分重要的。同时, 由于在数值求解过程中用有限的过程代替无限的过程会产生截断误差,因此算法 的好坏会影响到数值结果的精度。 一、实验目的
因为运行后输出结果为: y 1.370 762 168 154 49, yˆ =1.370 744 664 189
38, R 1.750 396 510 491 47e-005, WU= 1.782 679 830 970 664e-005 104 . 所
以, yˆ 的绝对误差为 10 4 ,故 y
③ 运行后输出计算结果列入表 1–1 和表 1-2 中。
④ 将算法 2 的 MATLAB 调用函数程序的函数分别用 y1=15-2*x^2 和
y1=x-(2*x^2+x-15)/(4*x+1)代替,得到算法 1 和算法 3 的调用函数程序,将其保
存,运行后将三种算法的前 8 个迭代值 x1, x2 ,, x8 列在一起(见表 1-1),进行
的精确解 x* 2.5 比较,观察误差的传播.
算法 1 将已知方程化为同解方程 x 15 2x2 .取初值 x0 2 ,按迭代公式
xk1 15 2xk2

大学计算机实验报告心得(3篇)

大学计算机实验报告心得(3篇)

大学计算机实验报告心得(3篇)在未学习计算机之前,我从不知道它究竟是干什么用的,为什么许多许多的人都要迫不及待的地要去学它,同时也有人陷入计算机的泥潭,不能自拔。

自从我触摸到它的时候,即教师教给我们怎样使用计算机时,我才明白它的重要性。

它涉及了生活的各个方面以及各个层次的人都离不开它,同时也明白了它的利与弊。

我在读小学的时候第一次接触计算机觉得很新奇。

我清楚的记得,当时有一个清楚的想法,那就是肯定要学好计算机。

但随着自己对电脑接触的不断深入,对计算机的熟悉越来越深,特殊是刚进到高中,使用了各种办公软件,可是在设计和办公过程中,当遇到一些电脑系统出错导致文件成果丧失的突发问题时。

我才深深地感受到自己计算机学问是多么的欠缺,自己终归不是学计算机专业的,对计算机学问的把握都是零散的,对这些突发问题只能束手无策。

于是我暗自宣誓,无论如何,要学好计算机,但上高中是我忙于课业学习,没有足够的时间学习计算机学问。

这一只是一个很大的圆满,所以我在高中时就打算大学后肯定要好好学习计算机学问,把落下的都补回来。

令我快乐的是,大学计算机课时许多,我可以好好利用它来猎取我想要的学问。

在课堂上我专心听讲,仔细做笔记。

实践课上也好好练习,学到了许多新的学问。

真的很值啊。

我对自己也提了许多要求,只为了学好学问,向全方位人才买件一步。

首先,我要了解肯定的硬件学问。

不少人刚开头学电脑就抱本DOS 或WINDOWS操作指南之类的教材,坐在电脑前将教材上的命令一个个使用一次。

这样的话,对电脑硬件一无所知怎能把握好对它们的操作?比方,对内存和硬盘的概念不理解,就难于理解存盘与未存盘的区分,对硬盘、软盘的作用不明白,就难于理解什么时候用软盘什么时候用硬盘等等。

由于应用系统的操作有很多是针对硬件的,对硬件的把握能推动应用软件的学习。

其次,对自己所要学习的软件要有明确的熟悉。

计算机软件分为系统软件和应用软件,应用软件是能直接为用户解决某一特定问题的软件,它必需以系统软件为根底。

计算机上机实验内容及实验报告要求实验报告

计算机上机实验内容及实验报告要求实验报告

计算机上机实验内容及实验报告要求实验报告
上机实验内容可以根据具体的课程和学科要求来设定,以下是一个示例:
上机实验内容:
1. 设计一个简单的计算器程序,能够实现基本的四则运算。

2. 编写一个程序,实现对学生成绩的管理,包括添加、删除、查询学生信息等功能。

3. 使用Python编写一个简单的文本编辑器,能够实现打开、编辑、保存文件等功能。

实验报告要求:
1. 封面:包括实验标题、班级、姓名等基本信息。

2. 实验目的:阐述本次实验的目标和意义。

3. 实验原理:简要介绍实验所涉及的基本原理和背景知识。

4. 实验步骤:详细描述实验的具体步骤和操作过程。

5. 实验结果:展示实验过程中产生的结果和数据,可以使用截图、表格等形式。

6. 实验分析:对实验结果进行分析和解释,可以结合相关理论知识加以说明。

7. 实验总结:总结实验的过程和结果,总结实验中所学到的知识和经验。

8. 实验改进:提出对实验的改进意见和建议,指出可能存在的不足之处和改进方向。

9. 参考文献:列出实验过程中参考的相关文献和资料。

注意事项:
1. 实验报告应使用规范的学术写作语言,遵循论文写作规范。

2. 图表应清晰可读,标注明确。

3. 所有使用的源代码和数据应在实验报告中附上。

4. 提交实验报告时应按要求进行格式排版,并正确命名文件。

数值计算方法上机实验报告

数值计算方法上机实验报告

数值计算方法上机实验报告实验目的:复习和巩固数值计算方法的基本数学模型,全面掌握运用计算机进行数值计算的具体过程及相关问题。

利用计算机语言独立编写、调试数值计算方法程序,培养学生利用计算机和所学理论知识分析解决实际问题的能力。

上机练习任务:利用计算机基本C 语言编写并调试一系列数值方法计算通用程序,并能正确计算给定题目,掌握调试技能。

掌握文件使用编程技能,如文件的各类操作,数据格式设计、通用程序运行过程中文件输入输出运行方式设计等。

一、各算法的算法原理及计算机程序框图1. 列主元高斯消去法算法原理:高斯消去法是利用现行方程组初等变换中的一种变换,即用一个不为零的数乘一个方程后加只另一个方程,使方程组变成同解的上三角方程组,然后再自下而上对上三角方程组求解。

列选住院是当高斯消元到第k 步时,从k 列的kk a 以下(包括kk a )的各元素中选出绝对值最大的,然后通过行交换将其交换到kk a 的位置上。

交换系数矩阵中的两行(包括常数项),只相当于两个方程的位置交换了,因此,列选主元不影响求解的结果。

●源程序:#define N 200#include "stdio.h"#include "math.h"FILE *fp1,*fp2;void LZ(){int n,i,j,k=0,l;double d,t,t1;static double x[N],a[N][N];fp1=fopen("a1.txt","r");fp2=fopen("b1.txt","w");fscanf(fp1,"%d",&n);for(i=0;i<n;++i)for(j=0;j<=n;++j){fscanf(fp1,"%lf",&a[i][j]);}{d=a[k][k];l=k;i=k+1;do{if(fabs(a[i][k])>fabs(d)) /*选主元*/{d=a[i][k];l=i;}i++;}while(i<n);if(d==0){printf("\n输入矩阵有误!\n");}else{ /*换行*/if(l!=k){for(j=k;j<=n;j++){t=a[l][j];a[l][j]=a[k][j];a[k][j]=t;}}}for(j=k+1;j<=n;j++) /*正消*/ a[k][j]/=a[k][k];for(i=k+1;i<n;i++)for(j=k+1;j<=n;j++)a[i][j]-=a[i][k]*a[k][j];k++;}while(k<n);if(k!=0){for(i=n-1;i>=0;i--) /*回代*/ {t1=0;for(j=i+1;j<n;j++)t1+=a[i][j]*x[j];x[i]=a[i][n]-t1;}for(i=0;i<n;i++)fprintf(fp2,"\n 方程组的根为x[%d]=%lf",i+1,x[i]); fclose(fp1); fclose(fp2); }main() { LZ(); }● 具体算例及求解结果:用列选主元法求解下列线性方程组⎪⎩⎪⎨⎧=++=++=-+28x x 23x 2232832321321321x x x x x x 输入3 输出结果:方程组的根为x[1]=6.0000001 2 -3 8 方程组的根为x[2]=4.000000 2 1 3 22 方程组的根为x[3]=2.000000 3 2 1 28● 输入变量、输出变量说明:输入变量:ij a 系数矩阵元素,i b 常向量元素 输出变量:12,,n b b b 解向量元素2. 杜里特尔分解法解线性方程● 算法原理:求解线性方程组Ax b =时,当对A 进行杜里特尔分解,则等价于求解LUx b =,这时可归结为利用递推计算相继求解两个三角形(系数矩阵为三角矩阵)方程组,用顺代,由Ly b =求出y ,再利用回带,由Ux y =求出x 。

《数值分析》上机实验报告

《数值分析》上机实验报告

数值分析上机实验报告《数值分析》上机实验报告1.用Newton 法求方程 X 7-X 4+14=0在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001)。

1.1 理论依据:设函数在有限区间[a ,b]上二阶导数存在,且满足条件{}αϕ上的惟一解在区间平方收敛于方程所生的迭代序列迭代过程由则对任意初始近似值达到的一个中使是其中上不变号在区间],[0)(3,2,1,0,)(')()(],,[x |))(),((|,|,)(||)(|.4;0)(.3],[)(.20)()(.110......b a x f x k x f x f x x x Newton b a b f a f mir b a c x f ab c f x f b a x f b f x f k k k k k k ==-==∈≤-≠>+令)9.1()9.1(0)8(4233642)(0)16(71127)(0)9.1(,0)1.0(,1428)(3225333647>⋅''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f故以1.9为起点⎪⎩⎪⎨⎧='-=+9.1)()(01x x f x f x x k k k k 如此一次一次的迭代,逼近x 的真实根。

当前后两个的差<=ε时,就认为求出了近似的根。

本程序用Newton 法求代数方程(最高次数不大于10)在(a,b )区间的根。

1.2 C语言程序原代码:#include<stdio.h>#include<math.h>main(){double x2,f,f1;double x1=1.9; //取初值为1.9do{x2=x1;f=pow(x2,7)-28*pow(x2,4)+14;f1=7*pow(x2,6)-4*28*pow(x2,3);x1=x2-f/f1;}while(fabs(x1-x2)>=0.00001||x1<0.1); //限制循环次数printf("计算结果:x=%f\n",x1);}1.3 运行结果:1.4 MATLAB上机程序function y=Newton(f,df,x0,eps,M)d=0;for k=1:Mif feval(df,x0)==0d=2;breakelsex1=x0-feval(f,x0)/feval(df,x0);ende=abs(x1-x0);x0=x1;if e<=eps&&abs(feval(f,x1))<=epsd=1;breakendendif d==1y=x1;elseif d==0y='迭代M次失败';elsey= '奇异'endfunction y=df(x)y=7*x^6-28*4*x^3;Endfunction y=f(x)y=x^7-28*x^4+14;End>> x0=1.9;>> eps=0.00001;>> M=100;>> x=Newton('f','df',x0,eps,M);>> vpa(x,7)1.5 问题讨论:1.使用此方法求方解,用误差来控制循环迭代次数,可以在误差允许的范围内得到比较理想的计算结果。

最优化理论与方法上机实验报告

最优化理论与方法上机实验报告
4 / 25
最优化理论与方法上机报告
函数句柄和匿名函数的操作符均为@,匿名函数是函数句柄的一种特殊用法, 这里所得到的函数句柄变量不指向特定的函数(即不指向函数M文件中的函数 名),而是指向一个函数表达式(具体表达式).在命令窗口中输入@func就是用 了函数句柄将其传给objf变量,而step=golden(@(x)objf(X0+x*d),0,1, epsilon);则是通过匿名函数将函数传给golden程序,此两处的改变就大大提高 了程序的运行速度!
分为了三段, 比较 f ( x1 )与f ( x2 ) 的大小, 若 f ( x1 ) f x2 , 则 x* [ x1 , b], 去掉 [a, x1 ]; 若 f ( x1 ) f x2 , 则 x* [a, x2 ], 去掉 [ x2 , b] ,然后在余下的区间上根据对称原则再 计算一个对称点的函数值,再重复上述操作,直到满足精度. 1.2 实现及结果 采用 matlab 2011a 实现,命名为 golden,具体程序见附录 golden.m 文件. 该程序的使用方法, 请参见附录中golden.m文件中绿色部分, 下面给出程序 运行结果,其中目标函数为: f ( x) x12 x1 6 ,精度采用默认: 106 .
(a)采用默认精度
(b)精度为0.001 图 1-3-1 牛顿法运行结果
牛顿法收敛速度快,正如上图(a)所示,达到 106 精度只需 18 步,而最速 下降法却需要 366304 步,两者的收敛速度由此可见一斑,可谓有天壤之别! 3.4 体会 由于牛顿法收敛速度快,且人工求目标函数的梯度、Hesse 矩阵,有时较为 繁杂,故算法实现时,实现了自动求梯度和 Hesse 矩阵,这样便在程序的易用性 和时间复杂度两者间得到了很好的折中.

上机报告总结模板下载(通用3篇)

上机报告总结模板下载(通用3篇)

上机报告总结模板下载第1篇一、实验原理(1)电子的自旋轨道磁矩与自旋磁矩 l原子中的电子由于轨道运动,具有轨道磁矩,其数值为:l号表示方向同Pl相反。

在量子力学中PePl2me,负,因而lB1)B2me称为玻尔磁子。

电子除了轨道运动外,其中e还具有自旋运动,因此还具有自旋磁矩,其数值表示为:se Psme。

由于原子核的磁矩可以忽略不计,原子中电子的轨道磁矩和自旋磁矩合成原子的总磁矩:jgej(j1)l(l1)s(s1)Pjg12me,其中g是朗德因子:2j(j1)。

在外磁场中原子磁矩要受到力的作用,其效果是磁矩绕磁场的方向作旋进,也就是Pj 绕着磁场方向作旋进,引入回磁比同时原子角动量Pj和原子总磁矩Pjm ,mj,j1,j2,e2me,总磁矩可表示成jPj。

j取向是量子化的。

Pj在外磁场方向上的投影为:其中m称为磁量子数,相应磁矩在外磁场方向上j。

的投影为: jmmgB ;mj,j1,j2,(2)电子顺磁共振 j。

如果在原子所在的稳定磁场区又叠加一个与之垂直的交变磁场,且角频率满足条件gB B,即EB,刚好满足原子在稳定外磁场中的邻近二能级差时,二邻近能级之间就有共振跃迁,我们称之为电子顺磁共振。

P当原子结合成分子或固体时,由于电子轨道运动的角动量常是猝灭的,即j近似为零,所以分子和固体中的磁矩主要是电子自旋磁矩的贡献。

根据泡利原理,一个电子轨道最多只能容纳两个自旋相反的电子,若电子轨道都被电子成对地填满了,它们的自旋磁矩相互抵消,便没有固有磁矩。

通常所见的化合物大多数属于这种情况,因而电子顺磁共振只能研究具有未成对电子的特殊化合物。

(3)弛豫时间实验样品是含有大量具有不成对电子自旋所组成的系统,虽然各个粒子都具有磁矩,但是在热运动的扰动下,取向是混乱的,对外的合磁矩为零。

当自旋系统处在恒定的外磁场H0中时,系统内各质点的磁矩便以不同的角度取向磁场H0的方向,并绕着外场方向进动,从而形成一个与外磁场方向一致的宏观磁矩M。

计算方法大作业——三次样条插值

计算方法大作业——三次样条插值
8
计算方法上机报告
此完成所有数据的输入。继续按 Enter 键会出现提示“选择封闭方程组的边界条件: 第 一类边界条件输入 1,第二类边界条件输入 2,第三类边界条件输入 3。 ”根据已知情况 选择相应的边界条件,若为自然三次样条插值,则选 1,并将插值区间两端点的二阶导 数值设置为 0。输入完成之后按 Enter 开始求解,程序运行结束后命令窗口会显示要求 的三次样条插值函数,同时会出现该插值函数以及插值节点的图像,便于直接观察。 2.3 算例及计算结果 (1) 《数值分析》课本第 137 页的例题 4.6.1,已知函数 y=f(x)的数值如下表,求它 的自然三次样条插值函数。 xi yi -3 7 -1 11 0 26 3 56 4 29
(2) 给定函数 f ( x)
3 x 1 1 x 0 0 x3 3 x 4
1 (1 x 1) 。取等距节点,构造牛顿插值多项式 N5(x) 1 25x 2 和 N10(x)及三次样条插值函数 S10(x)。分别将三种插值多项式与 f(x)的曲线画在同一个
N10 x
22757 10 5444 8 20216 6 17147 4 3725 2 x x x x x 1 103 11 53 139 221
将牛顿插值多项式 N5(x)和 N10(x)及三次样条插值函数 S10(x)分别与 f(x)的曲线画在 同一个坐标系上进行比较,如图 12。可以看出三次样条函数与原函数符合的非常好, 对于低次的牛顿插值多项式,与原函数的大致趋势相同,而高次的牛顿插值多项式由 于龙格现象的出现,与原函数之间相差比较大。
S ( xi ) S ( xi ), ( xi ) S ( xi ), S S ( x ) S ( x ), i i i 1, 2, , n 1

(完整版)哈工大-数值分析上机实验报告

(完整版)哈工大-数值分析上机实验报告

实验报告一题目:非线性方程求解摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。

本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。

前言:(目的和意义)掌握二分法与Newton法的基本原理和应用。

数学原理:对于一个非线性方程的数值解法很多。

在此介绍两种最常见的方法:二分法和Newton法。

对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)<0,且f(x)在[a,b]内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。

重复运行计算,直至满足精度为止。

这就是二分法的计算思想。

Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式产生逼近解x*的迭代数列{x k},这就是Newton法的思想。

当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。

另外,若将该迭代公式改进为其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。

程序设计:本实验采用Matlab的M文件编写。

其中待求解的方程写成function的方式,如下function y=f(x);y=-x*x-sin(x);写成如上形式即可,下面给出主程序。

二分法源程序:clear%%%给定求解区间b=1.5;a=0;%%%误差R=1;k=0;%迭代次数初值while (R>5e-6) ;c=(a+b)/2;if f12(a)*f12(c)>0;a=c;elseb=c;endR=b-a;%求出误差k=k+1;endx=c%给出解Newton法及改进的Newton法源程序:clear%%%% 输入函数f=input('请输入需要求解函数>>','s')%%%求解f(x)的导数df=diff(f);%%%改进常数或重根数miu=2;%%%初始值x0x0=input('input initial value x0>>');k=0;%迭代次数max=100;%最大迭代次数R=eval(subs(f,'x0','x'));%求解f(x0),以确定初值x0时否就是解while (abs(R)>1e-8)x1=x0-miu*eval(subs(f,'x0','x'))/eval(subs(df,'x0','x'));R=x1-x0;x0=x1;k=k+1;if (eval(subs(f,'x0','x'))<1e-10);breakendif k>max;%如果迭代次数大于给定值,认为迭代不收敛,重新输入初值ss=input('maybe result is error,choose a new x0,y/n?>>','s');if strcmp(ss,'y')x0=input('input initial value x0>>');k=0;elsebreakendendendk;%给出迭代次数x=x0;%给出解结果分析和讨论:1.用二分法计算方程在[1,2]内的根。

电力系统稳态实验报告

电力系统稳态实验报告

电力系统稳态潮流计算上机实验报告一、问题如下图所示的电力系统网络,分别用牛顿拉夫逊法、PQ解耦法、高斯赛德尔法、保留非线性法计算该电力系统的潮流。

发电机的参数如下,*表示任意值负荷参数如下,如上图所示的电力系统,可以看出,节点1、2、3是PQ节点,节点4是PV节点,而将节点5作为平衡节点。

根据问题所需,采用牛顿拉夫逊法、PQ解耦法、高斯赛德尔法、保留非线性法,通过对每次修正量的收敛判据的判断,得出整个电力系统的潮流,并分析这四种方法的收敛速度等等。

算法分析1.牛顿拉夫逊法节点5为平衡节点,不参加整个的迭代过程,节点1、2、3为PQ节点,节点4为PV 节点,计算修正方程中各量,进而得到修正量,判断修正量是否收敛,如果不收敛,迭代继续,如果收敛,算出PQ节点的电压幅值以及电压相角,得出PV节点的无功量以及电压相角,得出平衡节点的输出功率。

潮流方程的直角坐标形式,()()∑∑∈∈++-=ij j ij j ij i ij j ij j ij i i e B f G f f B e G e P()()∑∑∈∈+--=ij j ij j ij i ij j ij j ij i i e B f G e f B e G f Q直角坐标形式的修正方程式,11112n n n m n m -----∆⎡⎤⎡⎤∆⎡⎤⎢⎥⎢⎥∆=-⎢⎥⎢⎥⎢⎥∆⎣⎦⎢⎥⎢⎥∆⎣⎦⎣⎦PHN e Q M L f UR S修正方程式中的各量值的计算,()()][∑∑∈∈++--=∆ij j ij j ij i ij j ij j ij i is i e B f G f f B e G e p P()()][∑∑∈∈+---=∆ij j ij j ij i ij j ij j ij i is i e B f G e f B e G f Q Q)(2222i i is i f e U U +-=∆Jacobi 矩阵的元素计算,()()()ij i ij i i ijij j ij j ii i ii i jj iB e G f j i Q M G f B e B e G f j i e ∈-⎧≠∂∆⎪==⎨++-=∂⎪⎩∑()()()ij i ij i i ijij j ij j ii i ii i jj iG e B f j i Q L G e B f G e B f j i f ∈+⎧≠∂∆⎪==⎨--++=∂⎪⎩∑)()(202i j i j e e U R ijij i =≠⎩⎨⎧-=∂∆∂=)()(202i j i j f f U S ijij i =≠⎩⎨⎧-=∂∆∂=牛顿拉夫逊法潮流计算的流程图如下,2.PQ 解耦法如同牛顿拉夫逊法,快速解耦法的前提是,输电线路的阻抗要比电阻大得多,并且输电线路两端的电压相角相差不大,此时可利用PQ 快速解耦法,来计算整个电力系统网络的潮流。

电力系统潮流计算实验报告

电力系统潮流计算实验报告

11. 手算过程已知:节点1:PQ 节点, s(1)= -0.5000-j0.3500 节点2:PV 节点, p(2)=0.4000 v(2)=1.0500 节点3:平衡节点,U(3)=1.0000∠0.0000 网络的连接图:0.0500+j0.2000 1 0.0500+j0.2000231)计算节点导纳矩阵由2000.00500.012j Z 71.418.112j y ;2000.00500.013j Z71.418.113j y ;导纳矩阵中的各元素:42.936.271.418.171.418.1131211j j j y y Y ;71.418.11212j y Y ; 71.418.11313j y Y; 21Y 71.418.11212j y Y ; 71.418.12122j y Y;002323j y Y;31Y 71.418.11313j y Y; 32Y 002323j y Y;71.418.13133j y Y;形成导纳矩阵BY :71.418.10071.418.10071.418.171.418.171.418.171.418.142.936.2j j j j j j j j j Y B2)计算各PQ、PV 节点功率的不平衡量,及PV 节点电压的不平衡量:取:000.0000.1)0(1)0(1)0(1j jf e U000.0000.1)0(2)0(2)0(2j jf e U节点3是平衡节点,保持000.0000.1333j jf e U为定值。

nj j jij jij ijij jij i ieB fG f fB eG e P1)0()0()0()0()0()0()0(;2nj j jij jij ijij jij i ie B fG e f B eG f Q 1)0()0()0()0()0()0()0(;);(2)0(2)0(2)0(iiif e U)0.142.90.036.2(0.0)0.042.90.136.2(0.1)0(1P)0.171.40.018.1(0.0)0.071.40.118.1(0.1 )0.171.40.018.1(0.0)0.071.40.118.1(0.1 0.0 ;)0.142.90.036.2(0.1)0.042.90.136.2(0.0)0(1Q)0.171.40.018.1(0.1)0.071.40.118.1(0.0 )0.171.40.018.1(0.1)0.071.40.118.1(0.0 0.0 ;)0.171.40.018.1(0.0)0.071.40.118.1(0.1)0(2P)0.171.40.018.1(0.0)0.071.40.118.1(0.1 )0.00.00.00.0(0.0)0.10.00.10.0(0.1 0.0 ;101)(222)0(22)0(22)0(2f e U;于是:;)0()0(iiiP P P ;)0()0(iiiQQ Q);(2)0(2)0(22)0(iiiif e UU5.00.05.0)0(11)0(1P P P ;35.00.035.0)0(11)0(1QQ Q;4.00.04.0)0(22)0(2P P P ;1025.0)01(05.1)(2222)0(22)0(2222)0(2f e UU3)计算雅可比矩阵中各元素雅可比矩阵的各个元素分别为:3ji ij ji ij j i ij j i ij ji ij j i ij e U S f U R e Q L f Q J e P N f P H 22;;; 又: nj j jij jij i jij jij i ieB fG f fB eG e P1)0()0()0()0()0()0()0(; nj j jij jij ijij jij iieB fG e fB eG f Q 1)0()0()0()0()0()0()0(;);(2)0(2)0(2)0(iiif e U)0(1P )0(111)0(111)0(1)0(111)0(111)0(1e Bf G f f B e G e)0(212)0(212)0(1)0(212)0(212)0(1e B fG f f B e G e313313)0(1313313)0(1e Bf G f f B e G e ;)()()0(111)0(111)0(1)0(111)0(111)0(1)0(1e Bf Ge f B e G f Q)()()0(212)0(212)0(1)0(212)0(212)0(1e Bf G e f B e G f)()(313313)0(1313313)0(1e Bf G e f B e G f;)0(2P )0(121)0(121)0(2)0(121)0(121)0(2e Bf G f f B e G e)0(222)0(222)0(2)0(222)0(222)0(2eB fG f fBeG e323323)0(2323323)0(2e Bf G f f B e G e ;)(2)0(22)0(22)0(2f e U42.90.171.40.171.4313)0(212)0(1)0(1)0(11e B e Bf P H ; 36.20.118.10.118.10.136.222313)0(212)0(111)0(1)0(1)0(11 e G e G e G e P N 36.20.118.10.118.1313)0(212)0(1)0(1)0(11 e G e G f Q J442.90.171.40.171.40.142.922313)0(212)0(111)0(1)0(1)0(11 e B e B e B e Q L 71.40.171.4)0(112)0(2)0(1)0(12 e B f P H ; 18.10.118.1)0(112)0(2)0(1)0(12 e G e P N ; 18.10.118.1)0(112)0(2)0(1)0(12 e G f Q J ;71.40.171.4)0(112)0(2)0(1)0(12 e B e Q L ; 71.40.171.4)0(221)0(1)0(2)0(21 e B f P H ; 11.40.111.4)0(221)0(1)0(2)0(21 e G e P N ; 0)0(12)0(2)0(21 f U R ; 0)0(12)0(2)0(21 e U S ; 71.40.10.00.171.4323)0(121)0(2)0(2)0(22 e B e B f P H ; 18.10.10.00.118.10.118.122323)0(121)0(222)0(2)0(2)0(22 e G e G e G e P N ;02)0(2)0(22)0(2)0(22 f f U R ; 0.20.122)0(2)0(22)0(2)0(22 e e U S ; 得到K=0时的雅可比矩阵:0.200018.171.418.171.471.418.142.936.218.171.436.242.9)0(J4)建立修正方程组:5)0(2)0(2)0(1)0(10.200011.4959.1011.4959.10959.1011.4918.2122.811.4959.1022.8918.210975.04.035.08.0e f e f 解得:04875.001828.00504.00176.0)0(2)0(2)0(1)0(1e f e f 因为 )0()0()1(iiie e e ; )0()0()1(iiif f f ;所以 9782.00218.00.1)0(1)0(1)1(1e e e ; 0158.00158.00)0(1)0(1)1(1f f f ;05125.105125.00.1)0(2)0(2)1(2e e e ;05085.005085.00)0(2)0(2)1(2f f f ;5)运用各节点电压的新值进行下一次迭代:即取: 0158.09782.0)1(1)1(1)1(1j jf e U05085.005125.1)1(2)1(2)1(2j jf e U节点3时平衡节点,保持000.0000.1333j jf e U为定值。

计算方法实验上机报告(完整版)

计算方法实验上机报告(完整版)

简单迭代法#include<stdio.h>#include<math.h>#define x0 3.0#define MAXREPT 1000#define EPS 1E-6#define G(x) pow(12*x+sin(x)-1,1.0/3)void main(){int i;double x_k=x0,x_k1=x0;printf("k\txk\n");for(i=0;i<MAXREPT;i++){printf("%d\t%g\n",i,x_k1);x_k1=G(x_k);if (fabs(x_k1-x_k)<EPS){printf("THE ROOT IS x=%g,k=%d\n",x_k1,i);return;}x_k=x_k1;}printf("AFTER %d repeate,no solved.\n",MAXREPT);}结果牛顿迭代法一#include<stdio.h>#include<math.h>#define x0 3.0#define MAXREPT 1000#define EPS 1E-6#define G(x) x-(pow(x,3)-sin(x)-12*x+1)/(3*pow(x,2)-cos(x)-12) void main(){int i;double x_k=x0,x_k1=x0;printf("k\txk\n");for(i=0;i<MAXREPT;i++){printf("%d\t%g\n",i,x_k1);x_k1=G(x_k);if (fabs(x_k1-x_k)<EPS){printf("THE ROOT IS x=%g,k=%d\n",x_k1,i);return;}x_k=x_k1;}printf("AFTER %d repeate,no solved.\n",MAXREPT);}结果埃特金加速法#include<stdio.h>#include<math.h>#define x0 3.0#define MAXREPT 1000#define EPS 1E-6#define G(x) (pow(x,3)-sin(x)+1)/12void main(){int i;double x1=x0,x2=x0;double z,y;printf("k\tx1\tx2\txk\n");for(i=0;i<MAXREPT;i++){if(i==0)printf("%d\t\t\t%g\n",i,x2);elseprintf("%d\t%g\t%g\t%g\n",i,y,z,x2);y=G(x1);z=G(y);x2=z-((z-y)*(z-y))/(z-2*y+x1);if (fabs(x2-x1)<EPS){printf("THE ROOT IS x=%g,k=%d\n",x2,i);return;}x1=x2;}printf("AFTER %d repeate,no solved.\n",MAXREPT);} 结果牛顿迭代法二#include<stdio.h>#include<math.h>#define x0 1.5#define MAXREPT 1000#define EPS 1E-6#define G(x) x-(pow(x,3)+pow(x,2)-3*x-3)/(3*pow(x,2)+2*x-3) void main(){int i;double x_k=x0,x_k1=x0;printf("k\txk\n");for(i=0;i<MAXREPT;i++){printf("%d\t%g\n",i,x_k1);x_k1=G(x_k);if (fabs(x_k1-x_k)<EPS){printf("THE ROOT IS x=%g,k=%d\n",x_k1,i);return;}x_k=x_k1;}printf("AFTER %d repeate,no solved.\n",MAXREPT);}结果弦截法#include<stdio.h>#include<math.h>#define x0 0#define x1 1.5#define MAXREPT 1000#define EPS 1E-6#define G(x) pow(x,3)+pow(x,2)-3*x-3void main(){int i;double x_k=x0,x_k1=x1,x_k2=0;double y,z;printf("k\txk\n");for(i=0;i<MAXREPT;i++){printf("%d\t%g\n",i,x_k2);y=G(x_k);z=G(x_k1);x_k2=x_k1-(z*(x_k1-x_k))/(z-y);if (fabs(x_k2-x_k1)<EPS){printf("THE ROOT IS x=%g,k=%d\n",x_k2,i);return;}x_k=x_k1;x_k1=x_k2;}printf("AFTER %d repeate,no solved.\n",MAXREPT); } 结果高斯顺序消元法#include<stdio.h>#include<math.h>#define N 4static double aa[N][N+1]={{2,4,0,1,1},{3,8,2,2,3},{1,3,3,0,6},{2,5,2,2,3}}; int gauss(double a[][N+2],double x[]);void putout(double a[][N+2]);void main(){int i,j,det;double a[N+1][N+2],x[N+1];for(i=1;i<=N;i++)for(j=1;j<=N+1;j++)a[i][j]=aa[i-1][j-1];det=gauss(a,x);if(det!=0)for(i=1;i<=N;i++)printf(" x[%d]=%g",i,x[i]);printf("\n");}int gauss(double a[][N+2],double x[]){int i,j,k;double c;putout(a);for(k=1;k<=N-1;k++){ if(fabs(a[k][k])<1e-17){printf("\n pivot element is 0.fail!\n");return 0;}for(i=k+1;i<=N;i++){c=a[i][k]/a[k][k];for(j=k;j<=N+1;j++){a[i][j]=a[i][j]-c*a[k][j];}}putout(a);}if(fabs(a[N][N])<1e-17){printf("\n pivot element is 0.fail!\n");return 0;}for(k=N;k>=1;k--){x[k]=a[k][N+1];for(j=k+1;j<=N;j++){x[k]=x[k]-a[k][j]*x[j];}x[k]=x[k]/a[k][k];}return(1);}void putout(double a[][N+2]){for(int i=1;i<=N;i++){for(int j=1;j<=N+1;j++)printf("%-15g",a[i][j]);printf("\n");}printf("\n");}结果雅克比迭代法#include<stdio.h>#include<math.h>#define N 5#define EPS 0.5e-4static double aa[N][N]={{4,-1,0,-1,0},{-1,4,-1,0,-1},{0,-1,4,-1,0},{-1,0,-1,4,-1},{0,-1,0,-1,4}}; static double bb[N]={2,1,2,1,2};void main(){int i,j,k,NO;double a[N+1][N+1],b[N+1],x[N+1],y[N+1];double d,sum,max;for(i=1;i<=N;i++){for(j=1;j<=N;j++)a[i][j]=aa[i-1][j-1];b[i]=bb[i-1];}printf("\n 请输入最大迭代次数(尽量取大值!)NO:");scanf("%d",&NO);printf("\n");for(i=1;i<=N;i++)x[i]=0;k=0;printf(" k",' ');for(i=1;i<=N;i++)printf("%8cx[%d]",' ',i);printf("\n 0");for(i=1;i<=N;i++)printf("%12.8g",x[i]);printf("\n");do{for(i=1;i<=N;i++){sum=0.0;for(j=1;j<=N;j++)if(j!=i) sum=sum+a[i][j]*x[j];y[i]=(-sum+b[i])/a[i][i];}max=0.0;for(i=0;i<=N;i++){d=fabs(y[i]-x[i]);if(max<d) max=d;x[i]=y[i];}printf("%6d",k+1);for(i=1;i<=N;i++)printf("%12.8g",x[i]);printf("\n");k++;}while((max>=EPS)&&(k<NO));printf("\nk=%d\n",k);if(k>=NO) printf("\nfail!\n");elsefor(i=1;i<=N;i++)printf("x[%d]=%g\t",i,x[i]);}结果拉格朗日插值多项式#include<stdio.h>#include<math.h>#define N 4doublex[N]={0.56160,0.56280,0.56401,0.56521},y[N]={0.82741,0.82659,0.82577,0.82495}; void main(){double x=0.5635;double L(double xx);double lagBasis(int k,double xx);void output();output();printf("\n近似值L(%g)=%g\n",x,L(x));}double lagBasis(int k,double xx){double lb=1;int i;for(i=0;i<N;i++)if(i!=k) lb*=(xx-x[i])/(x[k]-x[i]);return lb;}double L(double xx){double s=0;int i;for(i=0;i<=N;i++)s+=lagBasis(i,xx)*y[i];return s;}void output(){int i;printf("\n各节点信息:\nxi:");for(i=0;i<N;i++)printf("\t%g",x[i]);printf("\nyi:");for(i=0;i<N;i++)printf("\t%g",y[i]);}结果牛顿插值多项式#include <math.h>#include <stdio.h>int a;#define M 4double x[M+1]={0.4,0.55,0.65,0.8,0.9},y[M+1]={0.41075,0.57815,0.69675,0.88811,1.02652}; void main(){double x;printf("输入x=");scanf("%lf",&x);printf("次数:");scanf("%d",&a);double N(double xx,int a);void output();output();printf("\n%d次牛顿插值多项式N(%g)=%g\n",a,x,N(x,a));}double N(double xx,int a){double s=y[0],d=1;int i,j;double df[M+1][M+1];for(i=0;i<=M;i++)df[i][0]=y[i];for(j=1;j<=a;j++)for(i=j;i<=a;i++)df[i][j]=(df[i][j-1]-df[i-1][j-1])/(x[i]-x[i-j]);printf("\nx\tf(x)\t");for(j=1;j<=a;j++) printf("%5d阶",j);for(i=0;i<=a;i++){printf("\n%g\t%g",x[i],y[i]);for(j=1;j<=i;j++)printf("\t%7.5g",df[i][j]);}for(i=1;i<=a;i++){d*=(xx-x[i-1]);s+=df[i][i]*d;}return s;}void output(){int i;printf("\n各节点信息:\nxi:");for(i=0;i<=M;i++)printf("\t%7g",x[i]);printf("\nyi:");for(i=0;i<=M;i++)printf("\t%7g",y[i]);}结果复合梯形公式#include<stdio.h>#include<math.h>#define f(x) 1/(x*x+1)#define Pi 3.1415926void main(){double a=0,b=1;double T,h,x;int n,i;printf("please input n:");scanf("%d",&n);h=(b-a)/n;x=a;T=0;for(i=1;i<n;i++){x+=h;T+=f(x);}T=(f(a)+2*T+f(b))*h/2;printf("T(%d)=%g\n",n,T);printf("The exact value is %g\n",Pi/4);}复合辛普森公式#include<stdio.h>#include<math.h>#define f(x) 1/(1+x*x)#define Pi 3.1415926void main(){double a=0,b=1;double S,h,x;int n,i;printf("please input Even n:");scanf("%d",&n);h=(b-a)/n;x=a; S=0;for(i=1;i<n;i++){x+=h;if(i%2==0) S+=2*f(x);else S+=4*f(x);}S=(f(a)+S+f(b))*h/3;printf("S(%d)=%g\n",n,S);printf("The exact value is %g\n",Pi/4);}龙贝格公式加速#include<stdio.h>#include<math.h>#define f(x) sin(x)/(1+x)#define M 3void main(){double a=0,b=1;double Long(double a,double b);printf("近似值I=%g\n",Long(a,b));}double Long(double a,double b){int n=1,i=1,j=1;double T[M+1][M+1],h,x,sum;h=b-a;T[0][0]=(f(a)+f(b))/2;for(j=1;j<=3;j++){x=a;h/=2;n*=2;sum=0;for(i=1;i<=n;i+=2){x=a+i*h;sum+=f(x);}T[j][0]=T[j-1][0]/2+h*sum;}for(i=1;i<=M;i++)for(j=1;j<=i;j++){T[i][j]=(pow(4,j)*T[i][j-1]-T[i-1][j-1])/(pow(4,j)-1);}printf("k\tT0\tT1\tT2\tT3\n");for(i=0;i<=M;i++){printf("%d",i);for(j=0;j<=i;j++)printf(" %g",T[i][j]);printf("\n");}return T[M][M];}。

会计上机实验报告[修改版]

会计上机实验报告[修改版]

第一篇:会计上机实验报告会计模拟实验报告姓名:赵波班级:工商101班学号:101565指导教师:岳殿民实验目的会计综合模拟实验是在学生掌握了一定的专业理论知识的基础上,以某个单位在一定时期内发生的实际经济业务资料作为模拟实验对象,采用直观的、逼真的实验材料和道具,包括原始凭证、记账凭证、会计账簿、报表及其他会计实验用具等,让学生在仿真的环境中增强实际操作能力和动手能力。

通过这次实验,使得学生较系统地练习企业会计核算的基本程序和具体方法,加强学生对所学专业理论知识的理解、实际操作的动手能力,提高运用会计基本技能的水平,也是对学生所学专业知识的一个检验。

实验公司简介我们本次模拟的企业原型是广东立竣机床股份有限公司。

它是原广东省机械厅直属的生产各种机床的大型国有企业,于1995 年改制成为股份有限公司,并于1999 年在上海证券交易所挂牌交易。

她位于广州市海珠区新港西路888 号, 占地10 余公顷,注册资本为6000 万元人民币。

该公司设有铸造、加工和装配三个基本生产车间,主要从事立竣一号机床和立竣二号机床的生产。

另设有供气和机修两个辅助生产车间,主要从事蒸汽生产和机器设备维修。

实验的内容及过程一、模拟实验准备阶段在模拟实验开始前,要全面了解模拟企业的概况,如,企业名称和性质,生产工艺概况,会计政策及核算要求等。

同时要了解模拟企业会计工作组织,如,机构设置,财务人员分工,会计规范要求等。

二、模拟实习操作阶段以企业的实际经济业务为实训资料,运用会计工作中的证、账等对会计核算的各步骤进行系统操作实验,包括账薄建立和月初余额的填制、原始凭证、记账凭证的审核和填制,各种账薄的登记、对账、结账等。

实验为我们呈现了一个生产该厂可能涉及的各种基本业务,其各项凭证、账簿以及会计处理程序,按照该厂会计制度要求,具体的步骤如下:1、会计凭证的编制记账凭证的填写要注意记账凭证的名称、编号、日期、有关经济业务内容摘要、有关账户的名称(包括总账、明细分类账)方向和金额、有关原始凭证张数和其他有关资料份数、有关人员的签名或盖章。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算方法B 上机报告第1题某通信公司在一次施工中,需要在水面宽度为20米的河沟底部沿直线走向铺设一条沟底光缆。

在铺设光缆之前需要对沟底的地形进行初步探测,从而估计所需光缆的长度,为工程预算提供依据。

已探测到一组等分点位置的深度数据(单位:米)如下表所示:(1)请用合适的曲线拟合所测数据点;(2)估算所需光缆长度的近似值,并作出铺设河底光缆的曲线图; 问题分析和算法思想:本题的主要目的是对21个测量数据进行拟合,同时对拟合曲线进行线积分即可得到河底光缆长度的近似值,可以用的插值方法很多:多项式插值、Lagrange 插值、Newton 插值、三次样条插值等。

由于数值点较多时,采用高次多项式插值将产生很大的误差,用拉格朗日插值多项式会出现龙格现象。

故为了将所有的数据点都用上,且题中光缆为柔性,可光滑铺设于水底,鉴于此特性,采用三次样条插值的方法较为合适。

计算光缆长度近似值,只需将每两点之间的距离算出,然后依次相加,所得的折线长度,即为光缆长度的近似值。

光缆长度计算公式:191k kk l +===∑⎰⎰⎰算法结构:三次样条算法结构见《计算方法教程》P110。

clear;clc;y=[9.01 8.96 7.96 7.97 8.02 9.05 10.13 11.18 12.26 13.28 13.32 12.61 11.29 10.22 9.15 7.90 7.95 8.86 9.81 10.80 10.93];d=y;plot(x,y,'k.','markersize',15)hold on%%%计算二阶差商for k=1:2for i=21:-1:(k+1)d(i)=(d(i)-d(i-1))/(x(i)-x(i-k));endend%%%假定d的边界条件,采用自然三次样条for i=2:20d(i)=6*d(i+1);endd(1)=0;d(21)=0;%%%追赶法求解带状矩阵的m值a=0.5*ones(1,21);b=2*ones(1,21);c=0.5*ones(1,21);a(1)=0;c(21)=0;u=ones(1,21);u(1)=b(1);r=c;yy(1)=d(1);%%%追的过程for k=2:21l(k)=a(k)/u(k-1);u(k)=b(k)-l(k)*r(k-1);yy(k)=d(k)-l(k)*yy(k-1);end%%%赶的过程m(21)=yy(21)/u(21);for k=20:-1:1m(k)=(yy(k)-r(k)*m(k+1))/u(k);end%%%利用插值点画出拟合曲线k=1;nn=100;xx=linspace(0,20,nn);l=0;for j=1:nnfor i=2:20if xx(j)<=x(i)k=i;break;elsek=i+1;endendh=1;xbar=x(k)-xx(j);xmao=xx(j)-x(k-1);s(j)=(m(k-1)*xbar^3/6+m(k)*xmao^3/6+(y(k-1)-m(k-1)*h^2/6)*xbar+(y(k)-m(k) *h^2/6)*xmao)/h;sp(j)=-m(k-1)*(x(k)-xx(j))^2/(2*h)+m(k)*(xx(j)-x(k-1))^2/(2*h)+(y(k)-y(k-1))/h-(m(k)-m(k-1))*h/6;l(j+1)=(1+sp(j)^2)^0.5*(20/nn)+l(j);%利用第一类线积分求河底光缆的长度end%%%绘图title('光缆插值曲线')xlabel('分点')ylabel('深度')plot(xx,s,'r-','linewidth',1.5)griddisp(['所需光缆长度为',num2str(l(nn+1)),'米'])运行结果:7891011121314光缆插值曲线分点深度第2题假定某天的气温变化记录如下表所示,试用数据拟合的方法找出这一天的气温变化的规律;试计算这一天的平均气温,并试估计误差。

问题分析及算法思路:由于题中所给数据点有25个,此时采用多项式插值的方法做数据近似需要用较高次的多项式,这不仅给计算带来困难,而且有余项带来的误差很大;若采用样条插值计算量虽然不大,但是参数的个数很多,而且没有一个统一的数学公式来表示,对计算带来了很大的麻烦。

所以可考虑使用最小二乘法进行拟合。

在本题中,采用最小二乘法找出这一天的气温变化的规律,依次使用二次函数、三次函数以及四次函数进行拟合,计算其相应的系数,估算误差,并作图比较三个函数之间的区别。

算法结构:最小二乘法算法结构见《计算方法教程》P123。

源程序:x=0:24;y=[15 14 14 14 14 15 16 18 20 20 23 25 28 31 34 31 29 27 25 24 22 20 18 17 16];m=length(x);n=input('请输入函数的次数 ');plot(x,y,'k.',x,y,'-')grid;hold on;n=n+1;G=zeros(m,n+1);G(:,n+1)=y';c=zeros(1,n); %建立c来存放σq=0;f=0;b=zeros(1,m); %建立b用来存放β%%%形成矩阵Gfor j=1:nfor i=1:mG(i,j)=x(1,i)^(j-1);endend%%%建立矩阵Qkfor k=1:nfor i=k:mc(k)=G(i,k)^2+c(k);endc(k)=-sign(G(k,k))*(c(k)^0.5);w(k)=G(k,k)-c(k); %建立w来存放ωfor j=k+1:mw(j)=G(j,k);endb(k)=c(k)*w(k);%%%变换矩阵Gk-1到GkG(k,k)=c(k);for j=k+1:n+1q=0;for i=k:mq=w(i)*G(i,j)+q;ends=q/b(k);for i=k:mG(i,j)=s*w(i)+G(i,j);endendend%%%求解三角方程 Rx=h1a(n)=G(n,n+1)/G(n,n);for i=n-1:(-1):1for j=i+1:nf=G(i,j)*a(j)+f;enda(i)=(G(i,n+1)-f)/G(i,i); % %%a(i)存放各级系数 f=0;end%%%拟合后的回代过程p=zeros(1,m);for j=1:mfor i=1:np(j)=p(j)+a(i)*x(j)^(i-1);endendplot(x,p,'r*',x,p,'-');E2=0;%用E2来存放误差%%%误差求解for i=n+1:mE2=G(i,n+1)^2+E2;endE2=E2^0.5;disp('误差为');disp(E2);t=0for i=1:mt=t+p(i);endt=t/m; %%%平均温度disp(['平均温度为',num2str(t),'℃'])运行结果:二次函数时,系数a0=8.3063,a1=2.6064,a2=-0.0938,误差为16.7433,平均温度为21.2℃。

函数形式为:2 ()8.3063 2.60640.0938 p x x x =+-三次函数时,系数a0=13.3880,a1=-0.2273,a2=0.2075,a3=-0.0084,误差为11.4482,平均温度为21.2℃。

函数形式:23 ()13.38800.22730.20750.0084 p x x x x =-+-四次函数时,系数a0=16.7939,a1=-3.7050,a2=0.8909,a3=-0.0532,a4=0.0009,误差为7.6838,平均温度为21.2℃。

函数形式为:234 ()16.7939 3.70500.89090.05320.0009 p x x x x x =-+-+第3题已知非线性方程)sincos(1=⎰πθθπdx在[2,3]中有根。

请设计算法,求出该根,并使求出的根的误差不超过410-。

问题分析以及算法思路:本题采用复化梯形求积公式计算方程根,可令()1()cos sinf x x dπθθπ=⎰。

算法结构:牛顿迭代法算法结构见《计算方法教程》P196。

源程序:clear;clc;x0=2; %设置求解区间x1=3;n=20; %复化梯形求积公式的步数e=0.0004;f0=T3Sub(x0,n);f1=T3Sub(x1,n);if (f0*f1)>0 %判断在区间内是否有error('No answer,because f0*f1>0');endfor i=1:201x=(x0+x1)/2;if abs(x1-x)<e %判断解是否符合误差disp(['方程的解',num2str(x)]);disp(['迭代步数',num2str(i)]);disp(['误差',num2str(abs(x1-x))]);break;endf=T3Sub(x,n);if (f*f0)<0x1=x;f1=f;elsex0=x;f0=f;endendfunction [f]=T3Sub(x,n)%复化梯形求积公式h=pi/n;f=0;for i=1:nu=i*h;f=f+cos(x*sin(u-h))+cos(x*sin(u));endf=(h*f)/(2*pi);end运行结果:第4题线性方程组求解(1)编写程序实现大规模方程组的高斯消去法程序,并对所附的方程组进行求解。

所附方程组的类型为对角占优的带状方程组。

(2)针对本专业中所碰到的实际问题,提炼一个使用方程组进行求解的例子,并对求解过程进行分析、求解。

算法思想:高斯消去法是利用现行方程组初等变换中的一种变换,将一个不为零的数乘到一个方程后加到另一个方程,使方程组变成同解的上三角方程组,然后再自下而上对上三角方程组求解。

算法结构:1.读取二进制文件,存入计算矩阵2.对矩阵进行初等变换,然后求解(计算方法教程高斯消去法及列主元高斯消去法算法)源代码:clear;clc;%% 读取系数矩阵[f,p]=uigetfile('*.dat','选择数据文件'); %读取数据文件num=5; %输入系数矩阵文件头的个数name=strcat(p,f);file=fopen(name,'r');head=fread(file,num,'uint'); %读取二进制头文件id=dec2hex(head(1)); %读取标识符fprintf('文件标识符为:');idver=dec2hex(head(2)); %读取版本号fprintf('文件版本号为:');vern=head(3); %读取阶数fprintf('矩阵A的阶数:');nq=head(4); %上带宽fprintf('矩阵A的上带宽:');qp=head(5); %下带宽fprintf('矩阵A的下带宽:');pdist=4*num;fseek(file,dist,'bof'); %把句柄值转向第六个元素开头处[A,count]=fread(file,inf,'float'); %读取二进制文件,获取系数矩阵fclose(file); %关闭二进制头文件%% 对非压缩带状矩阵进行求解if ver=='102',a=zeros(n,n);for i=1:n,for j=1:n,a(i,j)=A((i-1)*n+j); %求系数矩阵a(i,j)endendb=zeros(n,1);for i=1:n,b(i)=A(n*n+i);endfor k=1:n-1, %列主元高斯消去法m=k;for i=k+1:n, %寻找主元if abs(a(m,k))<abs(a(i,k))m=i;endendif a(m,k)==0 %遇到条件终止disp('错误!')returnendfor j=1:n, %交换元素位置得主元t=a(k,j);a(k,j)=a(m,j);a(m,j)=t;t=b(k);b(k)=b(m);b(m)=t;endfor i=k+1:n, %计算l(i,k)并将其放到a(i,k)中 a(i,k)=a(i,k)/a(k,k);for j=k+1:na(i,j)=a(i,j)-a(i,k)*a(k,j);endb(i)=b(i)-a(i,k)*b(k);endendx=zeros(n,1); %回代过程x(n)=b(n)/a(n,n);for k=n-1:-1:1,x(k)=(b(k)-sum(a(k,k+1:n)*x(k+1:n)))/a(k,k); endend%% 对压缩带状矩阵进行求解if ver=='202', %高斯消去法m=p+q+1;a=zeros(n,m);for i=1:1:nfor j=1:1:ma(i,j)=A((i-1)*m+j);endendb=zeros(n,1);for i=1:1:nb(i)=A(n*m+i); %求b(i)endfor k=1:1:(n-1) %开始消去if a(k,(p+1))==0disp('错误!');break;endst1=n;if (k+p)<nst1=k+p;endfor i=(k+1):1:st1a(i,(k+p-i+1))=a(i,(k+p-i+1))/a(k,(p+1)); for j=(k+1):1:(k+q)a(i,j+p-i+1)=a(i,j+p-i+1)-a(i,k+p-i+1)*a(k,j+p-k+1);endb(i)=b(i)-a(i,k+p-i+1)*b(k);endendx=zeros(n,1); %回代x(n)=b(n)/a(n,p+1);sum=0;for k=(n-1):-1:1sum=b(k);st2=n;if (k+q)<nst2=k+q;endfor j=(k+1):1:st2sum=sum-a(k,j+p-k+1)*x(j);endx(k)=sum/a(k,p+1);sum=0;endenddisp('方程组的的解为:') %输出解disp(x)运行结果:首先是对测试文件dat20171/ dat20172的求解结果,具体如下:经过测试矩阵的初步测试,利用程序对接下来的两个数据文件进行处理,由于dat20173/ dat20174解的个数较多,在这里只截取不分解作为示意,具体求解如下:本专业算例一底边绝热的正方形导热物体,内无热源,其余三边温度如下,求解该正方形内节点1、2、3、4的温度。

相关文档
最新文档