计算方法实验

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

数值分析试验报告

课题九:曲线拟合的最小二乘法

现代农业工程学院:蒋海波

学号:2006214005

一、试验的目的和意义:

1、掌握曲线拟合的最小二乘法;

2、最小二乘法亦可用于解超定线代数方程组;

3、探索拟合函数的选择与拟合精度间的关系。

二、计算公式

设拟合多项式为:

P(x)=a0+a1x+a2x2+…+a m x m (m+1

为了确定系数a(j=0,1,…,m),把测试数据(x, y)(i=1,2,…n)代入上式,可得到一个含有n个方程m+1个未知数a (j=0,1,…,m)的矛盾方程组

Aα=Y (1.2)

它对应的法方程组为:

A T Aα=A T Y (1.3)

法方程组(1.3)的解是矛盾方程组(1.2)符合最小二乘原则的近似解,即为所要确定的拟合多项式的系数。

三、结构程序设计

x=[0,5,10,15,20,25,30,35,40,45,50,55]; %输入向量x, y;y=[0,0.000127,0.000216,0.000286,0.000344,0.000387,0.000415,0.0 00437,0.000451,0.000458,0.000402,0.000464];

z=3 %定义拟合函数的最高阶数;cc=polyfit (x, y, z) %确定拟合函数的系数;

xx=x(1):0.1:x(length(x));

yy=polyval (cc ,xx);

plot (xx, yy);hold on %绘出拟合曲线图;

plot (x, y, 'x') %绘出所给的点

四、运行结果

运行结果为:

z = 3

cc =

1.0e-004 *

Column 1

0.0000

Column 2

-0.0052

Column 3

0.2634

Column 4

0.0178

-4

0102030405060

z=3时的拟合曲线

-4

Z=4时的拟合曲线-4

Z=8时的拟合曲线

计算方法实验

实验一: 姓名: 学号: 班级: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)解线性方程组的Gauss 消去法和列主元Gauss 消去法(2人)/*张思珍,巩艳华*/ 用C 语言将不选主元和列主元Gauss 消去法编写成通用的子程序,然后用你编写的程序求解下列84阶的方程组 ???? ?????? ? ??=??????????? ????????????? ? ?1415151515768 168 168 168 1681684 8382321 x x x x x x 参考书目: 1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编 2.《数值线性代数》,徐树方、高立、张平文编 3.《数值分析简明教程》,王能超编 2)解线性方程组的平方根法(4人)/*朱春成、黄锐奇、张重威、章杰*/ 用C 语言将平方根法和改进的平方根法编写成通用的子程序,然后用你编写的程序求解对称正定方程组b Ax =,其中 (1)b 随机的选取,系数矩阵为100阶矩阵 ?????? ???? ? ? ?101 1101 1101 1101 1101110 ; (2)系数矩阵为40阶的Hilbert 矩阵,即系数矩阵A 的第i 行第j 列元素为 1 1-+= j i a ij ,向量b 的第i 个分量为∑=-+ = n j i j i b 1 1 1. 参考书目: 1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编 2.《数值线性代数》,徐树方、高立、张平文编

3.《数值分析简明教程》,王能超编 3)三对角线方程组的追赶法(3人)/*黄佳礼、唐伟、韦锡倍*/ 用C 语言将三对角线方程组的追赶法法编写成通用的子程序,然后用你编写的程序求解如下84阶三对角线方程组 ???? ?????? ? ??=??????????? ????????????? ? ?1415151515768 168 168 168 16816 84 8382321 x x x x x x 参考书目: 1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编 2.《数值分析简明教程》,王能超编 4)线性方程组的Jacobi 迭代法(3人)/*周桂宇、杨飞、李文军*/ 用C 语言将Jacobi 迭代法编写成独立的子程序,并用此求解下列方程组, 精确到小数点后5位 ???? ? ??=????? ??????? ? ?-149012 2111221 3 2 1 x x x 参考书目: 1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编 2.《数值线性代数》,徐树方、高立、张平文编 3.《数值分析简明教程》,王能超编 5)线性方程组的Gauss-Seidel 迭代法(3人)/*张玉超、范守平、周红春*/ 用C 语言将Gauss-Seidel 迭代法编写成独立的子程序,并用此求解下列方程组,精确到小数点后5位 ???? ? ??=????? ??????? ? ?--39721 1111112 3 2 1 x x x 参考书目: 1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编 2.《数值线性代数》,徐树方、高立、张平文编 3.《数值分析简明教程》,王能超编 6)解线性方程组的最速下降法法(2人)/*赵育辉、阿热孜古丽*/ 用C 语言将最速下降法编写成通用的子程序,然后用你编写的程序求解对称

计算方法实验+编程代码

计算方法实验报告 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')

曲线拟合的数值计算方法实验

