3数值计算方法上机实习题.

合集下载

数值分析上机实习题

数值分析上机实习题

2019-2020 第1学期数值分析上机实习题总目标:会算,要有优化意识。

(以下程序要求以附件1例题代码格式给出)1. 对给定的线性方程组Ax b =进行迭代求解。

(1)给出Jacobi 迭代的通用程序。

(2)给出Gauss-Seidel 迭代的通用程序。

调用条件:系数矩阵A ,右端项b ,初值0x ,精度要求ε。

输出结果:方程组的近似解。

给定线性方程组211122241125x --⎛⎫⎛⎫ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪---⎝⎭⎝⎭,和122711122215x -⎛⎫⎛⎫ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭,取初值0x 为0, 分别利用Jacobi 迭代和G-S 迭代进行求解,观察并解释其中的数学现象。

2. 利用紧凑格式(即直接分解法或逐框运算法)对给定的矩阵A 进行Doolittle 分解,并用其求线性方程组的解。

调用条件:矩阵A 。

输出结果:单位下三角矩阵L 和上三角矩阵U 。

给定矩阵1112A ⎛⎫= ⎪⎝⎭,利用以下算法:1)将A 作Doolittle 分解11A LU =,2)令211A U L =,并对2A 作Doolittle 分解222A L U =,3)重复2)的过程令11n n n A U L --=,并对n A 作Doolittle 分解n n n A L U =,2,3,4,n =, 观察n L ,n U ,n A 的变化趋势,思考其中的数学现象。

3. 给定函数21(),12511f x x x -≤+≤=,取164,8,n =,用等距节点21,i i n x =-+ 0,1,,1i n =+对原函数进行多项式插值和五次多项式拟合,试画出插值和拟合曲线,并给出数学解释。

4. 给出迭代法求非线性方程()0f x =的根的程序。

调用条件:迭代函数()x ϕ,初值0x输出结果:根的近似值k x 和迭代次数k给定方程32()10f x x x =--=,用迭代格式1k x +=0 1.5x =附近的根,要使计算结果具有四位有效数字,利用估计式*1||1||k k k L x x x x L -≤---,或估计式*10||1||kk L x x x x L-≤--来判断需要的迭代次数,分别需要迭代多少次?两者是否有冲突?5. 利用数值求积算法计算()ba f x dx ⎰。

数值方法计算实习题

数值方法计算实习题

数值⽅法计算实习题数值⽅法计算实习题⼀、下表给出了飞⾏中鸭⼦的上部形状的节点数据,试⽤三次样条插值函数(⾃然边界条件)和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 =。

上机数值计算练习题及答案.docx

上机数值计算练习题及答案.docx

习题31、在MATLAB 中,先运行指令A=magic(3), B=[l,2,l;3,4,3;5,6,7], C=reshape(l:6,3,2)生成阵列A 珂,B3X2,C3X2 ,然后根据运行结果回答以下问题:(1)计算A*B,B*A,这两个乘积相同吗?(2)计算A\B, B/A,左除、右除结果相同吗?(3)计算B(:,[1,2]).*C和C.*B(:, [1,2]),这两个乘积相同吗?(4)计算A\A和AAA,这两个计算结果相同吗?(5)计算A\eye(3)和inv(A),这两个计算结果相同吗?(提示:根据对计算结果的目测回答问题)解答如下:运行指令:A=magic(3), B=[l,2,l;3,4,3;5,6,7], C=reshape(l:6,3,2)得到结果:8 1 63 5 74 9 2B =1 2 13 4 35 6 7C =1 42 53 6(1)计算A*B,并得到结果如下:» A*Bans =41 56 5353 68 6741 56 45计算B*A, 并得到结果如下:»B*Aans =18 20 2248 50 5286 98 86从以上计算结果可以得出结论:A*BJ (2)计算A\B ,并得到结果如下:» A\Bans =0.0333 0.1000 0.16110.5333 0.6000 0.74440.0333 0.1000 -0.1722计算B/A, 并得到结果如下:B/Aans =0.0056 0.0889 0.17220.1389 0.2222 0.30560.2333 0.7333 0.2333 与B*A这两个乘积不同。

从以上计算结杲可以得出结论:左除、右除结杲不同。

(3)计算B(:,[1,2]).弋,并得到结果如下:A =» B(:,[1,2]).*C ans =1 8 6 20 15 36计算C.*B(:, [1,2]),并得到结果如下: » CFB(:, [1,2]) ans =1 6 20 15 36从以上计算结果可以得出结论:B(: J1,2]).*C 和C ・*B(:, [1,2])的两个乘积相同。

数值计算上机实习题目(matlab编程)

数值计算上机实习题目(matlab编程)

数值计算上机实习题目(matlab编程)非线性方程求根一、实验目的本次实验通过上机实习,了解迭代法求解非线性方程数值解的过程和步骤。

二、实验要求1、用迭代法求方程230x x e -=的根。

要求:确定迭代函数?(x),使得x=?(x),并求一根。

提示:构造迭代函数2ln(3)x ?=。

2、对上面的方程用牛顿迭代计算。

3、用割线法求方程3()310f x x x =--=在02x =附近的根。

误差限为410-,取012, 1.9x x ==。

