计算方法上机实习题
计算方法与实习答案

计算方法与实习答案【篇一:《基础会计学习指导、习题与实训》答案】名词解释1.会计:是以货币为主要计量单位,以凭证为依据,运用专门的技术方法,对一定主体的经济活动进行连续、系统、全面的核算与监督,以提高经济效益为目标,向有关方面提供会计信息的一种经济管理活动。
2.会计职能:是指会计在经济管理中所具有的功能,即会计在经济管理中能发挥什么作用。
3.会计核算职能:是指以货币为主要计量单位,对企事业单位一定时期的经济活动进行真实、连续、系统、完整的记录、计量和报告。
4.会计监督职能:是指依据监督标准,利用会计核算所提供的会计信息对各单位的经济活动全过程的合法性、合理性和有效性进行的指导、控制和检查。
5.会计对象:是指会计所要核算和监督的内容,即会计工作的内容。
6.会计要素:是对会计对象按经济特性所做的基本分类,是会计对象的具体内容。
7.资产:是指企业过去的交易或者事项形成的、由企业拥有或者控制的、预期会给企业带来未来经济利益的资源。
8.负债:是指企业过去的交易或者事项形成的、预期会导致经济利益流出企业的现时义务。
9.所有者权益:是指企业资产扣除负债后由所有者享有的剩余权益,包括实收资本、资本公积、盈余公积和未分配利润。
10.收入:是指企业在日常活动中形成的、会导致所有者权益增加的、与所有者投入资本无关的经济利益的总流入,包括销售商品收入、劳务收入、利息收入等。
11.费用:是指企业在日常活动中发生的、会导致所有者权益减少的、与向所有者分配利润无关的经济利益的总流出。
12.利润:是指企业在一定会计期间的经营成果,包括收入减去费用后的净额、直接计入当期利润的利得和损失等。
13.会计方法:是为实现会计核算、进行会计管理和完成会计任务所采用的手段。
14.会计核算方法:是对单位已经发生的经济活动进行连续、系统、全面的核算所采用的方法,包括设置账户、复式记账、审核和填制会计凭证、登记账簿、成本计算、财产清查和编制财务会计报告。
Access学习辅导与上机实习—习题(第3章查询)

Access学习辅导与上机实习—习题(第3章查询)■典型习题一、选择题1、是_________不会在简单查询的设计网络中出现。
A .字段B 条件C更新D排序2、下列叙述不正确的是。
A 删除查询主要用于删除符合条件的记录。
B 更新查询中可以使用计算功能。
C 追加查询时如果两个表的结构不一致,则不能进行。
D生成表查询生成新的表,该表是源表的一个子集。
3、不属于统计函数。
A MAXB COUNTC LASTD Y EAR二、填空题4、在查询表达式中,“/”表示,而“\”表示。
5、总计查询中,必须包含的两种字段是和。
6、在查询设计过程中,有多种方式可以视察查询结果,比如可以进入视图模式或单击按钮。
三、操作题7、对“教学”库建立下列查询:(1)用库中的三张表建立一个由学生姓名、课程名称、成绩组成的新数据表,新表取名为新表1。
(2)用学生表生成一个关于女生情况的新数据表,取名为女生情况表。
(3)用库中的三张表建立一个由学生姓名、成绩组成的数学成绩表,取名为数学成绩表。
(4)用库的三张表建立一个不及格学生的汇总表,表中的字段要求有学生姓名、课程名称、成绩。
(5)用库中的三张表建立一个由课程名称、各科平均分、总分、最高分、最低分组成的新数据表,取名为成绩统计表。
8、查询指定课程名的学生成绩,课程名只要求输入任意的几个字。
9、查询统计指定课程名称的总分和平均分。
■习题一、选择题1、利用对话框提示用户输入参数的查询过程称为_______。
A 选择查询B 参数查询C 操作查询D SQL查询2、以下叙述中,错误的是______。
A 查询是从数据库的表中行筛选出符合条件的记录,构成一个新的数据集合B 查询的种类有:选择查询、参数查询、交叉查询、操作查询和SQL查询C 创建复杂的查询不能使用查询向导。
D 可以使用函数、逻辑运算符、关系运算符创建复杂的查询3、Access共提供了种数据类型。
A 8B 9C 10D 114、用向导创建简单查询的步骤不包括。
北航数值分析计算实习题目二 矩阵QR分解