曲线拟合的数值计算方法实验 【摘要】实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系;疾病疗效与疗程长短的关系;毒物剂量与致死率的关系等常呈曲线关系。曲线拟合(curve fitting)是指选择适当的曲线类型来拟合观测数据,并用拟合的曲线方程分析两变量间的关系。曲线直线化是曲线拟合的重要手段之一。对于某些非线性的资料可以通过简单的变量变换使之直线化,这样就可以按最小二乘法原理求出变换后变量的直线方程,在实际工作中常利用此直线方程绘制资料的标准工作曲线,同时根据需要可将此直线方程还原为曲线方程,实现对资料的曲线拟合。常用的曲线拟合有最小二乘法拟合、幂函数拟合、对数函数拟合、线性插值、三次样条插值、端点约束。 关键词曲线拟合、最小二乘法拟合、幂函数拟合、对数函数拟合、线性插值、三次样条插值、端点约束 一、实验目的 1.掌握曲线拟合方式及其常用函数指数函数、幂函数、对数函数的拟合。 2.掌握最小二乘法、线性插值、三次样条插值、端点约束等。 3.掌握实现曲线拟合的编程技巧。 二、实验原理 1.曲线拟合 曲线拟合是平面上离散点组所表示的坐标之间的函数关系的一种数据处理方法。用解析表达式逼近离散数据的一种方法。在科学实验或社会活动中,通过 实验或观测得到量x与y的一组数据对(X i ,Y i )(i=1,2,...m),其中各X i 是彼此不同的。人们希望用一类与数据的背景材料规律相适应的解析表达式,y=f(x,c)来反映量x与y之间的依赖关系,即在一定意义下“最佳”地逼近或 拟合已知数据。f(x,c)常称作拟合模型,式中c=(c 1,c 2 ,…c n )是一些待定参 数。当c在f中线性出现时,称为线性模型,否则称为非线性模型。有许多衡量拟合优度的标准,最常用的一种做法是选择参数c使得拟合模型与实际观测值在

计算方法实验题

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. 根据“计算方法”课程内容的特点,给出五个典型算法的分析流程,学生可以 利用所掌握的 “高级语言”顺利地编制出计算机程序,上机实习,完成实验环节的教 学要求。 2. 所有的计算实习题目都经过任课教师逐一检验,准确无误。 3. 充分利用循环的思想、 迭代的思想, 给出算法结构描述和程序语言的对应关系, 有利于学生编 制相应的程序。 4. 结合实习题目,提出实验要求,要求学生按规范格式写出相应的实验报告,实 验报告成绩记入 期末总成绩。需要提醒学生:不能简单地套用现成的标准程序完成实 验题目,应当把重点放在对算法的理解、程序的优化设计、上机调试和计算结果分析 上,否则就失去实验课的目的啦。 5. 五个具体的实验题目是: 实验题目 实验题目 实验题目 实验题目 实验题目 要求必须完 成其中三个(如果全部完成更好) 。 1 拉格朗日 (Lagrange) 插值 2 龙贝格 (Romberg) 积分法 3 四阶龙格—库塔 (Runge — Kutta) 方法 4 牛顿 (Newton) 迭代法 5 高斯 (Gauss) 列主元消去法

数值分析实验报告1

