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

合集下载

数值分析上机实验报告

数值分析上机实验报告

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

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

可以节省计算机的计算时间,还能减小不必要的误差。

前言:(目的和意义)掌握二分法与Newton 法的基本原理、应用以及熟练掌握用MATLAB 求函数积分 数学原理:(1)函数的调用格式:quadl(filename,a,b,tol,trace)其中filename 是调用函数名,a 和b 分别为定积分的下限和上限。

用来控制积分精度。

(2)秦九韶算法: S n =a nS k =xS k+1+a k (k=n-1,n-2,...,0), P n (x)=S 0 程序设计:例1.1 计算积分de x xx110利用MATLAB ,下面给出主程序>>g=inline('x.^10.*exp(x-1)'); %定义一个语句函数g(x)=exp(x^10*exp(x-1)) I=quadl(g,0,1) I =0.0098例1.9 秦九韶算法a 0=3,a k=2a k-1+3,Pn(x)=a n x^n+a n-1x^(n-1)+...+a1x+a0求I1=P100(0.5),I2=P150(13)>>x=input('x=');n=input('n=');a=3;for i=1:na=2*a+3;ends=z;b=(a-3)/2;for m=1:100s=x*s+b;b=(b-3)/2;enddisp(s);>>x=0.5n=100600.0000>>x=3n=1004.7039e+078结果分析和讨论:结论:对于二分法,只要能够保证在给定的区间内有根,使能够收敛的,当时收敛的速度和给定的区间有关,二且总体上来说速度比较慢。

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

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

计算方法A上机实验报告姓名:苏福班级:硕4020 学号:3114161019一、上机练习目的1)复习和巩固数值计算方法的基本数学模型,全面掌握运用计算机进行数值计算的具体过程及相关问题。

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

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

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

3)写出上机练习报告。

三、上机题目1. 共轭梯度法求解线性方程组。

(第三章)2. 三次样条插值(第四章)3. 龙贝格积分(第六章)4. 四阶龙格-库塔法求解常微分方程的初值问题四、上机报告题目1:共轭梯度法求解线性方程组1.算法原理共轭梯度法是把求解线性方程组的问题转化为求解一个与之等价的二次函数极小值的问题。

从任意给定的初始点出发,沿一组关于矩阵A共轭的方向进行线性搜索,在无舍入误差的假定下,最多迭代n 次(其中n 为矩阵A 的阶数),就可求得二次函数的极小值,也就求得了线性方程组Ax b =的解。

定理:设A 是n 阶对称正定矩阵,则x *是方程组Ax b =的解得充分必要条件是x *是二次函数1()2TT f x x Ax b x =-的极小点,即 ()()min nx R Ax b f x f x **∈=⇔=共轭梯度法的计算公式:(0)(0)(0)()()()()(1)()()(1)(1)(1)()()()(1)(1)()k T k k k T k k k k k k k k T k k k T k k k k k d r b Ax r d d Ad xx d r b Ax r Ad d Ad d r d ααββ++++++⎧==-⎪⎪=⎪⎪=+⎪⎨=-⎪⎪⎪=-⎪⎪=+⎩2. 程序框图(1)编写共轭梯度法求解对称正定矩阵的线性方程组见附录(myge.m):function x=myge(A,b)输入对称正定矩阵及对应的列向量,初始向量设为0,精度取为810 。

数值计算方法实验报告

数值计算方法实验报告

数值分析实验报告实验一、解线性方程组的直接方法——梯形电阻电路问题利用追赶法求解三对角方程组的方法,解决梯形电阻电路问题:电路中的各个电流{1i ,2i ,…,8i }须满足下列线性方程组:R V i i =- 22 210 252321=-+-i i i 0 252 432=-+-i i i 0 252 543=-+-i i i 0 252 654=-+-i i i 0 252 765=-+-i i i 0 252 876=-+-i i i 052 87=+-i i设V 220=V ,Ω=27R ,运用追赶法,求各段电路的电流量。