数值分析实习二院(系)名称航空科学与工程学院专业名称动力工程及工程热物理学号SY0905303学生姓名解立垚1. 题目试用带双步位移QR 的分解法求矩阵A=[a ij ]10*10的全部特征值,并对其中的每一个实特征值求相应的特征向量。
已知()sin 0.50.2,1.5cos 1.2,ij i j i j a i j i j ⎧⎫+≠⎪⎪=⎨⎬+=⎪⎪⎩⎭(),1,2,...,10i j =。
说明:1、求矩阵特征值时,要求迭代的精度水平为1210ε-=。
2、打印以下内容:算法的设计方案;全部源程序(要求注明主程序和每个子程序的功能); 矩阵A 经过拟上三角话之后所得的矩阵()1n A -;对矩阵()1n A-进行QR 分解方法结束后所得的矩阵;矩阵A 的全部特征值()(),1,2,......10i i iR I i λ=,和A 的相应于实特征值的特征向量;其中()(),.i e i m i R R I I λλ==如果i λ是实数,则令0.i I =3、采用e 型输出数据,并且至少显示12位有效数字。
2. 算法设计方案本题采用带双步位移的QR 分解方法。
为了使程序简洁,自定义类Xmatrix ,其中封装了所需要的函数方法。
在Xmatrix 类中封装了运算符重载的函数,即定义了矩阵的加、减、乘、除、数乘运算及转置运算(T())。
同时为了避免传递数组带来的额外内存开销,使用引用(&)代替值传递,以节省内存空间,避免溢出.(1)此程序的主要部分为Xmatrix 中的doubleQR()方法,具体如下:Step1:使用矩阵拟上三角化的算法将A 化为拟上三角阵A (n-1)(此处调用Xmatrix 中的preQR()方法)Step2:令121,,10k m n ε-===, 其中k 为迭代次数。
Step3:如果,1m m a ε-≤,则得到A 的一个特征值,m m a ,令1m m =-,goto Step4;否则goto Step5.Step4: 如果1m =,则得到A 的一个特征值11a ,goto Step11;如果0m =,则goto Step11;如果1m >,则goto Step3;Step5(Step6):如果2m =,则得到A 的两个特征值12s s 和(12s s 和为右下角两阶子阵对应的特征方程21,1,()det 0m m m m a a D λλ---++=的两个根。
东南大学计算方法与实习上机实验一

东南大学计算方法与实习实验报告学院:电子科学与工程学院学号:06A*****姓名:***指导老师:***实习题14、设S N=Σ(1)编制按从大到小的顺序计算S N的程序;(2)编制按从小到大的顺序计算S N的程序;(3)按两种顺序分别计算S1000,S10000,S30000,并指出有效位数。
解析:从大到小时,将S N分解成S N-1=S N-,在计算时根据想要得到的值取合适的最大的值作为首项;同理从小到大时,将S N=S N-1+ ,则取S2=1/3。
则所得式子即为该算法的通项公式。
(1)从大到小算法的C++程序如下:/*从大到小的算法*/#include<iostream>#include<iomanip>#include<cmath>using namespace std;const int max=34000; //根据第(3)问的问题,我选择了最大数为34000作为初值void main(){int num;char jus;double cor,sub;A: cout<<"请输入你想计算的值"<<'\t';cin>>num;double smax=1.0/2.0*(3.0/2.0-1.0/max-1.0/(max+1)),temps;double S[max];// cout<<"s["<<max<<"]="<<setprecision(20)<<smax<<'\n';for(int n=max;n>num;){temps=smax;S[n]=temps;n--;smax=smax-1.0/((n+1)*(n+1)-1.0);}cor=1.0/2.0*(3.0/2.0-1.0/num-1.0/(num+1.0)); //利用已知精确值公式计算精确值sub=fabs(cor-smax); //double型取误差的绝对值cout<<"用递推公式算出来的s["<<n<<"]="<<setprecision(20)<<smax<<'\n';cout<<"实际精确值为"<<setprecision(20)<<cor<<'\n';cout<<"则误差为"<<setprecision(20)<<sub<<'\n';cout<<"是否继续计算S[N],是请输入Y,否则输入N!"<<endl;cin>>jus;if ((int)jus==89||(int)jus==121) goto A;}(2)从小到大算法的C++程序如下:/*从小到大的算法*/#include<iostream>#include<iomanip>#include<cmath>using namespace std;void main(){int max;A: cout<<"请输入你想计算的数,注意不要小于2"<<'\t';cin>>max;double s2=1.0/3.0,temps,cor,sub;char jus;double S[100000];for(int j=2;j<max;){temps=s2;S[j]=temps;j++;s2+=1.0/(j*j-1.0);}cor=1.0/2.0*(3.0/2.0-1.0/j-1.0/(j+1.0)); //利用已知精确值公式计算精确值sub=fabs(cor-s2); //double型取误差的绝对值cout<<"用递推公式算出来的s["<<j<<"]="<<setprecision(20)<<s2<<'\n';cout<<"实际精确值为"<<setprecision(20)<<cor<<'\n';cout<<"则误差为"<<setprecision(20)<<sub<<'\n';cout<<"是否继续计算S[N],是请输入Y,否则输入N!"<<endl;cin>>jus;if ((int)jus==89||(int)jus==121) goto A;}(3)(注:因为程序中setprecision(20)表示输出数值小数位数20,则程序运行时所得到的有效数字在17位左右)ii.选择从小到大的顺序计算S1000、S10000、S30000的值需要计算的项S1000S10000S30000计算值0.74900049950049996 0.74966672220370571 0.74996666722220728实际精确值0.74900049950049952 0.74990000499950005 0.74996666722220373误差 4.4408920985006262*10-16 5.6621374255882984*10-15 3.5527136788005009*10-15有效数字17 17 17附上部分程序运行图:iii.实验分析通过C++程序进行计算验证采用从大到小或者从小到大的递推公式算法得到的数值基本稳定且误差不大。
实验六 上机实习_2016

实验6 地下水动力学上机实习一、实习目的与要求(1)熟练掌握含水层试验软件AquiferTest Pro V2016的操作使用方法。
(2)基本掌握使用软件AquiferTest Pro V2016中的Theis 和Cooper-Jacob Time-Drawdown 分析方法进行抽水实验(Pumping Test )求解含水层参数。
二、分析方法(1)Theis 方法(标准曲线配比法)在双对数坐标纸上,以W (u )为纵坐标,1/u 为横坐标作出的曲线通常称为泰斯曲线。
在双对数坐标纸上以t 或t /r 2为横坐标,s 为纵坐标点出观测数据,通过对比观测数据点与泰斯曲线来求解含水层参数。
(2)Cooper-Jacob Time-Drawdown (直线图解法)Cooper-Jacob (1946)方法是简化的泰斯方法,通过有效地增大时间值、减小井距(即减小u 值)来计算。
直线图解法将各个观测孔的降深随时间变化的数据标在半对数坐标纸上,以时间为横坐标,降深为纵坐标。
如果有足够多的数据就可以连成一条直线,含水层的导水系数和储水系数就可以按照以下两个方程计算出结果:s Q T ∆=π43.2,2025.2r Tt S = 三、软件简介AquiferTest V2016①整合了抽水试验Pumping Test 和微水试验Slug Test 数据分析技术,本次上机实习主要学习前者。
Aquifer Test 4.2具有友好的界面,快捷易用的优点,并且拥有计算各类含水层特性的功能(包括承压含水层、非承压含水层、越流含水层、裂隙含水层和井储等),对于同一份数据可以通过建立多种分析方法来做比较,并可生成专业的抽水试验报告,图件都可以图片形式导出。
试验所需数据可以通过键盘输入,也可以通过导入Microsoft Excel 文件或ASCII 格式文件。
对于抽水试验,Aquifer Test 2016提供以下14种解决方法:➢Time-Drawdown (时间-降深分析) ➢Time Drawdown-Discharge ➢Theis (承压含水层) ➢Theis 结合Jacob 修正(非承压含水层) ➢Neuman (非承压含水层) ➢Boulton (非承压含水层) ➢Hantush-Jacob (越流含水层,有存储的弱含水层) ➢Hantush (越流含水层,有存储的弱含水层) ➢Walton (双孔隙度,裂隙流) ① 目前的版本为AquiferTest Pro 2016版本,新版本可以通过https:///aquifertest/下载。
数值方法计算实习题

数值⽅法计算实习题数值⽅法计算实习题⼀、下表给出了飞⾏中鸭⼦的上部形状的节点数据,试⽤三次样条插值函数(⾃然边界条件)和20次Lagrange 插值多项式对数据进⾏插值。
⽤图⽰出给定的数据,以及()s x 和20()L x 。
12 12.6 13.0 13.3];>> y=[1.3 1.5 1.85 2.1 2.6 2.7 2.4 2.15 2.05 2.1 2.25 2.3 2.25 1.95 1.4 0.9 0.7 0.6 0.5 0.4 0.25]; %(1)三次样条插值法xi=0.9:0.01:13.3;yi=interp1(x,y,xi,'spline'); >> xi=0.9:0.01:13.3;yi=interp1(x,y,xi,'spline'); >> title('试验⼀--三次样条插值图⽰')024********试验⼀--三次样条插值图⽰>> pp=spline(x,y)pp =form: 'pp'breaks: [1x21 double]coefs: [20x4 double]pieces: 20order: 4dim: 1>> pp.coefsans =0.7735 -0.9995 0.7760 1.3000 0.7735 -0.0714 0.3477 1.5000 -2.7894 1.3209 1.0974 1.8500 -0.4585 -0.3528 1.2910 2.10000.4489 -1.0405 0.5944 2.6000 0.1738 -0.5018 -0.0225 2.70000.0783 -0.0325 -0.5033 2.40001.3141 0.0850 -0.47712.1500 -1.5812 1.2676 -0.0713 2.0500 0.0431 -0.1555 0.2623 2.1000 -0.0047 -0.0261 0.0808 2.2500 -0.0245 -0.0401 0.0146 2.3000 0.0175 -0.1135 -0.1390 2.2500 -0.0128 -0.0505 -0.3358 1.9500 -0.0201 -0.1003 -0.5319 1.4000 1.2094 -0.1485 -0.7310 0.9000 -0.8279 0.9400 -0.4935 0.7000 0.0122 -0.0535 -0.1389 0.6000 -0.2960 -0.0316 -0.1900 0.5000 -0.2960 -0.3867 -0.3573 0.4000 所以所得⽅程为%(2)⽤拉格朗⽇法插值%定义Lagrange程序function f=Language(x,y,x0)syms t;if(length(x)==length(y))n=length(x);elsedisp('xoíyµêy2??àµè£?');return;endf=0.0;for(i=1:n)l=y(i);for(j=1:i-1)l=l*(t-x(j))/(x(i)-x(j));end ;for (j=i+1:n)l=l*(t-x(j))/(x(i)-x(j)); end ; f=f+l; simplify(f); if (i==n)if (nargin==3) f=subs(f,'t',x0); elsef=collect(f); f=vpa(f,6); end end end>> Language(x,y) ans =52462.6*t+189995.*t^3-189851.*t^4+136778.*t^5-11.3161*t^12-.277283e-6*t^18+1.18284*t^13-73866.6*t^6+.111076e-4*t^17-.976904e-1*t^14+.427949e-8*t^19-.307453e-10*t^20+30677.6*t^7+2564.20*t^9-9968.98*t^8+.628590e-2*t^15-525.813*t^10-9652.78-.308159e-3*t^16+86.2514*t^11-128683.*t^2⼆、已知Wilson 矩阵1078775658610975910A=,且向量32233331b ??=,则⽅程组Ax b =有准确解[]1111Tx =。
实习题1