实验一误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 其中ε(1.1)和(1.221,,,a a 的输出b ”和“poly ε。 (1(2 (3)写成展 关于α solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。 实验过程: 程序: a=poly(1:20); rr=roots(a); forn=2:21 n form=1:9 ess=10^(-6-m);

ve=zeros(1,21); ve(n)=ess; r=roots(a+ve); -6-m s=max(abs(r-rr)) end end 利用符号函数:(思考题一)a=poly(1:20); y=poly2sym(a); rr=solve(y) n

很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这类病态问题可以借助于MATLAB来进行问题的分析。 学号:06450210 姓名:万轩 实验二插值法

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

《数值计算方法》复习试题 一、填空题: 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;

太原理工大学数值计算方法实验报告

本科实验报告 课程名称:计算机数值方法 实验项目:方程求根、线性方程组的直接解 法、线性方程组的迭代解法、代数插值和最 小二乘拟合多项式 实验地点:行勉楼 专业班级: ******** 学号: ********* 学生姓名: ******** 指导教师:李誌,崔冬华 2016年 4 月 8 日

y = x*x*x + 4 * x*x - 10; return y; } float Calculate(float a,float b) { c = (a + b) / 2; n++; if (GetY(c) == 0 || ((b - a) / 2) < 0.000005) { cout << c <<"为方程的解"<< endl; return 0; } if (GetY(a)*GetY(c) < 0) { return Calculate(a,c); } if (GetY(c)*GetY(b)< 0) { return Calculate(c,b); } } }; int main() { cout << "方程组为:f(x)=x^3+4x^2-10=0" << endl; float a, b; Text text; text.Getab(); a = text.a; b = text.b; text.Calculate(a, b); return 0; } 2.割线法: // 方程求根(割线法).cpp : 定义控制台应用程序的入口点。// #include "stdafx.h" #include"iostream"

心得体会 使用不同的方法,可以不同程度的求得方程的解,通过二分法计算的程序实现更加了解二分法的特点,二分法过程简单,程序容易实现,但该方法收敛比较慢一般用于求根的初始近似值,不同的方法速度不同。面对一个复杂的问题,要学会简化处理步骤,分步骤一点一点的循序处理,只有这样,才能高效的解决一个复杂问题。

《数值计算方法》试题集及答案(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

数值计算方法实验5

实验报告 学院(系)名称: 主程序部分列选主元部分

实验结果: 一.列主元消去法 输入各个数据,最终使用列选主元法,得到结果为:x1=x2=x3=1二.高斯-赛德尔迭代法 输入各个数据,输出每一步迭代数据,最终结果为:x1=0.285716,附录(源程序及运行结果) 一.列主元高斯消去法 #include #include void print(double a[3][3],int n,double b[3]){ printf("输出矩阵:\n"); for(int i=0;ifabs(d)){ d=a[i][k]; l=i; } i++; } printf("选出主元:%lf\n",d); if(d==0) printf("矩阵奇异!\n"); else if(l!=k){ for(int j=k;j

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

计算方法与实习实验报告 学院:电气工程学院 指导老师:李翠平 班级: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<

(完整版)数值计算方法上机实习题答案

1. 设?+=1 05dx x x I n n , (1) 由递推公式n I I n n 1 51+-=-,从0I 的几个近似值出发,计算20I ; 解:易得:0I =ln6-ln5=0.1823, 程序为: I=0.182; for n=1:20 I=(-5)*I+1/n; end I 输出结果为:20I = -3.0666e+010 (2) 粗糙估计20I ,用n I I n n 51 5111+- =--,计算0I ; 因为 0095.05 6 0079.01020 201 020 ≈<<≈??dx x I dx x 所以取0087.0)0095.00079.0(2 1 20=+= I 程序为:I=0.0087; for n=1:20 I=(-1/5)*I+1/(5*n); end I 0I = 0.0083 (3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。 首先分析两种递推式的误差;设第一递推式中开始时的误差为000I I E '-=,递推过程的舍入误差不计。并记n n n I I E '-=,则有01)5(5E E E n n n -==-=-Λ。因为=20E 20020)5(I E >>-,所此递推式不可靠。而在第二种递推式中n n E E E )5 1(5110-==-=Λ,误差在缩小, 所以此递推式是可靠的。出现以上运行结果的主要原因是在构造递推式过程中,考虑误差是否得到控制, 即算法是否数值稳定。 2. 求方程0210=-+x e x 的近似根,要求4 1105-+?<-k k x x ,并比较计算量。 (1) 在[0,1]上用二分法; 程序:a=0;b=1.0; while abs(b-a)>5*1e-4 c=(b+a)/2;

计算方法实验(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"

数值分析实验报告总结

数值分析实验报告总结 随着电子计算机的普及与发展,科学计算已成为现代科 学的重要组成部分,因而数值计算方法的内容也愈来愈广泛和丰富。通过本学期的学习,主要掌握了一些数值方法的基本原理、具体算法,并通过编程在计算机上来实现这些算法。 算法算法是指由基本算术运算及运算顺序的规定构成的完 整的解题步骤。算法可以使用框图、算法语言、数学语言、自然语言来进行描述。具有的特征:正确性、有穷性、适用范围广、运算工作量少、使用资源少、逻辑结构简单、便于实现、计算结果可靠。 误差 计算机的计算结果通常是近似的,因此算法必有误差, 并且应能估计误差。误差是指近似值与真正值之差。绝对误差是指近似值与真正值之差或差的绝对值;相对误差:是指近似值与真正值之比或比的绝对值。误差来源见表 第三章泛函分析泛函分析概要 泛函分析是研究“函数的函数”、函数空间和它们之间 变换的一门较新的数学分支,隶属分析数学。它以各种学科

如果 a 是相容范数,且任何满足 为具体背景,在集合的基础上,把客观世界中的研究对象抽 范数 范数,是具有“长度”概念的函数。在线性代数、泛函 分析及相关的数学领域,泛函是一个函数,其为矢量空间内 的所有矢量赋予非零的正长度或大小。这里以 Cn 空间为例, Rn 空间类似。最常用的范数就是 P-范数。那么 当P 取1, 2 ,s 的时候分别是以下几种最简单的情形: 其中2-范数就是通常意义下的距离。 对于这些范数有以下不等式: 1 < n1/2 另外,若p 和q 是赫德尔共轭指标,即 1/p+1/q=1 么有赫德尔不等式: II = ||xH*y| 当p=q=2时就是柯西-许瓦兹不等式 般来讲矩阵范数除了正定性,齐次性和三角不等式之 矩阵范数通常也称为相容范数。 象为元素和空间。女口:距离空间,赋范线性空间, 内积空间。 1-范数: 1= x1 + x2 +?+ xn 2-范数: x 2=1/2 8 -范数: 8 =max oo ,那 外,还规定其必须满足相容性: 所以

《计算方法》期末考试试题.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)(