文档视界 最新最全的文档下载
当前位置:文档视界 › 计算方法实验

计算方法实验

计算方法实验
计算方法实验

《计算方法》实验报告

.

分段线性差值:子程序:

.

计算方法实验

实验一: 姓名: 学号: 班级:2013级计算机6班实验地点:第二机房 实验时间:2015/3/17

1 实验目的和要求 1. 二分法求方程的根 2. 基本迭代法求方程的根 3. 用埃特金求方程010423=-+x x 在1.5处的一个根,精度要求410-。 4. 牛顿下山法求方程的根 求方程013=--x x 的根,初值取6.00=x ,精度满足510-。 5. 牛顿迭代法求解7,精度满足510- 2 实验环境和工具 机房 VC6 3 实验结果 3.1 算法流程图 3.2 程序核心代码 二分法代码 #include #include

void main() { double x,a=1.0,b=1.5; for(int i=1;i<10;i++) { x=(a+b)/2; if((a*a*a-a-1)*(x*x*x-x-1)<0) b=x; else a=x; if(b-a<0.01) break; cout< #include void main() { double x0=0.5,x,e=2.718281;

for(int i=1;i<20;i++) { x=pow(e,-x0); if(x-x0<0.00001) break; cout< #include #include using namespace std; ////////// double fun(double x); void AitkenIterative(double(*pf)(double x)); ////////// ////////// int main() { AitkenIterative(fun);

计算方法实验+编程代码

计算方法实验报告 1 在区间[-1,1]上分别取n=10,20,用两组等距节点对龙格函数21()125f x x =+作多项式插值,对每个n 值,分别画出插值函数及()f x 的图形。 解:n=10时: n=20时:

2 在区间[-1,1]上分别取n=10,20,用两组等距节点对龙格函数21()125f x x = +作分段线性插值,对每个n 值,分别画出插值函数及()f x 的图形。 解:n=10: n=20时:

3 对龙格函数21()125f x x = +在区间[-1,1]上取21, 0,1,2k x k k n n =-+= ,n 分别取10,20,试分别求3次、5次最小二乘拟合多项式,打印出此曲线拟合函数,分别画出此拟合函数及()f x 的图形。 3次最小二乘拟合 n=10时: n=20时:

5次最小二乘拟合n=10时: n=20时:

4 取点 21 cos,0,1,2 2(1) k k x k n n π + == + ,n分别取10,20,对龙格函数 2 1 () 125 f x x = + 作多项式插值,对每个n值,分别画出插值函数及() f x的图形。解:n=10时: n=20时:

5 比较上面三组近似函数,说说你的体会。你能在此基础上做进一步的探索吗,比如n如果继续增加下去,结果会如何? 附注:编程语言不限,但用matlab等语言编程时,不得直接调用现成的插值与逼近函数,需要你在我们课堂教学的基础上,编程实现上述算法。 解:用不同方法进行插值,得出的插值函数差异较大。其中,最小二乘拟合的曲线精度较低,多项式插值拟合的曲线精度较高。曲线拟合的精度不仅和拟合方法有关,还和采样点位置的选取、个数有关。如1,4题都是多项式插值,但是第4题的拟合度最高。n值越大,拟合的函数会更加接近原函数。 程序: 1.等距节点多项式插值 clear; clc; syms x n=input('input n='); x1=linspace(-1,1,n+1); y1=1./(1.+25*x1.^2); yy=zeros(1,n+1); fx=0; for i=1:n+1; lga=1; for j=1:n+1 if j~=i lga=lga*(x-x1(1,j))/(x1(1,i)-x1(1,j)); else end end fx=fx+y1(1,i)*lga; end disp(fx); x=-1:0.01:1; plot(x,eval(fx),'rh') hold on a=linspace(-1,1,100); y2=1./(1.+25*a.^2); plot(a,y2,'b')

计算方法实验

算方法实验指导 姓名学号院系专业哈尔滨工业大学

计算方法实验指导 根据实际问题建立的数学模型,一般不能求出所谓的解析解,必须针对数学模型 的特点确定适当的计算方法,编制出计算机能够执行的计算程序,输入计算机,进行 调试,完成运算,如果计算结果存在问题或不知是否正确,还需要重新确定新的计算 方法,再编制出计算程序,输入计算机,重新调试,完成运算,直至获得正确的计算 结果,这就是数值计算的全部过程。 学生在学习“计算方法”和“高级语言”等课程时普遍存在的问题是:只会套用 教科书中的标准程序进行数值计算,很少有人能够独立地将学过的数值算法编制成计 算机程序,至于灵活应用已经掌握的算法求解综合性较大的课题,则更是困难的事情。 编写《计算方法实验指导》的目的是:突出数值计算程序结构化的思想。提高学 生的编程能力,加深对“计算方法”课程内容的理解和掌握,为”计算方法“课程的 教学服务,进一步奠定从事数值计算工作的基础。具体地 1. 根据“计算方法”课程内容的特点,给出五个典型算法的分析流程,学生可以 利用所掌握的 “高级语言”顺利地编制出计算机程序,上机实习,完成实验环节的教 学要求。 2. 所有的计算实习题目都经过任课教师逐一检验,准确无误。 3. 充分利用循环的思想、 迭代的思想, 给出算法结构描述和程序语言的对应关系, 有利于学生编 制相应的程序。 4. 结合实习题目,提出实验要求,要求学生按规范格式写出相应的实验报告,实 验报告成绩记入 期末总成绩。需要提醒学生:不能简单地套用现成的标准程序完成实 验题目,应当把重点放在对算法的理解、程序的优化设计、上机调试和计算结果分析 上,否则就失去实验课的目的啦。 5. 五个具体的实验题目是: 实验题目 实验题目 实验题目 实验题目 实验题目 要求必须完 成其中三个(如果全部完成更好) 。 1 拉格朗日 (Lagrange) 插值 2 龙贝格 (Romberg) 积分法 3 四阶龙格—库塔 (Runge — Kutta) 方法 4 牛顿 (Newton) 迭代法 5 高斯 (Gauss) 列主元消去法

计算方法实验题

1. (1)在某化学反应里,根据实验所得生成物的浓度与时间关系如下表,利用最小二乘法拟 合浓度Y 与时间t 的关系,(5分) t 1 2 3 4 5 6 7 8 Y 4.00 6.40 8.00 8.80 9.22 9.50 9.70 9.86 t 9 10 11 12 13 14 15 16 Y 10.00 10.20 10.32 10.42 10.50 10.55 10.58 10.60 2.(1)课本第275页实验八:用Euler 方法和四阶经典Runge-Kutta 方法编写求解常微分方 程的初值问题的实验程序,并结合具体的常微分方程求出其满足给定初值的数值解。(6分) (2)结合自己所学的常微分方程初值问题的数值解,给出Lorenz 系统和Chen 系统的相平面图形。(4分) 1.(1)在某化学反应里,根据实验所得生成物的浓度与时间关系如下表,利用最小二乘法拟合浓度Y 与时间t 的关系,(5分) t 1 2 3 4 5 6 7 8 Y 4.00 6.40 8.00 8.80 9.22 9.50 9.70 9.86 t 9 10 11 12 13 14 15 16 Y 10.00 10.20 10.32 10.42 10.50 10.55 10.58 10.60 观察表中数据,总结出y 与t 的的关系,有如下的特征: 1.y 是t 的增函数; 2.当t -> 0+时,y = 0; 3.t -> ∞时,y 趋于一个定值。 根据这些条件,设想y = F( t )是双曲线型的函数: t b a y +=1 为了确定a,b ,令 t x y y 1 ,10== 于是可以用x 的线性函数bx a x S +=)(来拟合:拟合数据),(0i i y x 可以由原始数据),(i i y t (i = 1,2...16)计算得出。 这里x x x ==)(,1)(10?? 可求得1,0,),,(),,(0=k j y j j k ???代入法方程得: 实验题:(共15分)

《数值计算方法》试题集及答案

《数值计算方法》复习试题 一、填空题: 1、????? ?????----=410141014A ,则A 的LU 分解为 A ??? ?????????=? ?????????? ?。 答案: ?? ????????--??????????--=1556141501 4115401411A 3、1)3(,2)2(,1)1(==-=f f f ,则过这三点的二次插值多项式中2 x 的系数 为 ,拉格朗日插值多项式为 。 答案:-1, )2)(1(21 )3)(1(2)3)(2(21)(2--------= x x x x x x x L 4、近似值*0.231x =关于真值229.0=x 有( 2 )位有效数字; 5、设)(x f 可微,求方程)(x f x =的牛顿迭代格式是( ); 答案 )(1)(1n n n n n x f x f x x x '--- =+ 6、对1)(3 ++=x x x f ,差商=]3,2,1,0[f ( 1 ),=]4,3,2,1,0[f ( 0 ); 7、计算方法主要研究( 截断 )误差和( 舍入 )误差; 8、用二分法求非线性方程 f (x )=0在区间(a ,b )内的根时,二分n 次后的误差限为 ( 1 2+-n a b ); 10、已知f (1)=2,f (2)=3,f(4)=5.9,则二次Ne wton 插值多项式中x 2系数为 ( 0.15 ); 11、 解线性方程组A x =b 的高斯顺序消元法满足的充要条件为(A 的各阶顺序主子式均 不为零)。 12、 为了使计算 32)1(6 )1(41310-- -+-+ =x x x y 的乘除法次数尽量地少,应将该

计算方法上机实验报告——拉格朗日插值问题

计算方法上机实验报告——拉格朗日插值问题 一、方法原理 n次拉格朗日插值多项式为:Ln(x)=y0l0(x)+y1l1(x)+y2l2(x)+…+ynln(x) n=1时,称为线性插值,L1(x)=y0(x-x1)/(x0-x1)+y1(x-x0)/(x1-x0)=y0+(y1-x0)(x-x0)/(x1-x0) n=2时,称为二次插值或抛物线插值,精度相对高些 L2(x)=y0(x-x1)(x-x2)/(x0-x1)/(x0-x2)+y1(x-x0)(x-x2)/(x1-x0)/(x1-x 2)+y2(x-x0)(x-x1)/(x2-x0)/(x2-x1) 二、主要思路 使用线性方程组求系数构造插值公式相对复杂,可改用构造方法来插值。 对节点xi(i=0,1,…,n)中任一点xk(0<=k<=n)作一n次多项式lk(xk),使它在该点上取值为1,而在其余点xi(i=0,1,…,k-1,k+1,…,n)上为0,则插值多项式为Ln(x)=y0l0(x)+y1l1(x)+y2l2(x)+…+ynln(x) 上式表明:n个点xi(i=0,1,…,k-1,k+1,…,n)都是lk(x)的零点。可求得lk 三.计算方法及过程:1.输入节点的个数n 2.输入各个节点的横纵坐标 3.输入插值点 4.调用函数,返回z 函数语句与形参说明 程序源代码如下: 形参与函数类型 参数意义 intn 节点的个数 doublex[n](double*x) 存放n个节点的值 doubley[n](double*y) 存放n个节点相对应的函数值 doublep 指定插值点的值 doublefun() 函数返回一个双精度实型函数值,即插值点p处的近似函数值 #include #include usingnamespacestd; #defineN100 doublefun(double*x,double*y,intn,doublep); voidmain() {inti,n; cout<<"输入节点的个数n:"; cin>>n;

计算方法实验截图

function t=agui_trapz(fname,a,b,n) h=(b-a)/n; fa=feval(fname,a); fb=feval(fname,b); f=feval(fname,a+h:h:b-h+0.001*h); t=h*(0.5*(fa+fb)+sum(f)); format long t=agui_trapz(inline('x.*exp(x)'),1,2,8)

function s=agui_simpson(fname,a,b,n) h=(b-a)/n; fa=feval(fname,a); fb=feval(fname,b); s=fa-fb; x=a; for i=1:n x=x+h/2;s=s+4*feval(fname,x); x=x+h/2;s=s+2*feval(fname,x); end s=s*h/6; s=agui_simpson(inline('x.*exp(x)'),1,2,4)

function r=agui_rbg(fname,a,b) e=0.5e-7; i=1;j=1;h=b-a; T(i,1)=h/2*(feval(fname,a)+feval(fname,b)); T(i+1,1)=T(i,1)/2+sum(feval(fname,a+h/2:h:b-h/2+0.001*h))*h/2; T(i+1,j+1)=4^j*T(i+1,j)/(4^j-1)-T(i,j)/(4^j-1); while abs(T(i+1,i+1)-T(i,i))>e i=i+1;h=h/2; T(i+1,1)=T(i,1)/2+sum(feval(fname,a+h/2:h:b-h/2+0.001*h))*h/2; for j=1:i; T(i+1,j+1)=4^j*T(i+1,j)/(4^j-1)-T(i,j)/(4^j-1); end end T r=T(i+1,j+1); agui_rbg(inline('x.*exp(x)'),1,2)

《数值计算方法》试题集及答案(1-6) 2

《计算方法》期中复习试题 一、填空题: 1、已知3.1)3(,2.1)2(,0.1)1(===f f f ,则用辛普生(辛卜生)公式计算求得 ?≈3 1 _________ )(dx x f ,用三点式求得≈')1(f 。 答案:2.367,0.25 2、1)3(,2)2(,1)1(==-=f f f ,则过这三点的二次插值多项式中2 x 的系数为 , 拉格朗日插值多项式为 。 答案:-1, )2)(1(21 )3)(1(2)3)(2(21)(2--------= x x x x x x x L 3、近似值*0.231x =关于真值229.0=x 有( 2 )位有效数字; 4、设)(x f 可微,求方程)(x f x =的牛顿迭代格式是( ); 答案 )(1)(1n n n n n x f x f x x x '--- =+ 5、对1)(3 ++=x x x f ,差商=]3,2,1,0[f ( 1 ),=]4,3,2,1,0[f ( 0 ); 6、计算方法主要研究( 截断 )误差和( 舍入 )误差; 7、用二分法求非线性方程 f (x )=0在区间(a ,b )内的根时,二分n 次后的误差限为 ( 1 2+-n a b ); 8、已知f (1)=2,f (2)=3,f (4)=5.9,则二次Newton 插值多项式中x 2系数为( 0.15 ); 11、 两点式高斯型求积公式?1 d )(x x f ≈( ?++-≈1 )] 321 3()3213([21d )(f f x x f ),代数精 度为( 5 ); 12、 为了使计算 32)1(6 )1(41310-- -+-+ =x x x y 的乘除法次数尽量地少,应将该表 达式改写为 11 ,))64(3(10-= -++=x t t t t y ,为了减少舍入误差,应将表达式 19992001-改写为 199920012 + 。

计算方法实验报告 插值

实验名称:插值计算 1引言 在生产和科研中出现的函数是多种多样的。常常会遇到这样的情况:在某个实际问题中,虽然可以断定所考虑的函数f(x)在区间[a,b]上存在且连续,但却难以找到它的解析表达式,只能通过实验和观测得到在有限个点上的函数值。用这张函数表来直接求出其他点的函数值是非常困难的,在有些情况下,虽然可以写出f(x)的解析表达式,但由于结构十分复杂,使用起来很不方便。面对这些情况,构造函数P(x)作为f(x)的近似,插值法是解决此类问题比较古老却目前常用的方法,不仅直接广泛地应用与生产实际和科学研究中,而且是进一步学习数值计算方法的基础。 设函数y=f(x)在区间[a,b]上连续,且在n+1个不同的点a≤x0,x1……,xn≤b上分别取值y0,y1……,yn. 插值的目的就是要在一个性质优良、便于计算的函数φ中,求一简单函数P(x),使P(xi)=yi(i=0,1…,n)而在其他点x≠xi上,作为f(x)的近似。 通常,称区间[a,b]为插值区间,称点x0,x1,…,xn为插值节点,上式为插值条件,称函数类φ为插值函数类,称P(x)为函数f(x)在节点x0,x1,…,xn处的插值函数,求插值函数P(x)的方法称为插值法。 2实验目的和要求 用matlab定义分段线性插值函数、分段二次插值函数、拉格朗日插值函数,输入所给函 数表,并利用计算机选择在插值计算中所需的节点,计算f(0.15),f(0.31),f(0.47)的近似值。

3算法描述 1.分段线性插值流程图

2.分段二次插值流程图

3.拉格朗日插值流程图

4程序代码及注释 1.分段线性插值

计算方法实验报告

中北大学信息商务学院计算方法实验报告 学生姓名:刘昊文学号: 30 学院:中北大学信息商务学院 专业:电气工程及其自动化 指导教师:薛晓健 2017 年 04 月 19 日

实验一:非线性方程的近似解法 1.实验目的 1.掌握二分法和牛顿迭代法的原理 2.根据实验内容编写二分法和牛顿迭代法的算法实现 注:(可以用C语言或者matlab语言) 2.实验设备 matlab 3.实验内容及步骤 解方程f(x)=x5-3x3-2x2+2=0 4.实验结果及分析 二分法: 数据: f =x^5-3*x^3-2*x^2+2 [ n xa xb xc fc ]

1 -3 3 0 2 0

牛顿迭代法 > syms x; f=(x^5-3*x^3-2*x^2+2) [x,k]=Newtondd(f,0,1e-12) f = x^5 - 3*x^3 - 2*x^2 + 2 x = NaN k =2 实验二:解线性方程组的迭代法 1.实验目的 1.掌握雅克比迭代法和高斯-塞德尔迭代法的原理 2.根据实验内容编写雅克比迭代法和高斯-塞德尔迭代法的算法实现 注:(可以用C语言或者matlab语言) 2.实验设备 Matlab

3.实验内容及步骤 1、分别用雅克比迭代法和高斯-塞德尔迭代法解方程Ax=b 其中A=[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] 4.实验结果及分析 (雅克比迭代法) a=[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] x=agui_jacobi(a,b) a = 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

东南大学计算方法实验报告

计算方法与实习实验报告 学院:电气工程学院 指导老师:李翠平 班级:160093 姓名:黄芃菲 学号:16009330

实习题一 实验1 拉格朗日插值法 一、方法原理 n次拉格朗日插值多项式为:L n(x)=y0l0(x)+y1l1(x)+y2l2(x)+…+y n l n(x) n=1时,称为线性插值,L1(x)=y0(x-x1)/(x0-x1)+ y1(x-x0)/(x1-x0)=y0+(y1-x0)(x-x0)/(x1-x0) n=2时,称为二次插值或抛物线插值,精度相对高些 L2(x)=y0(x-x1)(x-x2)/(x0-x1)/(x0-x2)+y1(x-x0)(x-x2)/(x1-x0)/(x1-x2)+y2(x-x0)(x-x1)/(x2-x0)/(x2-x1) 二、主要思路 使用线性方程组求系数构造插值公式相对复杂,可改用构造方法来插值。 对节点x i(i=0,1,…,n)中任一点x k(0<=k<=n)作一n 次多项式l k(x k),使它在该点上取值为1,而在其余点x i(i=0,1,…,k-1,k+1,…,n)上为0,则插值多项式为L n(x)=y0l0(x)+y1l1(x)+y2l2(x)+…+y n l n(x) 上式表明:n 个点x i(i=0,1,…,k-1,k+1,…,n)都是l k(x)的零点。可求得l k 三.计算方法及过程:1.输入节点的个数n 2.输入各个节点的横纵坐标 3.输入插值点 4.调用函数,返回z 函数语句与形参说明 程序源代码如下: 形参与函数类型参数意义 int n 节点的个数 double x[n](double *x)存放n个节点的值 double y[n](double *y)存放n个节点相对应的函数值 double p 指定插值点的值 double fun() 函数返回一个双精度实型函数值,即插值点p 处的近似函数值 #include #include using namespace std; #define N 100 double fun(double *x,double *y, int n,double p); void main() {int i,n; cout<<"输入节点的个数n:"; cin>>n; double x[N], y[N],p; cout<<"please input xiangliang x= "<>x[i]; cout<<"please input xiangliang y= "<>y[i]; cout<<"please input LagelangrichazhiJieDian p= "<>p;

计算方法实验报告4

计算方法实验报告(四) (一)线性方程的迭代解法 一、实验问题 利用简单迭代法,两种加速技术,牛顿法,改进牛顿法,弦割法求解习题5-1,5-2,5-3中的一题,并尽可能准确。 选取5-3:求在x=1.5附近的根。 二、问题的分析(描述算法的步骤等) (1)简单迭代法算法: 给定初始近似值,求的解。 Step 1 令i=0; Step 2 令(计算); Step 3 如果,则迭代终止,否则重复Step 2。 (2)Aitken加速法算法 Step 1 令k=0,利用简单迭代算法得到迭代序列; Step 2 令-(计算得到一个新的序列,其中k=0,1,2…);Step 3 如果,则迭代终止,否则重复Step 2。 (3)插值加速法算法 Step 1 令k=0,利用简单迭代算法得到迭代序列; Step 2 令+(计算得到一个新的序列,其中k=1,2,3…); Step 3 如果,则迭代终止,否则重复Step 2。 (4)牛顿法算法

Step 1给定初始近似值; Step 2令,其中k计算得到的序列; Step 3如果,则迭代终止,否则重复Step 2。 (5)改进牛顿法的算法 Step 1给定初始近似值; Step 2令,其中k迭代计算得到的序列; Step 3如果,则迭代终止,否则重复Step 2。 (6)弦割法算法(双点弦割法) Step 1给定初始近似值,; Step 2令其中k计算得到的序列; Step 3如果,则迭代终止,否则重复Step 2。 三、程序设计 (1)简单迭代法 利用迭代公式进行迭代运算。 #include #include #include double fun(double x) { double c=1+x*x; returnpow(c,1/3.0); } void main() { double x=1.5; double y=0; double D=1;

计算方法实验指导书.

计算方法 实 验 指 导 书 彭彬 计算机技术实验中心 2012年3月

· 实验环境: VC++ 6.0 · 实验要求:在机房做实验只是对准备好的实验方案进行验证,因此上机前要检查实验准备情况,通过 检查后方可上机。没有认真准备的学生不能上机,本次实验没有分数。实验中要注意考察和体会数值计算中出现的一些问题和现象:误差的估计,算法的稳定性、收敛性、收敛速度以及迭代初值对收敛的影响等。 · 关于计算精度:如果没有特别说明,在计算的过程中,小数点后保留5位数字,最后四舍五入到小数 点后四位数字。迭代运算的结束条件统一为 51 102 -?。在VC++ 6.0中,可使用setprecision 在流的输出中控制浮点数的显示(缺省显示6位)。演示如下: # include # include # include //输出6位精度,输出左对齐 cout<

计算方法实验(c语言_六项试验)

计算方法实验报告 实验一 舍入误差与数值稳定性 目的与要求: 1、 通过上机编程,复习巩固以前所学程序设计语言; 2、 通过上机计算,了解舍入误差所引起的数值不稳定性。 3、 通过上机计算,了解运算次序对计算结果的影响,从而尽量避免大数吃小数的现象。 实验内容: ● 通过正反两个实例的计算,了解利用计算机进行数值计算中舍入误差 所引起的数值不稳定性,深入理解初始小的舍入误差可能造成误差积累从而对计算结果的巨大影响。 ● 通过实际编程,了解运算次序对计算结果的影响,了解实数运算符合 的结合律和分配律在计算机里不一定成立。 ● 1 对 n = 0,1,2,…,20 计算定积分 y n = dx 5x 1 n x ?+ 算法 1 利用递推公式 y n = n 1 - 5y 1n - n = 1,2,…,20 取 =+=? dx 5 x 1 1 y ln6- ln5 ≈ 0.182 322 算法 2 利用递推公式 5 15n 1y 1n -= -y n n = 20,19,…,1 注意到 1051dx 51dx 5x dx 6112611 20 1 020 1 020x x x =≤+≤=??? 取

730 008.0)126 11051(201y 20 ≈+≈ 算法一: #include #include #include #include"stdlib.h" void main(void) { float y_0=log(6.0)-log(5.0),y_1; int n=1; system("cls");/*清屏*/ printf("y[0]=%-20f",y_0); while(1) { y_1=1.0/n-5*y_0; printf("y[%d]=%-20f",n,y_1);/*输出*/ if(n>=20)break; y_0=y_1; n++; if(n%3==0)printf("\n"); } getch();/*保持用户屏幕*/ } 算法二: #include #include #include #include"stdlib.h"

《计算方法》期末考试试题.doc

《计算方法》期末考试试题 一 选 择(每题3分,合计42分) 1. x* = 1.732050808,取x =1.7320,则x 具有 位有效数字。 A 、3 B 、4 C 、5 D 、6 2. 取7 3.13≈(三位有效数字),则 ≤-73.13 。 A 、30.510-? B 、20.510-? C 、10.510-? D 、0.5 3. 下面_ _不是数值计算应注意的问题。 A 、注意简化计算步骤,减少运算次数 B 、要避免相近两数相减 C 、要防止大数吃掉小数 D 、要尽量消灭误差 4. 对任意初始向量)0(x 及常向量g ,迭代过程g x B x k k +=+)() 1(收敛的充分必要条件是_ _。 A 、11< B B 、1<∞ B C 、1)(

大学物理实验计算题

大学物理实验计算题 -CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

1.用50分度游标卡尺测量铜环的内径K=6次,测量数据如下,d i =(19.98),(19.96),(19.98),(20.00),(19.94),(19.96),单位毫米,计算测量结果,并用不确定度表示测量结果。 () % 2.097.19/0 3.003.097.1903.002.002.002.0102.0197.192 22 6 1 ==±==+===?== =--= =∑=E mm d mm U U U mm U mm n t U mm n d d mm d B A d B d A i i d σσ解: 2.用流体静力称衡法测固体密度的公式为:ρ=[m/(m-m1)] ρ0,若测得m=(29.05±0.09)g ,m 1=(19.07±0.03)g, ρ0=(0.9998±0.0002)g/cm 3,求:ρ±U ρ 3 3 13 2 0212122 1122211202 02 12 122 /02.091.2/91.2/02.0)()) (())(( cm g cm g m m m cm g U m m m U m m m U m m m U U U U p m m m m m m ±==?? ? ???-==-+--+--=??? ? ????+? ??? ????+???? ????=ρρρρρρ ρρρ解: 3.用有效数字运算规则计算下列各式: ⑴.1.02000.10.5000.400.2?+?+? ⑵.201080.63-? ⑶. ()00 .2989.52.2480.2?- 解:(1)601.02000.10.5000.400.2=?+?+? (2)331078.6201080.6?=-? (3)()9.600 .2989.52.2480.2=?-

计算方法实验报告习题1(浙大版)

计算方法实验报告 实验名称: 实验1 从函数表出发进行插值 1 引言 某个实际问题中,函数f (x)在区间[a,b]上存在且连续,但难以找到其表达式,只能通过实验和观测得到有限点上的函数表。有些情况虽然可以写出表达式,但结构复杂,使用不方便。所以希望构造简单函数P (x)作为f (x)的近似值。插值法是解决此类问题的一种方法。 设函数y=在插值区间[a,b]上连续,且在n+1个不同的插值节点a≤x 0,x 1,…,x n ≤b 上分别取值y 0,y 1,…,y n 。目的是要在一个性质优良、便于计算的插值函数类Φ中,求一简单函数P (x),满足插值条件P (x i )=y i (i=0,1,…,n),而在其他点x≠x i 上,作为f (x)近似值。求插值函数P (x)的方法称为插值法[1]。 2 实验目的和要求 运用Matlab 编写m 文件,定义三种插值函数,要求一次性输入整张函数表,并利用计算机选择在插值计算中所需的节点。分别通过分段线性插值、分段二次插值和全区间上拉格朗日插值计算f (0.15),f (0.31),f (0.47)的近似值。 3 算法原理与流程图 (1)原理 1.线性插值 当给定了n+1个点x 0

计算方法实验11

实验十一 一、编程并在计算机上调试修改运行 1. P142例1、P145例2、P154例3 2. P155 2、P156 7、9 二、阅读理解下列程序,并在计算机上运行. 1. %利用e x的展开式计算函数e x的值 (1) qexp.m function [E,k,F]=qexp(x,w,n) E=0;F=1; for k=1:n E=E+F; F=x*F/k; if abs(E-exp(x))0 E=E+F; F=x*F/k; k=k+1; end

2.% 利用sin(x)的展开式计算其函数值(1) qsin.m function [s,k,T]=qsin(x) s=0;T=x;k=1; while abs(T)>0 s=s+T; T=-x*x*T/(2*k*(2*k+1)); k=k+1; end (2) qsn.m function [s,k,T]=qsn(x,w,n) s=0;T=x; for k=1:n s=s+T; T=-x*x*T/(2*k*(2*k+1)); if abs(s-sin(x))

3. play.m while 1 x=fix(100*rand); n=7;test=1; for k=1:7 numb=int2str(n); disp(['You have a right to ',numb,' guesses']) disp(['A guess is a number between 0 and 100']) guess=input('Enter your guess:'); if guessx disp('High') else disp('You won') test=0; break; end n=n-1; end if test==1 disp('You lost') end m=input('继续?''Y''or''N''','s'); if m=='Y' continue else break end end一、 1. P142例1

计算方法实验

《数值计算方法》 实验 专业: 姓名: 姓名:

实验一 1. 题目 (课本46页习题二第1题) 用列主元素法解下列方程,结果保留4位小数。 ??? ??=+-=-+=-+2 186354446232 1321321x x x x x x x x x 2. 模型建立(理论分析) 用方程组的增广矩阵 []???? ???? ??=n nn n n n n b a a a b a a a b a a a b A 21 222221 111211, 表示,并在增广矩阵上进行计算。 首先在矩阵的第一列中选取绝对值最大的元,通过行互换,将最大的元所在行换在第一行的位置,得到增广矩阵()()[] 11,b A ,然后进行消元,得到矩阵 ()()[] ()()() ()()()()()() ?? ??? ?????? ?=222222222211111121112 2 ,n nn n n n b a a b a a b a a a b A 然后在每次从消元之前,都通过行变换将绝对值最大的元所在的行换到相应行,再进行消元。如此经过n-1步,增广矩阵被化成上三角矩阵,最后回代过程求解。这种算法就是列主元素法求解方程组。 3. 算法 (1)输入A=[2,6,-4;1,4,-5;6,-1,18];b=[4;3;2];计算rank(A);rank(B)。 (2)判断所需求的方程组解的情况,选择相应计算方法,本题是存在唯一解。 (3)置储存空间X ,C 矩阵,比较所在列进行消元运算数值绝对值,取下标位置。

(4)取绝对值大的元所在行通过行变换换到首位,再进行消元,直到化为上三角矩阵,停机。 4. 程序 列主元素消去法程序 clear clc A=[2,6,-4;1,4,-5;6,-1,18]; b=[4;3;2]; B=[A b]; RA=rank(A); RB=rank(B); zhica=RB-RA; if zhica>0, disp('请注意:因为RA~=RB,所以此方程组无解') return end if RA==RB if RA==3 disp('请注意:因为RA=RB=3,所以此方程组有唯一解') X=zeros(3,1); C=zeros(1,4); for p=1:2 [Y,j]=max(abs(B(p:3,p))); C=B(p,:); B(p,:)=B(j+p-1,:); B(j+p-1,:)=C; for k=p+1:3 m=B(k,p)/B(p,p); B(k,p:4)=B(k,p:4)-m*B(p,p:4);

数值计算方法实验报告

差值法实验日志 实验题目:插值法 实验目的: 1.掌握拉格朗日插值、牛顿插值、分段低次插值和样条插值的方法。 2.对四种插值结果进行初步分析。 实验要求: (1)写出算法设计思想; (2)程序清单; (3)运行的结果; (4)所得图形; (5)四种插值的比较; (6)对运行情况所作的分析以及本次调试程序所取的经验。如果程序未通过,应分析其原因。 实验主要步骤: 1.已知函数) f满足: (x x0.0 0.1 0.195 0.3 0.401 0.5 f(0.39894 0.39695 0.39142 0.38138 0.36812 x ) 0.35206 (1)用分段线性插值; 打开MATLAB,按以下程序输入: x0=-5:5; y0=1./(1+x0.^2); x=-5:0.1:5; y=1./(1+x.^2); y1=lagr(x0,y0,x); y2=interp1(x0,y0,x); y3=spline(x0,y0,x);

for k=1:11 xx(k)=x(46+5*k); yy(k)=y(46+5*k); yy1(k)=y1(46+5*k); yy2(k)=y2(46+5*k); yy3(k)=y3(46+5*k); end [xx;yy;yy2;yy3]' z=0*x; plot(x,z,x,y,'k--',x,y2,'r') plot(x,z,x,y,'k--',x,y1,'r') pause plot(x,z,x,y,'k--',x,y3,'r') 回车得以下图形:

(2) 拉格朗日插值。 创建M 文件,建立lagr 函数: function y=lagr1(x0,y0,x) n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=p*y0(k)+s; end y(i)=s; end 新建一个M 文件,输入: x0=[0.0 0.1 0.195 0.3 0.401 0.5]; y0=[0.39894 0.39695 0.39142 0.38138 0.36812 0.35206]; x=0.0:0.01:0.5; y1=lagr1(x0,y0,x); 00.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

相关文档