计算方法实验报告班级:学号:姓名:成绩:1 舍入误差及稳定性一、实验目的(1)通过上机编程,复习巩固以前所学程序设计语言及上机操作指令;(2)通过上机计算,了解舍入误差所引起的数值不稳定性二、实验内容1、用两种不同的顺序计算∑n -2,分析其误差的变化n =1100002、已知连分数f =b 0+a 1,利用下面的算法计算f :b 1+a 2/b 2+a 3/(...+a n /b n ) d n =b n , d i =b i +a i +1f =d 0 (i =n -1, n -2, ... , 0d i +1写一程序,读入n , b 0, b 1,..., b n , a 1,..., a n , 计算并打印f3、给出一个有效的算法和一个无效的算法计算积分x n1y n =⎰dx (n =0, 1, ... , 04x +114、设S N =∑j =2N 11⎛311⎫,已知其精确值为-- ⎪ 2j -12⎝2N N +1⎭(1)编制按从大到小的顺序计算S N 的程序(2)编制按从小到大的顺序计算S N 的程序(3)按两种顺序分别计算S 1000, S 10000, S 30000, 并指出有效位数三、实验步骤、程序设计、实验结果及分析1、用两种不同的顺序计算∑n ,分析其误差的变化n =110000-2(1)实验步骤:分别从1~10000和从10000~1两种顺序进行计算,应包含的头文件有stdio.h 和math.h (2)程序设计:a. 顺序计算#include<stdio.h>#include<math.h>void main(){double sum=0;int n=1;while(1){sum=sum+(1/pow(n,2));if(n%1000==0)printf("sun[%d]=%-30f",n,sum); if(n>=10000)break; n++;}printf("sum[%d]=%f\n",n,sum);}b. 逆序计算#include<stdio.h>#include<math.h>void main(){double sum=0;int n=10000;while(1){sum=sum+(1/pow(n,2));if(n%1000==0)printf("sum[%d]=%-30f",n,sum);if(n<=1)break;n--;}printf("sum[%d]=%f\n",n,sum); }3)实验结果及分析:程序运行结果:a. 顺序计算b. 逆序计算结果分析:两种不同顺序计算结果是一样的,顺序计算误差从一开始就很小,而逆序计算误差最开始十分大,后来结果正确。
《计算方法》上机实验指导书刘轶中-8页word资料

理学院《计算方法》实验指导书适合专业:信息与计算科学数学与应用数学贵州大学二OO七年八月前言《计算机数值计算方法》包括很多常用的近似计算的处理手段和算法,是计算科学与技术专业的必修课程,为了加强学生对该门课程的理解,使学生更好地掌握书中的计算方法、编制程序的能力,学习计算方法课程必须重视实验环节,即独立编写出程序,独立上机调试程序,必须保证有足够的上机实验时间。
在多年教学实践基础上编写了《计算机数值计算方法》上机实习指南,目的是通过上机实践,使学生能对教学内容加深理解,同时培养学生动手的能力.本实习指南,可与《计算机数值计算方法》课本配套使用,但是又有独立性,它不具体依赖哪本教科书,主要的计算方法在本指南中都有,因此,凡学习计算方法课的学生都可以参考本指南进行上机实习。
上机结束后,按要求整理出实验报告。
实验报告的内容参阅《计算机数值计算方法》上机实验大纲。
目录第一章解线性方程组的直接法实验一 Gauss列主元素消去法实验二解三对角线性方程组的追赶法第二章插值法与最小二乘法实验三 lagrange插值法实验四分段插值法实验五 曲线拟合的最小二乘法第三章 数值积分实验六 复合求积法实验七 变步长法第四章 常微分方程数值解法实验八 Euler 方法第五章 解线性方程组和非线性方程的迭代法实验九 Jacobi 迭代法、Gauss-Seidel 迭代法实验十 Newton 迭代法实验一 : Gauss 列主元素消去法实验学时:2实验类型:验证实验要求:必修一、实验目的用gauss 消去法求线性方程组AX=b. 其中一、 实验内容二、 实验条件PC 机,tc2.0,Internet 网。
三、 实验步骤1.根据算法事先写出相应程序。
2.启动PC 机,进入tc 集成环境,输入代码。
3.编译调试。
4. 调试通过,计算出正确结果后。
实验二 解三对角线性方程组的追赶法⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=b b b x x x a a a a a a a a a n n nn n n n n b X A M M 2122122221112111....................................实验学时:2实验类型:验证实验要求:必修一、实验目的二、实验内容三、实验组织远行要求统一进行实验,一人一组四、实验条件PC机,tc2.0,Internet网五、实验步骤a)根据算法事先写出相应程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值计算方法上机实习题1. 设⎰+=105dx xx I nn , (1) 由递推公式nI I n n 151+-=-,从0=0.1822I , 0=0.1823I 出发,计算20I ; (2) 20=0I ,20=10000I , 用nI I n n 51511+-=-,计算0I ;(3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。
解:(1)程序如下: clear all clc I=0.1822; %题中的已知数据 for n=1:20; I=(-5)*I+1/n; %由递推公式所得 end fprintf('I20=%f\n',I) M=0.1823; %与I 的计算结果形成对比 for i=1:20; M=(-5)*M+1/i; %由递推公式所得 end fprintf('M20=%f\n',M) 输出结果为: I20=-11592559237.912731 M20=-2055816073.851284 (2)程序如下: clear all clc I=0; %赋予I20的初始值 for n=0:19; I=(-1/5)*I+1/(5*(20-n)); %有递推公式得 end fprintf('I0=%f\n',I) M=10000; for i=0:19; M=(-1/5)*M+1/(5*(20-i));%有递推公式得 end fprintf('M0=%f\n',M) 输出结果为: I0=0.182322 M0=0.182322(3)由输出结果可看出第一种算法为不稳定算法,第二中算法为稳定算法。
由于误差*000***21111120115(5)5()555nn n n n n n n n n e I I e I I I I I I e e e n n------=-=-=-+--+=-===第一种算法为正向迭代算法,每计算一步误差增长5倍,虽然所给的初始值很接近,随着n 的增大,误差也越来越大。
()nnn n n n n n n n n nn n e e e I I n I n I e I I e I I e ⎪⎭⎫⎝⎛==-=+--+-==-=-=***---*515151)5151(51510111 第二种算法为倒向迭代算法,每计算一步误差缩小5倍,虽然所给的初始值之间差很多,随着n 的增大,误差也越来越小。
2. 求方程0210=-+x e x的近似根,要求41105-+⨯<-k k x x ,并比较计算量。
(1) 在[0,1]上用二分法; (2) 取初值00=x ,并用迭代1021x k e x -=+;(3) 加速迭代的结果;(4) 取初值00=x ,并用牛顿迭代法; (5) 分析绝对误差。
解:(1)程序如下(二分法): clear all clca=0;b=1;f=@(x)(exp(x)+10*x -2);%@是定义函数句柄的运算符 c=(a+b)/2;%取区间中点 i=0;%分割次数while abs(f(c))>5*10^(-4)%判断f(x)的精度是否满足要求 if f(a)*f(c)<0 b=c;c=(a+b)/2; elseif f(b)*f(c)<0 a=c;c=(b+a)/2; end i=i+1; endfprintf('二分法运算次数为%i\n',i) fprintf('二分法计算结果为%f\n',c) 运行结果如下:二分法运算次数为13二分法计算结果为0.090515 (2)程序如下(不动点迭代)clear all clc x0=0; x=x0;for k=1:10000 %规定迭代次数上限y=(2-exp(x))/10; %迭代结果存到y 中 if abs(x -y)<5*10^(-4)fprintf('初始值x0为%i\n 迭代次数为%i\n',x0,k); break end x=y;if k==10000;fprintf('迭代次数超出上限%i\n',k); end endfprintf('迭代法计算结果为%f\n',y); 运行结果为: 初始值x0为0 迭代次数为4迭代法计算结果为0.090513(3)程序如下(艾肯特迭代加速) clear all clc x0=0;x=x0; %给定迭代初值p(1000)=0; %先定义p 矩阵的长度 p(1)=x;for k=2:1000 ; %规定迭代次数上限 y=(2-exp(x))/10; z=(2-exp(y))/10;x=x -((y -x)^2)/(z -2*y+x); (4)程序如下(牛顿法迭代) clear allclc x0=0;x=x0; %给定迭代初值for k=1:1000 ; %规定迭代次数上限y=x -(exp(x)+10*x -2)/(exp(x)+10); %牛顿计算公式if abs(y -x)<5*10^(-4)fprintf('初始值x0为%f\n 迭代次数为%i\n',x0,k);%艾特肯加速公式p(k)=x; %p 是用来存储每一步迭代结果的矩阵if abs(p(k -1)-p(k))<5*10^(-4)fprintf('初始值x0为%f\n迭代次数为%i\n',x0,k-1);breakendif k==1000;fprintf('迭代次数超出上限%i\n',k);endendfprintf('艾特肯加速迭代法计算结果为%f\n',x);运行结果为:初始值x0为0.000000迭代次数为2艾特肯加速迭代法计算结果为0.090525breakendx=y;if k==1000;fprintf('迭代次数超出上限%i\n',k);endendfprintf('牛顿迭代法计算结果为%f\n',y);运行结果为:初始值x0为0.000000迭代次数为2牛顿迭代法计算结果为0.090525(5)分析绝对误差通过指令求得方程精确解的近似解:>> solve('exp(x)+10*x-2=0')ans =1/5 - lambertw(0, exp(1/5)/10)>> 1/5 - lambertw(0, exp(1/5)/10)ans =0.090525101307255各种计算方法的绝对误差为:二分法的绝对误差:1.0e-04 * 0.508986927450078不动点迭代方法的绝对误差: 1.0e-04 * 0.121013072549997艾特肯加速迭代的绝对误差: 1.0e-04 * 0.001013072550016牛顿法的绝对误差: 1.0e-04 * 0.001013072550016由上述各种算法计算出方程的值,二分法迭代了11次,收敛速度最慢,不动点迭代法迭代了4次,艾特肯迭代法迭代了2次,牛顿法迭代了2次,后两种方法的收敛速度都比较快,但计算量大。
由绝对误差可以看出二分法的误差最大,而艾特肯加速迭代和牛顿法误差最小。
试从中找出使用次数和容积之间的关系,计算均方差。
(用ax byc x+=+拟合)解:用已知函数模型来拟合,程序如下:先编辑函数function [err]=f31(f,x,y)a=f(1);b=f(2);c=f(3);err=0;for k=1:15err=err+((c+x(k))*y(k)-(a*x(k)+b))^2;end主函数如下:x=[2 3 4 5 6 7 8 9 10 11 12 13 14 15 16];y=[6.42 8.2 9.58 9.5 9.7 10 9.93 9.99 10.49 10.59 10.6 10.8 10.6 10.9 10.76];[f,fval,exitflag]=fminsearch(@f31,[0;0;0],optimset,x,y)%fminsearch函数求解多元函数的最小值%f返回多元函数y=f(x)在初始值x0附近的局部极小值点%fval返回局部极小值%exitflag返回函数输出条件值,exitflag=1说明函数收敛到一个解x;exitflag=0说明函数达到最大迭代次数;exitflag=-1说明输出函数终止算法。
fprintf('\n 拟合出来的方程式为\t (%7.4f+x)y=%7.4f+%7.4fx\n\n',f(3),f(2),f(1));z=linspace(x(1),x(end),15);Y=(f(1)*x+f(2))./(f(3)+x);plot(x,y,'r*-',z,Y,'b-')legend('y','Y');title('非线性的最小二乘拟合');%均方差for i=1:15yt(i)=(f(1)*x(i)+f(2))./(f(3)+x(i));endc=0;for i=1:15c=c+(y(i)-yt(i))^2;endjfc=sqrt(c/15);fprintf('均方差为%f\n',jfc)运行结果如下:拟合出来的方程式为(-0.7110+x)y=-15.5024+11.2657x均方差为0.331651非线性的最小二乘拟合4.设⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛----------------=410100141010014101101410010141001014A ,⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛--=625250b ,b x =A 分析下列迭代法的收敛性,并求42110-+≤-kk x x 的近似解及相应的迭代次数。
(1) JACOBI 迭代;(2) GAUSS -SEIDEL 迭代;(3) SOR 迭代(取0.1:0.1:1.9ω=,找到迭代步数最少的*ω)。
解:(1)JACOBI 迭代(程序如下): 先编辑JACOBI 函数: function tx=jacobi(A,b,imax,x0,tol) %初始值x0,次数imax,精度tol del=10^-10; tx=[x0];n=length(x0); for i=1:n dg=A(i,i); if abs(dg)<del disp('对角元太小');%防止现溢出现象 return end end for k=1:imax %jacobi 循环 for i=1:n sm=b(i); for j=1:n if j~=i sm=sm -A(i,j)*x0(j); end end x(i)=sm/A(i,i); %x(1)到x(n)即完成一次迭代 end tx=[tx;x];%矩阵中又加一行。