问题分析:上述方程组可用矩阵表示为:⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------00000001481.8522520000002520000002520000002520000002520000002520000002287654321i i i i i i i i问题转化为求解A x b =,8阶方阵A 满足顺序主子式(1,2...7)0i A i =≠,因此矩阵A存在唯一的Doolittle 分解,可以采用解三对角矩阵的追赶法!追赶法a=[0 -2 -2 -2 -2 -2 -2 -2]; b=[2 5 5 5 5 5 5 5];c=[-2 -2 -2 -2 -2 -2 -2 0]; d=[220/27 0 0 0 0 0 0 0];Matlab 程序function x= zhuiganfa( a,b,c,d )%追赶法实现要求:|b1|>|C1|>0,|bi|>=|ai|+|ci| n=length(b); u=ones(1,n); L=ones(1,n); y=ones(1,n); u(1)=b(1); y(1)=d(1); for i=2:nL(i)=a(i)/u(i-1);u(i)=b(i)-c(i-1)*L(i); y(i)=d(i)-y(i-1)*L(i); endx(n)=y(n)/u(n); for k=n-1:-1:1x(k)=(y(k)-c(k)*x(k+1))/u(k); end endMATLAB 命令窗口输入:a=[0 -2 -2 -2 -2 -2 -2 -2]; b=[2 5 5 5 5 5 5 5];c=[-2 -2 -2 -2 -2 -2 -2 0] d=[220/27 0 0 0 0 0 0 0];x= zhuiganfa(a,b,c,d )运行结果为:x =8.1478 4.0737 2.0365 1.0175 0.5073 0.2506 0.1194 0.0477存在问题根据电路分析中的所讲到的回路电流法,可以列出8个以回路电流为独立变量的方程,课本上给出的第八个回路电流方程存在问题,正确的应该是78240i i -+=;或者可以根据电路并联分流的知识,同样可以确定78240i i -+=。

计算方法实验报告格式

计算方法实验报告格式

计算方法上机实验指导一、数值实验报告格式及要求:1、实验目的:首先要求每一个做实验者明确,为什么要做某个实验,实验目的是什么,做完该实验应达到什么结果,在实验过程中的注意事项,实验方法对结果的影响也可以以实验目的的形式列出。

2、实验题目:在下面分若干个实验详细给出,实验者可根据报告形式需要适当改写或重述。

3、实验原理与基本理论:数值实验本身就是为了加深对基础理论及方法的理解而设置的,所以要求将实验涉及的理论基础,算法原理详尽列出。

4、实验内容:实验内容主要包括实验的实施方案、步骤、实验数据准备、实验的算法流程图等。

5、实验结果实验结果应包括实验的原始数据、中间结果及实验的最终结果,复杂的结果可以用表格形式实现,较为简单的结果可以与实验结果分析合并出现。

6、实验结果分析:实验结果分析是数值实验的重要环节,只有对实验结果认真分析,才能对实验目的、实验方法进一步理解对实验的重要性充分认识,明确数值计算方法的使用范围及其优缺点。

7、实验体会要求:每个实验都应在计算机上实现或演示,由实验者独立用Matlab语言编程实现 (使之尽量具有通用性),程序清单以附录形式给出,程序中至少1/3行要加注释,特别要对程序中的主要变量给出说明。

二、数值实验类型:(可以根据课时安排在讲对应章节之后完成实验)实验一 误差传播与算法稳定性1.1 实验目的体会稳定性在选择算法中的地位.误差扩张的算法是不稳定的,是我们所不期望的;误差衰竭的算法是稳定的.是我们努力寻求的,这是贯穿本课程的目标.通过上机计算,了解舍入误差所引起的数值不稳定性。

1.2 算法描述概要:舍人误差在计算方法中是—个很重要的概念。

在实际计算中,如果选用了不同的算法,由于舍入误差的影响.将会得到截然不同的结果。

因此,选取稳定的算法,在实际计算中是十分重要的。

考虑一个简单的由积分定义的序列101n x n I x e dx e=⎰, 0,1,2,n = (E.1) 利用分部积分易得 11111000111n x n x n x n n n I x e dx x e x e dx nI e e e --==-=-⎰⎰, 0,1,2,n = 得递推公式11n n I nI -=-, 0,1,2,n = (E.2) 注意到110100111111n n n n x e dx I x e dx I e e e(n )n ⋅<<⋅∴<<++⎰⎰ 取100111063212056x I e dx .e e==-≈⎰ 由利用(E.2)变形得到11nn I I n --= (E.3)计算方法:先估计一个N I ,再反推要求的n I (n N )。

数值积分上机实验报告

数值积分上机实验报告

数值积分上机实验报告141110038 桂贤进题一:数学上已经证明了f1 4--- dx =nJo 1+0成立,所以可以通过数值积分来求71的近似值。

1.分别使用复合梯形、复合Simpson求积公式计算11的近似值。

选择不同的h,对每种求枳公式,试将误差刻画为h的函数,并比较两方法的精度。

是否存在某个值,当低于这个值之后,再继续减小h的值,计算精度不再有所改进,为什么?2.实现Romberg求积方法,并重复上面的计算;3•实现自适应积分方法,并审;复上面的计算。