三、实验内容1、(1)首先编写迭代函数,记为iterate.mfunction y=iterate(x)x1=g(x); % x 为初始值。

n=1;while(abs(x1-x)>=1.0e-6)&(n<=1000) % 迭代终止的原则。

x=x1;x1=g(x);n=n+1;endx1 %近似根n %迭代步数(2)后编制函数文件?(x),记为g.mfunction y=g(x)y=log(3*x.^2);(3)设初始值为0、3、-3、1000,观察初始值对求解的影响。

将结果记录在文档中。

>>iterate(0)>>iterate(3) 等等2、(1)首先编制牛顿迭代函数如下,记为newton.mfunction y=newton(x0)x1=x0-fc(x0)/df(x0); % 牛顿迭代格式n=1;while(abs(x1-x0)>=1.0e-6)&(n<=1000000) % 迭代终止的原则。

x0=x1;x1=x0-fc(x0)/df(x0);n=n+1;endx1 %近似根n %迭代步数(2)对题目中的方程编制函数文件,记为fc.mfunction y=fc(x)y=3*x.^2-exp(x)编制函数的导数文件,记为df.mfunction y=df(x)y=6*x-exp(x)(3)在MATLAB 命令窗计算,当设初始值为0时,newton(0);给定不同的初始值,观察用牛顿法求解时所需要的迭代步数,并与上面第一题的迭代步数比较。

数值计算方法上机题目资料

数值计算方法上机题目资料
,在程序设计时要充分 考虑哪些变量应该可变的。
2. 程序输入、输出用文件形式。 3. 编程语言要求用C, 编程环境TC或VC 4. 程序要求调试通过。 5. 每个方法要求给出一个具体的算例(可选
作业题)来验证。
五、上机报告要求
1.报告内容包括:
每种方法的算法原理及程序框图。 程序使用说明 具体算例及结果
上机调试体会及收获。
2.报告要手写。
六、上机报告及源程序提交时间
1.上机报告在考试当天提交。 2.源程序在考试前提交。
提交格式:文件夹(班级+姓名)
输入文件 程序文件夹 输出文件
不要拷贝其它文件!!! 源程序
六、上机报告及源程序提交时间
源程序提交: 把以上文件压缩后,发送到以下邮箱:
haoyq@
七、考核方式
1.算法手算笔试(80%)+上机内容笔试 (10%)+上机报告(10%)
2.上机内容笔试可能形式:
编一段算法程序 给出一段算法程序,说明算法的名称。 程序填空 程序改错(包括算法和语法的错误)
数值计算方法上机练习
一、上机练习目的
复习和巩固数值计算方法的基本数学模型, 全面掌握运用计算机进行数值计算的具体 过程及相关问题。
利用计算机语言独立编写、调试数值计算 方法程序,培养学生利用计算机和所学理 论知识分析解决实际问题的能力。
二、上机练习任务
• 利用计算机基本C语言编写并调试一系列 数值方法计算通用程序,并能正确计算给 定题目,掌握调试技能。
• 掌握文件使用编程技能,如文件的各类操 作,数据格式设计、通用程序运行过程中 文件输入输出运行方式设计等。
• 写出上机练习报告。
三、数值计算方法上机题目

数值分析上机实验

数值分析上机实验

目录1 绪论 (1)2 实验题目(一) (2)2.1 题目要求 (2)2.2 NEWTON插值多项式 (3)2.3 数据分析 (4)2.3.1 NEWTON插值多项式数据分析 (4)2.3.2 NEWTON插值多项式数据分析 (6)2.4 问答题 (6)2.5 总结 (7)3 实验题目(二) (8)3.1 题目要求 (8)3.2 高斯-塞德尔迭代法 (8)3.3 高斯-塞德尔改进法—松弛法 (9)3.4 松弛法的程序设计与分析 (9)3.4.1 算法实现 (9)3.4.2 运算结果 (9)3.4.3 数据分析 (11)4 实验题目(三) (13)4.1 题目要求 (13)4.2 RUNGE-KUTTA 4阶算法 (13)4.3 RUNGE-KUTTA 4阶算法运算结果及数值分析 (14)总结 (16)附录A (17)1绪论数值分析是计算数学的一个主要部分,它主要研究各类数学问题的数值解法,以及分析所用数值解法在理论上的合理性。

实际工程中的数学问题非常复杂,所以往往需要借助计算机进行计算。

运用数值分析解决问题的过程:分析实际问题,构建数学模型,运用数值计算方法,进行程序设计,最后上机计算求出结果。

数值分析这门学科具有面向计算机、可靠的理论分析、好的计算复杂性、数值实验、对算法进行误差分析等特点。

本学期开设了数值分析课程,该课程讲授了数值分析绪论、非线性方程的求解、线性方程组的直接接法、线性方程组的迭代法、插值法、函数逼近与曲线拟合、数值积分和数值微分、常微分方程初值问题的数值解法等内容。

其为我们解决实际数学问题提供了理论基础,同时我们也发现课程中很多问题的求解必须借助计算机运算,人工计算量太大甚至无法操作。

所以学好数值分析的关键是要加强上机操作,即利用计算机程序语言实现数值分析的算法。

本报告就是基于此目的完成的。