解:1.1公式分析:(a)对于复合梯形公式T"=纟[f (a) +2£f(a + 汎)]“=字⑴i=lE n(f)=-嗒f⑺⑺= ①严)(f),a v f V 方(b)对于复合Simpson公式斤m m—1SnG) = £ [/(a) + f(b) + 4》f(a + ⑵ 一1)/1) + 2》f(a + 2ih)](3)1=1 1=1. b-a b-a11 = —= --------2m n离散误差为:EQ—嘗八呢一?^炉肿vg. (4)1.2实现算法结果:分别利用梯形公式和Simpson公式计算结果如下:(下表中E丄(f) = \n-T(f儿E2(T) = |兀此处兀为MATLAB中的数,可以认为具冇足够大的精度)61/6 3.136963066471264 0.00463 3.141591780936043 8.7265e-07 8 1/8 3.138988494491089 0.00260 3.141592502458707 1.5113e-07 10 1/10 3.139925988907159 0.00167 3.141592613939215 3.9651e-08 12 1/12 3.140435246846851 0.00116 3.141592********* 1.3284e ・08 20 1/20 3.141175986954129 4.1667e-04 3.141592652969785 6.2001e-10 30 1/30 3.141407468407330 1.8519e-04 3.141592653535359 5.4434e-ll 40 1/40 3.141488486923612 1.0417e-04 3.141592653580105 9.6878e-12 50 1/50 3.141525986923254 6.6667e-05 3.141592653587253 2.5402e-12 1001/100 3.141575986923129 1.6667e-05 3.141592653589753 3.9968e-142001/2003.1415884869231304.1667e-063.141592653589793从上农中可以看出:复合Simpson 公式比复合梯形公式稱度岛,误差收敛的速度快不少。

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

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

《数值计算方法》上机实验报告华北电力大学实验名称数值il•算方法》上机实验课程名称数值计算方法专业班级:电力实08学生姓名:李超然学号:200801001008 成绩: 指导教师:郝育黔老师实验日期:2010年04月华北电力大学实验报告数值计算方法上机实验报吿一.各算法的算法原理及计算机程序框图1、牛顿法求解非线性方程*对于非线性方程,若已知根的一个近似值,将在处展开成一阶xxfx ()0, fx ()xkk泰勒公式"f 0 / 2 八八,fxfxfxxxxx 0 0 0 0 0 kkkk2!忽略高次项,有,fxfxfxxx 0 ()()(),,, kkk右端是直线方程,用这个直线方程来近似非线性方程。

将非线性方程的**根代入,即fx ()0, X ,* fxfxxx 0 0 0 0, ,, kkkfx 0 fx 0 0,解出fX 0 *k XX,, k' fx 0 k水将右端取为,则是比更接近于的近似值,即xxxxk, Ik, Ikfx ()k 八XX, Ikk* fx()k这就是牛顿迭代公式。

,2,计算机程序框图:,见,,3,输入变量、输出变量说明:X输入变量:迭代初值,迭代精度,迭代最大次数,\0输出变量:当前迭代次数,当前迭代值xkl,4,具体算例及求解结果:2/16华北电力大学实验报吿开始读入l>k/fx()0?,0fx 0 Oxx,,01* fx ()0XX,,,?10kk, ,1,kN, ?xx, 10输出迭代输出X输出奇异标志1失败标志,3,输入变量、输出变量说明: 结束例:导出计算的牛顿迭代公式,并il •算。

(课本P39例2-16) 115cc (0), 求解结果:10. 75000010.72383710. 72380510. 7238052、列主元素消去法求解线性方程组,1,算法原理:高斯消去法是利用现行方程组初等变换中的一种变换,即用一个不为零的数乘 -个 方程后加只另一个方程,使方程组变成同解的上三角方程组,然后再自下而上 对上三角3/16华北电力大学实验报告方程组求解。

数值计算基础实验报告(3篇)

数值计算基础实验报告(3篇)

第1篇一、实验目的1. 理解数值计算的基本概念和常用算法;2. 掌握Python编程语言进行数值计算的基本操作;3. 熟悉科学计算库NumPy和SciPy的使用;4. 分析算法的数值稳定性和误差分析。

二、实验内容1. 实验环境操作系统:Windows 10编程语言:Python 3.8科学计算库:NumPy 1.19.2,SciPy 1.5.02. 实验步骤(1)Python编程基础1)变量与数据类型2)运算符与表达式3)控制流4)函数与模块(2)NumPy库1)数组的创建与操作2)数组运算3)矩阵运算(3)SciPy库1)求解线性方程组2)插值与拟合3)数值积分(4)误差分析1)舍入误差2)截断误差3)数值稳定性三、实验结果与分析1. 实验一:Python编程基础(1)变量与数据类型通过实验,掌握了Python中变量与数据类型的定义方法,包括整数、浮点数、字符串、列表、元组、字典和集合等。

(2)运算符与表达式实验验证了Python中的算术运算、关系运算、逻辑运算等运算符,并学习了如何使用表达式进行计算。

(3)控制流实验学习了if-else、for、while等控制流语句,掌握了条件判断、循环控制等编程技巧。

(4)函数与模块实验介绍了Python中函数的定义、调用、参数传递和返回值,并学习了如何使用模块进行代码复用。

2. 实验二:NumPy库(1)数组的创建与操作通过实验,掌握了NumPy数组的基本操作,包括创建数组、索引、切片、排序等。

(2)数组运算实验验证了NumPy数组在数学运算方面的优势,包括加、减、乘、除、幂运算等。

(3)矩阵运算实验学习了NumPy中矩阵的创建、操作和运算,包括矩阵乘法、求逆、行列式等。

3. 实验三:SciPy库(1)求解线性方程组实验使用了SciPy库中的线性代数模块,通过高斯消元法、LU分解等方法求解线性方程组。

(2)插值与拟合实验使用了SciPy库中的插值和拟合模块,实现了对数据的插值和拟合,并分析了拟合效果。

数值计算方法 实验报告4

数值计算方法  实验报告4

实验四 数值微积分实验学院:数学与计算机科学学院 专业:数学与应用数学 学号: 姓名:一. 实验目的1 利用复化求积公式计算定积分,并比较误差;2 比较一阶导数和二阶导数的数值方法,并绘图观察特点.二. 实验题目用复化梯形公式、复化辛普森公式、龙贝格公式求下列定积分,要求绝对误差为8105.0-⨯=ε,并将计算结果与精度解进行比较:⑴dx e x e x2321432⎰= ⑵dx x x ⎰-=322326ln .利用等距节点的函数值和端点的导数值,用不同的方法求下列函数的一阶和二阶导数,分析各种方法的有效性,并用绘图软件绘出函数的图形,观察其特点. ⑴35611201x x y -=,[]2,0∈x ⑵xey 1-=,[]5.0,5.2--∈x三. 实验原理1 复化梯形公式将积分区间[]b a ,剖分为n 等分,分点为)2,1,0( =+=k kh a x k ,其中n a b h /)(-=.在每个区间[]1,+k k x x 上用梯形公式,则有 ()()dx x fdxx fn k x xba k k∑⎰=⎰-=+11()()[][]∑⎭⎬⎫⎩⎨⎧++-=-=++1112n k k k kkk f R x f x f x x()()[][]f R x f x f h n k k n k k k ∑+∑+=-=-=+1112.记()()[]()()()[]∑++=∑+=-=-=+111222n k kn k k knx f b f a f hx f x f h T .2 复化辛普森公式 将积分区间[]b a ,剖分为n 等分,分点为)2,1,0( =+=k kh a xk,其中n a b h /)(-=.记区间[]1,+k k x x 的中点为21+k x ,在每个区间[]1,+k k x x 上用辛普森公式,则得到所谓的复化辛普森公式:()()⎥⎦⎤⎢⎣⎡+⎪⎭⎫⎝⎛+∑-=++-=+1211146k k kn k k k n xfx f x f x x S ,即()()()⎥⎦⎤⎢⎣⎡∑⎪⎭⎫ ⎝⎛+∑++=-=+-=1211426n k k n k knx f x fb f a f h S .3 龙贝格公式的算法步骤为: I.输入b a ,及精度ε; II.置,a b h -=()()()b f a f h T+=211;III. 置2,1,1===n j i ,对分区间[]b a ,,并计算111,+++i j i j T T :∑⎪⎭⎫ ⎝⎛+==-+nk k ii x f hT T 121111221,144111--=+++jijj jj i j T T T ;IV.若不满足终止条件,做循环:n n h h i i 2:,2/:,1:==+=, 计算∑⎪⎭⎫ ⎝⎛+==-+nk k ii x f hT T121111221, 对,,,1i j =计算:144111--=+++jijj jj i j T T T .4 向前差商公式:()()()ha f h a f a f -+≈';向后差商公式:()()()h h a f a f a f --≈';中心差商公式:()()()hh a f h a f a f 2--+≈';二阶导数公式:()()()()22hh a f a f h a f a f ++--≈''.四. 实验内容 实验一第一小题:对于方程dx e x e x2321432⎰=,利用程序shiyan1_01.m内容如下:%第一个函数的实验 clear clcfun=inline('(2/3)*x.^3.*exp(x.^2)'); S1=matrap(fun,1,2,170000); S2=masimp(fun,1,2,250); S3=maromb(fun,1,2,.5e-8); s=exp(4); Er1=abs(S1-s) Er2=abs(S2-s) Er3=abs(S3-s)第二小题:对于方程dx x x ⎰-=322326ln ,利用程序shiyan1_02.m内容如下:%第二个函数的实验 clearclcfun=inline('2*x./(x.^2-3)'); S1=matrap(fun,2,3,15000); S2=masimp(fun,2,3,100); S3=maromb(fun,2,3,.5e-8); s=log(6); Er1=abs(S1-s) Er2=abs(S2-s) Er3=abs(S3-s)实验二第一小题:对于方程35611201x x y -=,[]2,0∈x ,利用程序shiyan2_01.m内容如下:clear clcfun=inline('x.^5/20-(11./6)*x.^3'); dfun=inline('x.^4/4-(11./2)*x.^2'); ddfun=inline('x.^3-11*x'); n=8;h=2/n;x=0:h:2;x1=x(2:n); y=feval(fun,x); dy=feval(dfun,x1); ddy=feval(ddfun,x1); for i=2:ndy1(i)=(y(i+1)-y(i))/h; dy2(i)=(y(i)-y(i-1))/h;dy3(i)=(y(i+1)-y(i-1))/(2*h);ddy1(i)=(y(i+1)-2*y(i)+y(i-1))/(h*h); endfor i=1:n-1err1(i)=abs(dy1(i)-dy(i)); err2(i)=abs(dy2(i)-dy(i)); err3(i)=abs(dy3(i)-dy(i));errd2(i)=abs(ddy1(i)-ddy(i)); end[err1' err2' err3' errd2'] plot(x,y,'r')hold onplot(x1,dy,'y') plot(x1,ddy,'k')第二小题:对于方程xey 1-=,[]5.0,5.2--∈x ,利用程序shiyan2_02.m内容如下:clear clcfun=inline('exp(-1./x)');dfun=inline('(-1./x).*exp(-1./x)');ddfun=inline('(-1./(x.^2)).*exp(-1./x)+1./(x.^2)'); n=8;h=2/n;x=-2.5:h:-0.5;x1=x(2:n); y=feval(fun,x); dy=feval(dfun,x1); ddy=feval(ddfun,x1); for i=2:ndy1(i)=(y(i+1)-y(i))/h; dy2(i)=(y(i)-y(i-1))/h; dy3(i)=(y(i+1)-y(i-1))/(2*h);ddy1(i)=(y(i+1)-2*y(i)+y(i-1))/(h*h); endfor i=1:n-1err1(i)=abs(dy1(i)-dy(i)); err2(i)=abs(dy2(i)-dy(i)); err3(i)=abs(dy3(i)-dy(i)); errd2(i)=abs(ddy1(i)-ddy(i)); end[err1' err2' err3' errd2'] plot(x,y,'r')hold onplot(x1,dy,'y')plot(x1,ddy,'')五.实验结果实验一第一小题T =146.5012 0 0 0 0 0 0 083.9243 63.0653 0 0 0 0 0 062.6132 55.5095 55.0058 0 0 0 0 056.6535 54.6669 54.6108 54.6045 0 0 0 055.1154 54.6027 54.5984 54.5982 54.5982 0 0 054.7277 54.5984 54.5982 54.5982 54.5982 54.5982 0 054.6305 54.5982 54.5982 54.5982 54.5982 54.5982 54.5982 0 54.6062 54.5982 54.5982 54.5982 54.5982 54.5982 54.5982 54.5982Er1 =4.5922e-009Er2 =4.8409e-009Er3 =1.4211e-014第二小题T =2.5000 0 0 0 0 0 0 0 2.0192 1.8590 0 0 0 0 0 0 1.8564 1.8022 1.7984 0 0 0 0 0 1.8088 1.7929 1.7922 1.7921 0 0 0 0 1.7961 1.7918 1.7918 1.7918 1.7918 0 0 0 1.7928 1.7918 1.7918 1.7918 1.7918 1.7918 0 0 1.7920 1.7918 1.7918 1.7918 1.7918 1.7918 1.7918 0 1.7918 1.7918 1.7918 1.7918 1.7918 1.7918 1.7918 1.7918Er1 =4.9383e-009Er2 =4.0302e-009Er3 =1.0132e-012实验二第一小题ans =0.2196 0.2196 0.2196 2.1920 0.3627 0.8003 0.5815 2.1480 0.5711 1.4367 1.0039 2.0560 0.7667 2.0411 1.4039 1.91600.9447 2.5991 1.7719 1.72801.1003 3.09632.0983 1.4920 1.22873.5183 2.3735 1.2080 1.3251 3.8507 2.5879 0.87601.3847 4.07912.7319 0.4960第二小题ans =0.6932 0.6932 0.6932 0.1105 0.4680 0.5532 0.5106 0.5030 0.5236 0.6555 0.5895 0.7793 0.5907 0.8102 0.7005 1.2991 0.6692 1.0727 0.8709 2.3982 0.7473 1.6071 1.1772 5.15720.7567 3.0873 1.9220 14.2888六.实验结果分析1.利用复化辛普森公式比利用复化梯形公式,所取的n更小,当达到相同精度时,利用辛普森公式等分次数n更小,减少计算次数.2.若利用同一公式,所取n的大小与题设给出的精度ε之间的关系:当n越大时,与精度ε之间的误差越小;反之,当n越小时,与精度ε之间的误差越大。

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

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

计算方法实验报告班级: 学号: 姓名: 成绩: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.逆序计算结果分析:两种不同顺序计算结果是一样的,顺序计算误差从一开始就很小,而逆序计算误差最开始十分大,后来结果正确。

数值计算方法实验报告

数值计算方法实验报告

《数值计算方法》实验报告班级数学132班学号201300144402姓名袁媛2016年 1月3日实验报告一1. 实验名称解线性方程组的直接法 2.实验题目用追赶法求解下列方程组⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎭⎫ ⎝⎛101053-001-21-002-31-001-24321x x x x 3.实验目的熟练运用已经学过的方法计算方程组,巩固已经学到的解决方程组的方法,培养使用计算机进行科学计算和解决问题的能力,熟悉了解这样的系数矩阵,能运用追赶法进行方程组的求解。

4.基础理论设A 有如下形式的分解⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=------11......11...............1211122111122211n n n n n n n n n n t t t s r s r s r s b a c b a c b a c b A 其中,i i r s 和i t 为待定常数,则有1,...,3,2,, (3)2,,,111111-===+====-n i t s c n i s t r b r a t s c s b i i i i i i i i i 由可得如下计算公式:1111111,1,...,3,2,/,,/,---==-==-====n n n n n n i i i i i i i i i t r b s a r n i s c t t r b s a r s c t b s 即在A 满足条件的情况下,可以把{}{}i i s r ,和{}i t 完全确定出来,从而实现上面给定形式的LU 分解,且i r 等于),...3,2(n i a i =。

这样,求解三对角阵方程组Ax=f 就等价于求解两个三角形方程组y Ux f Ly ==, 从而得到公式:(1)计算{}i s 和{}i t 的递推公式 ;1, (3)2,/,,/11111---=-==-==n n n n i i i i i i i t a b s n i s c t t a b s b c t (2)求解f Ly = ni s y a f y b f y i i i i i ,...,3,2,/)(,/1111=-==-(3)求解y Ux =1,...,2,1,,1--=-==+n n i x t y x y x i i i i n n通常把计算121...-→→→n t t t 和n y y y →→→...21的过程称为追的过程,而把计算方程组的解11...x x x n n →→→-的过程称为赶的过程,这一方法称为解三角方程组的追赶法。

数值计算方法上机实验

数值计算方法上机实验
实验内容:,
用追赶法解三角方程组Ax=d,A= , d=
实验过程:
1.利用C语言编程求解,程序如下:
#include<stdio.h>
#include<math.h>
void main()
{int i;
double a[5]={0,-1,-1,-1,-1},b[5]={2,1,1,1,1},c[4]={2,2,2,2},f[5]={6,7,9,11,1};
{double x=-0.99,y;
int n=0;
printf("%d ,%lf\n",n,x);
do
{y=x;
x=x-(x*x*x/3-x)/(x*x-1);
n++;
printf("n= %d ,x= %lf\n",n,x);
}while(fabs(y-x)>1e-5);
}
1.2.命令窗口结果截屏如下:
}
2.2.命令窗口结果截屏如下:
实验结果分析:
从运算截图中我们可以知道,一方面运用牛顿迭代法和牛顿下山迭代法的程序运算的结果是一致的,若出现小小的差异的话,可能是由于设置的变量类型不同导致,另一方面运用牛顿下山迭代法比运用一般牛顿迭代法计算的步骤要少一些,这证明对于同一个题,牛顿下山迭代法的优越性比一般的牛顿迭代要高。
实验内容:
用列主元法解线性方程组
=
实验过程:
1.利用C语言编程求解,程序如下:
#include<stdio.h>
#include<math.h>
void main()
{double t,m1,m2,m3,x1,x2,x3,x4,a[4][5]={1.1348,3.8326,1.1651,3.4017,9.5342,0.5301,1.7875,2.5330,1.5435,6.3941,3.4129,4.9317,8.7643,1.3142,18.4231,1.2371,4.9998,10.6721,0.0147,16.9237};

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

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

实用数值计算方法上机实验报告学院:化学工程学院姓名:陶明专业:工业催化学号: 21113011681. 问题来源某公司饲养实验用的动物以供出售,已知这些动物的生长对饲料中3种营养成分(蛋白质,矿物质和维生素)特别敏感,每个动物每周至少需要蛋白质60g,矿物质3g,维生素8mg,该公司能买到5种不同的饲料,每种饲料1kg 所含各种营养成分和成本如表1所示,如果每个小动物每周食用饲料不超过52kg,求既满足动物生长需要,又能使总成本最低的饲料配方。

数学模型 设需要饲料A1,A2,A3,A4,A5分别为x1,x2,x3,x4,x5(单位kg )12345min 0.20.70.40.30.5S x x x x x =++++1234512345123451234512350.3x +2x +x +0.6x +1.8x 600.1x +0.05x +0.02x +0.2x +0.05x 3.0.05x +0.1x +0.02x +0.2x +0.08x 8x +x +x +x +x 52,,,4,0s t x x x x x ≥⎧⎪≥⎪⎪≥⎨⎪≤⎪⎪≥⎩在LINGO 的MODEL 窗口内输入如下模型:Min =0.2*x1+0.7*x2+0.4*x3+0.3*x4+0.5*x5; 0.3*x1+2*x2+x3+0.6*x4+1.8*x5>60;0.1*x1+0.05*x2+0.02*x3+0.2*x4+0.05*x5>3; 0.05*x1+0.1*x2+0.02*x3+0.2*x4+0.08*x5>8; x1+x2+x3+x4+x5<52; end求解输出结果如下:Global optimal solution found.Objective value: 22.40000Infeasibilities: 0.000000Total solver iterations: 3Variable Value Reduced Cost X1 0.000000 0.7000000 X2 12.00000 0.000000 X3 0.000000 0.6166667 X4 30.00000 0.000000 X5 10.00000 0.000000 Row Slack or Surplus Dual Price1 22.40000 -1.0000002 0.000000 -0.58333333 4.100000 0.0000004 0.000000 -4.1666675 0.000000 0.8833333结果分析:因此每周每个动物的配料为饲料A2,A4,A5分别为12kg,30kg,10kg,可使得成本达到最低,最低成本为22.4元。

数值计算方法实验报告(含所有)

数值计算方法实验报告(含所有)

本科实验报告课程名称:计算机数值方法实验项目:计算机数值方法实验实验地点:虎峪校区致远楼B401专业班级:软件学院1217班学号:******xxxx 学生姓名:xxx指导教师:xxx2014 年 5 月21 日太原理工大学学生实验报告五、实验结果与分析二分法割线法分析:由程序知,使用二分法和割线法均能计算出方程的根,但利用割线法要比二分法计算的次数少,并且能够较早的达到精度要求。

相比之下,割线法程序代码量较少,精简明了。

六、讨论、心得本次数值计算方法程序设计实验从习题练习中跳脱出来,直接面对实用性较强的程序代码编写。

效果很好,不仅加深对二分法、割线法的理解,还加强了实际用运能力。

将理论知识成功地转化成实践结果。

实验地点虎峪校区致远楼B401指导教师xx太原理工大学学生实验报告l[i][k]=a[i][k];for(r=1;r<k;++r){l[i][k]-=l[i][r]*u[r][k];}l[i][k]/= u[k][k];}l[k][k]=1.0;}for(i=1;i<=n;++i){y[i] = b[i];for(j=1;j<i;++j){y[i]-=l[i][j]*y[j];}}for(i=n;i>0;--i){x[i] = y[i];for(j=i+1;j<=n;++j){x[i]-=u[i][j]*x[j];}x[i]/= u[i][i];}for(i=1;i<=n;++i){printf("%0.2lf\n",x[i]);}return 0;}五、实验结果与分析完全主元素消元法:列主元素消元法:LU分解法:分析:对于两种高斯解方程,完全主元素跟列主元素都是先消元、再回代,由程序段可以发现,始终消去对角线下方的元素。