本上机实验是通过用计算机来解答数值分析问题的过程,所用的计算工具是比较成熟的数学软件MATLAB。

计算方法上机实习题大作业(实验报告)

计算方法上机实习题大作业(实验报告)

计算方法实验报告班级: 学号: 姓名: 成绩:1 舍入误差及稳定性一、实验目的(1)通过上机编程,复习巩固以前所学程序设计语言及上机操作指令;(2)通过上机计算,了解舍入误差所引起的数值不稳定性二、实验内容1、用两种不同的顺序计算1000021n n -=∑,分析其误差的变化 2、已知连分数()101223//(.../)n n a f b b a b a a b =++++,利用下面的算法计算f : 11,i n n i i i a d b d b d ++==+ (1,2,...,0)i n n =-- 0f d = 写一程序,读入011,,,...,,,...,,n n n b b b a a 计算并打印f3、给出一个有效的算法和一个无效的算法计算积分1041nn x y dx x =+⎰ (0,1,...,10)n = 4、设2211N N j S j ==-∑,已知其精确值为1311221N N ⎛⎫-- ⎪+⎝⎭(1)编制按从大到小的顺序计算N S 的程序(2)编制按从小到大的顺序计算N S 的程序(3)按两种顺序分别计算10001000030000,,,S S S 并指出有效位数三、实验步骤、程序设计、实验结果及分析1、用两种不同的顺序计算1000021n n -=∑,分析其误差的变化 (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.逆序计算结果分析:两种不同顺序计算结果是一样的,顺序计算误差从一开始就很小,而逆序计算误差最开始十分大,后来结果正确。

计算方法上机实习题

计算方法上机实习题

数值计算方法上机实习题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 的增大,误差也越来越大。

上机-3-数值积分常微分方程

上机-3-数值积分常微分方程

数值计算方法上机 (三)
杨雪松
1
上机习题三
1. 分别用变步长梯形公式和龙贝格公式计算下列 积分:
i n c o sx i nx d x 2 s s
2 2 0