即,为了节约内存及时效,可以不必计算出主元素下方数据。

列主元素消元法的算法设计上优于完全主元素消元法,它只需依次按列选主元素然后换行使之变到主元素位置,再进行消元即可。

大学计算实验实验报告

大学计算实验实验报告

实验名称:数值计算方法实验日期:2021年10月15日实验地点:计算机实验室实验目的:1. 理解数值计算的基本原理和方法。

2. 掌握常用数值计算算法的编程实现。

3. 培养分析和解决实际问题的能力。

实验内容:本次实验主要涉及以下内容:1. 线性方程组的求解2. 函数求值与数值微分3. 函数求根4. 数据插值实验原理:数值计算是计算机科学和工程领域中非常重要的一个分支,它涉及到将数学问题转化为计算机可以处理的数值问题。

本实验主要探讨了以下数值计算方法:1. 高斯消元法:用于求解线性方程组。

2. 牛顿法:用于求解函数的根。

3. 二分法:用于求解函数的根。

4. 拉格朗日插值法:用于数据插值。

实验步骤:1. 线性方程组的求解:- 编写程序实现高斯消元法,用于求解线性方程组。

- 输入方程组的系数和常数项。

- 输出方程组的解。

2. 函数求值与数值微分:- 编写程序实现中点法和辛普森法,用于求函数的近似值。

- 编写程序实现中心差分法,用于求函数的导数近似值。

- 输入函数表达式、求值点和微分点。

- 输出函数的近似值和导数的近似值。

3. 函数求根:- 编写程序实现牛顿法和二分法,用于求解函数的根。

- 输入函数表达式、初始猜测值和误差容忍度。

- 输出函数的根。

4. 数据插值:- 编写程序实现拉格朗日插值法,用于数据插值。

- 输入数据点和待插值点。

- 输出插值结果。

实验结果:1. 线性方程组的求解:- 输入方程组系数和常数项:`2x + 3y = 6`,`x - y = 1`。

- 输出解:`x = 2`,`y = 1`。

2. 函数求值与数值微分:- 输入函数表达式:`f(x) = x^2`,求值点:`x = 2`。

- 输出函数的近似值:`f(2) ≈ 4.000000`。

- 输入微分点:`x = 2`。

- 输出导数的近似值:`f'(2) ≈ 4.000000`。

3. 函数求根:- 输入函数表达式:`f(x) = x^2 - 2`,初始猜测值:`x = 1`,误差容忍度:`10^-6`。

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

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

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

1.1理论依据:设函数在有限区间[a,b]上二阶导数存在,且满足条件1. f(x)f(b) 02. f(x)在区间[a, b]上不变号3f(x) = 0;4」f (c)〔f .(x) |,其中c是a,b中使mir(| f .(a), f .(b) |)达到的一个b -a则对任意初始近似值x0• [a,b],由Newton迭代过程込f(x k )X“ M(Xk) = Xk — T^,k = 0,1,2,3…f'(X k)所生的迭代序列 % [平方收敛于方程f(x)=0在区间[a,b]上的惟一解: 令7 4f(x)=x -28x 14, f (0.1) 0, f(1.9) ::0f (x) =7x6-112x3=7x3(x3-16) ::: 0f (x) =42x5-336x2=42x2(x3-8) :: 0f (1.9) f (1.9) 0故以1.9为起点x0 =1.9如此一次一次的迭代,逼近X的真实根。

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

本程序用Newton法求代数方程(最高次数不大于10)在(a,b )区间的根//限制循环次数1.2 C 语言程序原代码:#i nclude<stdio.h> #in clude<math.h> mai n() {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); x 仁 x2-f/f1;}while(fabs(x1-x2)>=0.00001||x1<0.1); printf("计算结果:x=%f\n",x1);}1.3运行结果:* D:\VC + +\EXERCIS E\Debu g\l1.4 MATLAB上机程序fun cti on y=Newt on( 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))v=epsd=1; breakendendif d==1y=x1;elseif d==0y='迭代M次失败';elsey=奇异’endfun cti on y=df(x)y=7*x A6-28*4*x A3;Endfunction y=f(x) y=x A7-28*x A4+14;End>> x0=1.9;>> eps=0.00001;>> M=100;>> x=Newto n('f,'df,x0,eps,M);>> vpa(x,7)1.5问题讨论:1•使用此方法求方解,用误差来控制循环迭代次数,可以在误差允许的范围内得到比较理想的计算结果。

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

数值计算方法上机实验报告
一、实验目的
本次实验的主要目的是熟悉和掌握数值计算方法,学习梯度下降法的
原理和实际应用,熟悉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库的使用方法。

相关文档
最新文档