取同样的收敛判断精度,比较不同方法的计算效率。
2
上机习题三
2.分别用改进欧拉法和四阶龙格-库塔公式求解下 列微分方程初值问题:分别取三种不同的步长 进行计算,并将数据绘制在同一张图中进行比 较。
字)
4
上机报告格式要求
• 上机报告纸质版在第13周周五之前交到物电楼712, 请同时发送电子版,备查。 • 电子版文件命名:数值计算第3次上机报告_学号_姓 名。电子版发送至:xsyang@. • 评分以纸质版为准。 • 对于雷同报告及明显抄袭报告,抄袭者和被抄袭者均 扣分。 • 报告格式可参考:上机报告格式参考模板.doc • 考试时间待定。
2 2 y ' x y ( 1) ( 1 . 0 x 1 . 8 ) ( 1 ) 0 ; y
学号为单号 同学做
y ' y 2 x /y ( 2) ( 0 x 2 . 0 ) 学号为双号 同学做 y ( 0 ) 1 ;
3
上机题三
3. 学习本课程的体会、收获及不足,对任课教师及 课程教学方法的评价、意见或建议。(150~1000

数值计算方法第一次上机实习报告

数值计算方法第一次上机实习报告

数值计算方法第一次实习报告一、 实习题目。

1. 分别用高斯-赛德尔迭代法、雅克比迭代法、列主元消去法解下列方程组。

⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++=+++ 1.84711.2671x 0.2568x 0.2471x 0.2368x1.74710.2271x 1.2168x 0.2071x 0.1968x 1.64710.1871x 0.1768x 1.1675x 0.1582x 1.54710.1490x 0.1397x 0.1254x 1.1161x4321432143214321 2. 用迭代法求x 5-x-0.2=0的正根,要求精确到小数点后第五位。

二、算法原理。

1、雅可比迭代法基本原理 将矩阵分解为,其中则式可记为,变形可得,可逆时,有于是得到迭代的过程为式中,,即2、高斯-赛德尔迭代法基本原理赛德尔迭代法是对雅可比迭代法的一种改进,雅可比迭代法是在每一步计算的各个分量时均只用到中的分量。

实际上,在计算时,分量都已经计算出来而没有被直接利用,因此可以考虑以来代替计算。

即121311121232222121-1,212121000, ,0000n n n n nn a a a a a a a a D L U aa a a a a a ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥==-=-⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎢⎥⎢⎥⎣⎦⎣⎦=Ax b ()=D L U x b--()=+Dx L U x b+D ()11220nn a a a ≠ ()11=D +x L U x D b --+=+x Bx f ()11D,=D B L U f b --=+()=11=+=1,2,,n i i ij j j ii j i x b a x i n a ≠⎛⎫ ⎪ ⎪ ⎪⎝⎭∑ ()+1k x ()k x ()+1k i x ()()+1+1-1,,k k i i x x ()()+1+1-1,,k k i i x x ()()1-1,,kki x x矩阵形式为,可得,于是赛德尔迭代法的矩阵形式为式中,。

3数值计算方法上机实习题

3数值计算方法上机实习题

上海电力学院数值计算上机报告课程:现代数值计算题目:数值计算方法上机实习题报告院系:自动化工程学院专业年级:电机与电器学生姓名:黄丽学号:ys1310401009指导教师:黄建雄2013年12月20日数值计算方法上机实习题1.设⎰+=105dx xx I nn , (1) 由递推公式n I I n n 151+-=-,从0I 的几个近似值出发,计算20I ; (2) 粗糙估计20I ,用nI I n n 51511+-=-,计算0I ;(3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。

程序:(1)由递推公式nI I n n 151+-=-,从0I 的几个近似值出发,计算20I ; I(0) =0.1820;I(1)= 0.0900;I(2)= 0.0500;I(3)= 0.0833;I(4)= -0.1667; I=0.182; for n=1:20I=(-5)*I+1/n; end故计算结果20I = -3.0666e+10(2)粗糙估计20I ,用nI I n n 51511+-=-,计算0I ; 0095.056 0079.01020201020≈<<≈⎰⎰dx x I dx xI=0.008;for n=20:-1:1I=(-1/5)*I+1/(5*n); end I0I = 0.1823(3)分析结果的可靠性及产生此现象的原因(重点分析原因)。

假设n S 的真值为*n S ,误差为n ε,即n n n S S -=*ε。

对于真值也有n S S n n 151**=-+。

综合2个递推等式,有15--=n n εε,即意味着只要n 足够大,按照这种每计算一步误差增长5倍的方式,所得的结果总是不可信的,因此整个算法是数值不稳定的。

而第二种方式的误差会以每计算一步缩小到1/5的方式进行,这样的计算结果和实际是很相近的。

2.求方程0210=-+x e x 的近似根,要求41105-+⨯<-k k x x ,并比较计算量。

数值计算方法上机题

数值计算方法上机题

习题二问题:1.编制通用子程序对n+1个节点x i及y i=f(x i) (i=1,…n) (1)n次拉格朗日插值计算公式;(2)n次牛顿向前插值计算公式;(3)n次牛顿向后插值计算公式;(一)程序流程图(1)拉格朗日插值程序流程图(2)牛顿向前插值程序流程图(3)牛顿向后插值程序流程图。

(二)源程序见主程序清单问题:2.计算(1)已知f(x)=lnx,,[a,b]=[1,2],取h=0.1,x i=1+ih,i=0,1, (10)用通用程序(1),(3)计算ln1.54及ln1.98的近似值;(一)程序清单/* program of question 2.1, page 61 */#include "stdio.h"#include "math.h"main(){ int i,flag=0;double z1,z2,x[11],y[11],t,s1,s2,z[10],c[11][11],log(double),ntb(),L(); for(i=0;i<=10;i++){x[i]=1+0.1*i;y[i]=log(x[i]);}printf("data x:\n");for(i=0;i<=10;i++){flag++;printf("%11.6f",x[i]);if(flag%4==0)printf("\n");}printf("\ndata y:\n");flag=0;for(i=0;i<=10;i++){flag++;printf("%11.6f",y[i]);if(flag%4==0)printf("\n");}printf("\nThe true value:\n");printf(" ln1.54=%f ln1.98=%f\n",log(1.54),log(1.98));z1=L(x,y,10,1.54);z2=L(x,y,10,1.98);t=(1.54-x[10])/0.1;s1=ntb(y,10,t,z,c);s2=ntb(y,10,t,z,c);t=(1.98-x[10])/0.1;printf("The approximate value:\n");printf(" L(1.54)=%f L(1.98)=%f\n",z1,z2);printf(" NTB(1.54)=%f NTB(1.98)=%f\n",s1,s2);}double L(double x[],double y[],int n,double t){ int i,k; double z=0.0,s;if(n==1)z=y[0];for(k=0;k<=n;k++){ s=1.0;for(i=0;i<=n;i++) if(i!=k)s=s*(t-x[i])/(x[k]-x[i]);z=z+s*y[k]; }return z;}double ntb(double y[],int n,double t,double z[],double c[][11]) { int i,j,sn=n;double s;z[0]=t;for(i=1;i<=n-1;i++) z[i]=z[i-1]*(t+i)/(i+1);for(i=0;i<=n;i++) c[i][0]=y[sn--];for(j=1;j<=n;j++)for(i=0;i<=n-j;i++) c[i][j]=c[i][j-1]-c[i+1][j-1];s=y[n];for(i=0;i<=n-1;i++) s=s+z[i]*c[0][i+1];return s;}(二)运行结果data x:1.000000 1.100000 1.200000 1.3000001.400000 1.500000 1.600000 1.7000001.800000 1.9000002.000000data y:0.000000 0.095310 0.182322 0.2623640.336472 0.405465 0.470004 0.5306280.587787 0.641854 0.693147The true value:ln1.54=0.431782 ln1.98=0.683097The approximate value:L(1.54)=0.431782 L(1.98)=0.683097NTB(1.54)=0.431782 NTB(1.98)=0.683097问题:(2)f(x)=1/(1+25x2), |x|≤1取等距节点n=5和n=10,用通用程序(1),(2)依次计算x=-0.95+ih(i=0,1, (19)h=0.1)处f(x)的近似值,并将其结果与其真实值相比较。

数值计算方法上机答案

数值计算方法上机答案
2
0.23


22.322

b


54 240.236


29.304

117.818
2.991 1 13
3.907 0.017
3
1.007 2.1 0.5 61.705 0.91 4.5
1.006 6.3 1
12.17 4.918
[ 1.0, 2.0, 3.0, 4.5, 5.0, 21.8]
ans =
1.0000 -2.0000
2.9999 -4.0001
5.0000 -6.0008
17 1 4 3 1 2 3 7

2
10 1
7
2 1
1
4
1 1 8 2 5 2 1 1
3、
A


max1=0; for i=k:n
if abs(A(i,k))>max1 max1=abs(A(i,k));r=i;
end end if max1<1e-6
flag='failure';return; end if r>k
for j=k:n z=A(k,j);A(k,j)=A(r,j);A(r,j)=z;
[ -1.0, 34.211, -1.0, -2.1, 6.3, -1.7]
[
0, 0.5, 13.0, -0.5, 1.0, -1.5]
[ 4.501, 3.11, -3.907, -61.705, 12.17, 8.999]
[ 0.101, -0.812, -0.017, -0.91, 4.918, 0.1]
k x(k) 0 1.500000 1 0.784472 2 0.739519

数值计算方法上机实习题答案.doc

数值计算方法上机实习题答案.doc

1.设I n 1 x ndx ,0 5 x( 1)由递推公式 I n 5I n 11,从 I 0的几个近似值出发,计算I 20;n解:易得: I 0 ln6-ln5=0.1823, 程序为:I=0.182;for n=1:20I=(-5)*I+1/n;endI输出结果为: I 20= -3.0666e+010( 2)粗糙估计 I 20,用 I n 1 1I n 1 1 ,计算 I 0;5 5n0.0079 1 x 20 1 x 200.0095因为dx I 20dx 6 5所以取 I 20 1(0.0079 0.0095) 0.0087 2程序为: I=0.0087;for n=1:20I=(-1/5)*I+1/(5*n);endII 0= 0.0083( 3)分析结果的可靠性及产生此现象的原因(重点分析原因 )。

首先分析两种递推式的误差;设第一递推式中开始时的误差为E0 I 0 I 0,递推过程的舍入误差不计。

并记 E n I n I n,则有 E n 5E n 1 ( 5) n E0。

因为 E20( 5) 20 E0 I 20,所此递推式不可靠。

而在第二种递推式中E0 1E1 (1)n E n,误差在缩小,5 5所以此递推式是可靠的。

出现以上运行结果的主要原因是在构造递推式过程中,考虑误差是否得到控制,即算法是否数值稳定。

2.求方程e x10x 2 0 的近似根,要求x k 1x k 5 10 4,并比较计算量。

(1)在 [0, 1]上用二分法;程序: a=0;b=1.0;while abs(b-a)>5*1e-4c=(b+a)/2;if exp(c)+10*c-2>0b=c;else a=c;endendc结果: c =0.0903( 2)取初值x0 0,并用迭代 x k 1 2 e x ;10程序: x=0;a=1;while abs(x-a)>5*1e-4a=x;x=(2-exp(x))/10;endx结果: x =0.0905(3)加速迭代的结果;程序: x=0;a=0;b=1;while abs(b-a)>5*1e-4a=x;y=exp(x)+10*x-2;z=exp(y)+10*y-2;x=x-(y-x)^2/(z-2*y+x);b=x;endx结果: x =0.0995( 4)取初值x00 ,并用牛顿迭代法;程序: x=0;a=0;b=1;while abs(b-a)>5*1e-4a=x;x=x-(exp(x)+10*x-2)/(exp(x)+10); b=x;end x 结果: x =0.0905( 5) 分析绝对误差。

数值计算方法上机实习题NEW

数值计算方法上机实习题NEW

数值计算方法上机实习题1. 设,(1) 由递推公式,从 , 出发,计算 ; 程序如下:function I=myhs(I0,n) if n>=1I=myhs(I0,n-1)*(-5)+1/n; elseif n==0 I=I0; end命令行窗口输入: I0=0.1822;I1=myhs(I0,20); I0=0.1823;I2=myhs(I0,20);运行结果:当I0=0.1822时,I20=-1.1593e+10。

当I0=0.1823时,I20= -2.0558e+9。

(2) ,20=10000I , 用,计算0I ; 程序如下:function I=myhs2(I20,n) if (n<20)I=myhs2(I20,n+1)*(-1)/5+1/(5*(n+1)); elseif n==20 I=I20; end命令行窗口输入:I20=0;I1=myhs2(I20,20); I20=10000;I2=myhs2(I20,20);运行结果:当I 20=0时,I 0=0.182321556793955。

当I 20=10000时,I 0= 0.182321556898812。

(3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。

根据上式,假设I n 的真值为I*,误差为e n ,即e=I*-I n 。

综合递推式,有e n =-5*e n-1,这意味着哪怕开始只有一点点误差,只要n 足够大,按照这种计算一步误差增长5倍的方式,所得的结果总是不可信的,因此整个算法是不稳定的。

根据上式,假设I n 的真值为I*,误差为e n ,即e=I*-I n 。

综合递推式,有e n-1. =(-1/5)*e n ,按照这种计算误差会以每步缩小到1/5的方式进行,根据(2)得到的结果而言,该算法是相对稳定的。

2. 求方程0210=-+x e x 的近似根,要求41105-+⨯<-k k x x ,并比较计算量。

数值计算方法上机实验题

数值计算方法上机实验题

数值计算方法上机实验实验内容:1.要求:分别用复化梯形法,复化Simpson 法和 Romberg 公式计算.2.给定积分dx e x⎰31和dx x ⎰311 ,分别用下列方法计算积分值要求准确到510- ,并比较分析计算时间. 1)变步长梯形法; 2)变步长 Simpson 法; 3) Romberg 方法.算法描述:1、复合梯形法:⎰=tdt t a t V 0)()( ))()(2)((211∑-=++=n k k n b f x f a f hT输入 被积函数数据点t,a. 输出 积分值.n T复合Simpson 法:⎰=tdt t a t V 0)()( ))()(2)(4)((6101121∑∑---=++++=n k n k k k n b f x f x f a f hS输入 被积函数f(x),积分区间[a,b]和n 输出 复合Simpson 积分值n S步1 .);()(;a x b f a f S nab h n ⇐-⇐-⇐ 步2 对n k ,,2,1 =执行).(2;2);(4;2x f S S hx x x f S S h x x n n n n +⇐+⇐+⇐+⇐步3 n n S hS ⨯⇐6步4 输出n SRomberg 积分法:根据已知数据对其进行多项式拟合得出p(x);f(x)⇐p(x); 输入 被积函数f(x),积分区间端点a,b,允许误差ε 输出 Romberg 积分值n R 2 步1 .0;0;0;0));()((2;1111⇐===+⇐-⇐k R C S b f a f hT a b h 步2 反复执行步3→步9. 步3 .2;0h a x S +⇐⇐ 步4 反复执行步5→步6. 步5 ;);(h x x x f S S +⇐+⇐步6 若x ≥b,则退出本层循环. 步7 执行.6316364;1511516;3134;2212212212212C C R S S C T T S S h T T -⇐-⇐-⇐+⇐步8 执行.1;;;;;2;2121212112+⇐⇐⇐⇐⇐⇐-⇐k k R R C C S S T T hh R R e 步9 若e ≤ε且k ≥5,则退出循环. 步10 .22R R n ⇐ 步11 输出.2n R2、变步长梯形算法:功能 求积分⎰ba)(dx x f ,允许误差为ε。

——数值分析上机题

——数值分析上机题

.......................课程名称:数值分析上机实习报告姓名:学号:专业:联系电话:目录序言 (3)第1章必做题 (4)1.1必做题第一题 (4)1.1.1题目 (4)1.1.2 分析 (4)1.1.3 计算结果 (4)1.1.3 总结 (6)1.2必做题第二题 (6)1.2.1题目 (6)1.2.2分析 (6)1.2.3计算结果 (6)1.2.4结论 (8)1.1必做题第一题....................................................................... 错误!未定义书签。

1.1.1题目 ............................................................................ 错误!未定义书签。

第2章选做题 (8)2.1选做题第一题 (8)2.1.1题目 (8)2.1.2分析 (8)2.1.3计算结果 (8)附录 (10)附录一:必做题第一题程序 (10)附录二:必做题第二题程序 (11)附录三:选做题第一题的程序 (13)序言本次数值分析上机实习采用Matlab数学软件。

Matlab是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。

在数值分析应用中可以直接调用Matlab软件中已有的函数,同时用户也可以将自己编写的实用程序导入到Matlab函数库中方便自己调用。

基于Matlab数学软件的各种实用性功能与优点,本次数值分析实习决定采用其作为分析计算工具。

1.编程效率高MATLAB是一种面向科学与工程计算的高级语言,允许使用数学形式的语言编写程序,且比BASIC、FORTRAN和C等语言更加接近我们书写计算公式的思维方式,用MATLAB编写程序犹如在演算纸上排列出公式与求解问题。

因此,MATLAB语言也可通俗地称为演算纸式科学算法语言。

数值计算方法上机实习题考证

数值计算方法上机实习题考证

---------------------------------------------------此文档包含我们计算方法的经典算法包含(数值计算方法上机实习题)1. 设⎰+=105dx x x I nn , (1) 由递推公式nI I n n 151+-=-,从0I 的几个近似值出发,计算20I ; (2) 粗糙估计20I ,用n I I n n 51511+-=-,计算0I ; (3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。

(1) 解答:n=0,0.1823)05ln()15ln()5(51515101010=+-+=++=+=+=⎰⎰⎰x d x dx x dx x x I nn 这里可以用for 循环,while 循环,根据个人喜好与习惯:for 循环程序: While 循环程序:I=0.1823; I=0.1823;for n=1:20 i=1;I=(-5)*I+1/n; while i<21End I=(-5)*I+1/i;I i=i+1;fprintf('I20=%f',I) endI = -2.0558e+009 >> II20=-2055816073.851284>> I = -2.0558e+009(2) 粗略估计I 20: Mathcad 计算结果: for 循环程序: While 循环程序: >> I=0.007998; I=0.007998;>> for n=1:20 n=1;I=(-0.2)*I+1/(5*n); while n<21End I=(-0.2)*I+1/(5*n);>> I n=n+1;I =0.0083 end>> II =0.0083(3) 算法误差分析:计算在递推过程中传递截断误差和舍入误差第一种算法:(从1——>20)01x x 205x +⎛⎜⎜⎜⎠d 7.998103-⨯=*000e I I =-***21111120115(5)5()555n n n n n n n n n n e I I I I I I e e e n n------=-=-+--+=-===误差放大了5n 倍,算法稳定性很不好;第二种算法:(从20——>1)*n n ne I I =- ***111111111()()555555n n n n n n n n e I I I I I I e n n ---=-=-+--+=-=0111...()55n n e e e === 误差在逐步缩小,算法趋近稳定,收敛。

数值计算方法上机实习题

数值计算方法上机实习题

........数值计算方法上机实习题1.设I n1x ndx ,0 5 x(1 )1,I0 =0.1823 出发,计算 I 20;由递推公式 I n5I n 1,从n(2 )I 20 =0 , I 20 =10000 ,用I n11I n 11,计算 I0;55n(1) 由 I0计算 I20(2) 由 I20计算 I0递推子程序:程序:function f=fib(n,i)n=21;if n>=1i1=0;f=fib(n-1,i)*(-5)+(1/(n));i2=10000;elseif n==0f1=i1;f=i;f2=i2;end while n~=0;计算和显示程序:f1=f1*(-1/5)+(1/(5*n));f2=f2*(-1/5)+(1/(5*n));I=0.1824;n=n-1;I1=0.1823;endfib1=fib(20,I);fprintf('I_20=0时,I_0=%4.8f\n',f1);fib2=fib(20,I1);fprintf('I_20=10000时,I_0=%4.8f\n',f2);时,I_20=%d\n',fib1);时,I_20=%d\n',fib2);计算结果显示:计算结果显示:I_20=0时,I_0=0.1824 时,I_20=7.480927e+09I_20=10000时,I_0=0.1823 时,I_20=-2.055816e+09(3)剖析结果的靠谱性及产生此现象的原由(要点剖析原由 )。

答:第一个算法可得出易知第一个算法每一步计算都把偏差放大了 5 倍,n 次计算后更是放大了5n倍,靠谱性........第二个算法可得出能够看出第二个算法每一步计算就把偏差减小 5 倍, n 次后减小了5n倍,靠谱性高。

2.求方程e x10x 2 0的近似根,要求x k 1x k 5 10 4,并比较计算量。

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

上海电力学院数值计算上机报告课程:现代数值计算题目:数值计算方法上机实习题报告院系:自动化工程学院专业年级:电机与电器学生姓名:黄丽学号:ys1310401009指导教师:黄建雄2013年12月20日数值计算方法上机实习题1.设⎰+=105dx x x I nn , (1) 由递推公式nI I n n 151+-=-,从0I 的几个近似值出发,计算20I ; (2) 粗糙估计20I ,用nI I n n 51511+-=-,计算0I ; (3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。

程序:(1)由递推公式nI I n n 151+-=-,从0I 的几个近似值出发,计算20I ; I(0) =0.1820;I(1)= 0.0900;I(2)= 0.0500;I(3)= 0.0833;I(4)= -0.1667;I=0.182;for n=1:20I=(-5)*I+1/n;end故计算结果20I = -3.0666e+10(2)粗糙估计20I ,用n I I n n 51511+-=-,计算0I ; 0095.056 0079.010********≈<<≈⎰⎰dx x I dx x I=0.008;for n=20:-1:1I=(-1/5)*I+1/(5*n);endI0I = 0.1823(3)分析结果的可靠性及产生此现象的原因(重点分析原因)。

假设n S 的真值为*n S ,误差为n ε,即n n n S S -=*ε。

对于真值也有n S S n n 151**=-+。

综合2个递推等式,有15--=n n εε,即意味着只要n 足够大,按照这种每计算一步误差增长5倍的方式,所得的结果总是不可信的,因此整个算法是数值不稳定的。

而第二种方式的误差会以每计算一步缩小到1/5的方式进行,这样的计算结果和实际是很相近的。

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)在[0,1]上用二分法;程序: a=0;b=1.0;i=0;while abs(b-a)>5*1e-4c=(b+a)/2;if exp(c)+10*c-2>0b=c;else a=c;endi=i+1;endc方程的近似根为:x*=(a+b )/2 = 0.0906 。

步长为i =11 。

(2)取初值00=x ,并用迭代1021x k e x -=+; 程序: x=0;y=0.1;i=0;while abs(y-x)>5*1e-4y=x;x=(2-exp(x))/10;i=i+1;end方程的近似根为:x=0.0905 。

步长为i=4 。

(3)加速迭代的结果;程序:x=0;xx=1;i=0;while abs(xx-x)>5*1e-4y=exp(x)+10*x-2;z=exp(y)+10*y-2;xx=x;x=x-(y-x)^2/(z-2*y+x);i=i+1;endx方程的近似根为:x= 0.0995。

步长为i=3 。

(4)取初值00=x ,并用牛顿迭代法;程序:x=0;y=0.1;i=0;while abs(y-x)>5*1e-4y=x;x=x-(exp(x)+10*x-2)/(exp(x) + 10);%diff(exp(x)+10*x-2)=exp(x) + 10i=i+1;endxi方程的近似根为:x= 0.0905。

步长为i=2 。

(6) 分析绝对误差。

solve('exp(x)+10*x-2=0')方程的精确解为x= 0.0905。

3.钢水包使用次数多以后,钢包的容积增大,数据如下:(注:增速减少,用何种模型)解:(1)设y=f(x)具有指数形式xb ae y =(a>0,b<0)。

对此式两边取对数,得x b a y 1ln ln +=。

记A=lna ,B=bx=[2 3 4 5 6 7 8 9 10 11 12 13 14 15 16];for i=1:15X(i)=1/x(i);endy=[6.42 8.2 9.58 9.5 9.7 10 9.93 9.99 10.49 10.59 10.60 10.8 10.6 10.9 10.76];for i=1:15Y(i)=log(y(i));endpolyfit(X,Y,1)经计算ans = -1.1107 2.4578。

故方程为⎪⎪⎩⎪⎪⎨⎧-====+-=1107.14578.2ln 4578.211107.1ln b B a A a x y 故原方程的系数为故原方程为:x e y 1107.16791.11-=(2)计算均方差:x=[2:16]; y=[6.42 8.2 9.58 9.5 9.7 10 9.93 9.99 10.49 10.59 10.60 10.8 10.6 10.9 10.76];f(x)=11.6791*exp( -1.1107./x);c=0;for i=1:15a=y(i);b=x(i);c=c+(a-f(b))^2;endaverge=c/15结果:averge =0.05944.设⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛----------------=410100141010014101101410010141001014A ,⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛--=625250b ,b x =A 分析下列迭代法的收敛性,并求42110-+≤-k k x x 的近似解及相应的迭代次数。

(1) JACOBI 迭代;以文件名math4a.m 保存。

function math4aA=[4 -1 0 -1 0 0;-1 4 -1 0 -1 0;0 -1 4 -1 0 -1;-1 0 -1 4 -1 0;0 -1 0 -1 4 -1;0 0 -1 0 -1 4];b=[0 5 -2 5 -2 6];x0=[0 0 0 0 0 0];imax=100;tol=10^-4;tx=jacobi(A,b,imax,x0,tol);for j=1:size(tx,1)fprintf('%d %f %f %f %f %f %f\n',j,tx(j,1),tx(j,2),tx(j,3),tx(j,4),tx(j,5),tx(j,6))endfunction tx=jacobi(A,b,imax,x0,tol) %初始值x0,次数imax,精度tol del=10^-10;tx=[x0];n=length(x0);for i=1:ndg=A(i,i);if abs(dg)<deldisp('对角元太小');returnendendfor k=1:imax %jacobi循环for i=1:nsm=b(i);for j=1:nif j~=ism=sm-A(i,j)*x0(j);endendx(i)=sm/A(i,i);endtx=[tx;x];if norm(x-x0)<tolreturnelsex0=x;endend近似解y为:1 0.000000 0.000000 0.000000 0.000000 0.000000 0.0000002 0.000000 1.250000 -0.500000 1.250000 -0.500000 1.5000003 0.625000 1.000000 0.500000 1.000000 0.500000 1.2500004 0.500000 1.656250 0.312500 1.656250 0.312500 1.7500005 0.828125 1.531250 0.765625 1.531250 0.765625 1.6562506 0.765625 1.839844 0.679688 1.839844 0.679688 1.8828137 0.919922 1.781250 0.890625 1.781250 0.890625 1.8398448 0.890625 1.925293 0.850586 1.925293 0.850586 1.9453139 0.962646 1.897949 0.948975 1.897949 0.948975 1.92529310 0.948975 1.965149 0.930298 1.965149 0.930298 1.97448711 0.982574 1.952393 0.976196 1.952393 0.976196 1.96514912 0.976196 1.983742 0.967484 1.983742 0.967484 1.98809813 0.991871 1.977791 0.988895 1.977791 0.988895 1.98374214 0.988895 1.992415 0.984831 1.992415 0.984831 1.99444815 0.996208 1.989639 0.994820 1.989639 0.994820 1.99241516 0.994820 1.996462 0.992923 1.996462 0.992923 1.99741017 0.998231 1.995167 0.997583 1.995167 0.997583 1.99646218 0.997583 1.998349 0.996699 1.998349 0.996699 1.99879219 0.999175 1.997745 0.998873 1.997745 0.998873 1.99834920 0.998873 1.999230 0.998460 1.999230 0.998460 1.99943621 0.999615 1.998948 0.999474 1.998948 0.999474 1.99923022 0.999474 1.999641 0.999282 1.999641 0.999282 1.99973723 0.999820 1.999509 0.999755 1.999509 0.999755 1.99964124 0.999755 1.999832 0.999665 1.999832 0.999665 1.99987725 0.999916 1.999771 0.999886 1.999771 0.999886 1.99983226 0.999886 1.999922 0.999844 1.999922 0.999844 1.99994327 0.999961 1.999893 0.999947 1.999893 0.999947 1.99992228 0.999947 1.999964 0.999927 1.999964 0.999927 1.99997329 0.999982 1.999950 0.999975 1.999950 0.999975 1.999964(2)GAUSS-SEIDEL迭代;以文件名math4b.m保存。

相关文档
最新文档