计算方法实验12

合集下载

数值计算方法实验报告

数值计算方法实验报告

本科实验报告课程名称:数值计算方法实验地点:计算机科学与技术学院506 专业班级:学号:学生姓名:指导教师:**年月日太原理工大学学生实验报告}printf("%f\n",c);}五、实验结果与分析二分法割线法分析:使用二分法和割线法均能计算出方程的根,但利用割线法要比二分法计算的次数少,并且能够较早的达到精度要求。

并且割线法程序代码量较少,精简明了。

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

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

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

实验地点北区多学科综合楼4506指导教师王峥太原理工大学学生实验报告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分解法:分析:对于两种高斯解方程,完全主元素跟列主元素都是先消元、再回代,由程序段可以发现,始终消去对角线下方的元素。

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

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

列主元素消元法的耗时比完全主元素法少很多,常采用之。

对于LU分解法,分解矩阵为单位下三角阵L与上三角阵U的乘积,然后解方程组Ly=b,回代,解方程组Ux=y。

其中的L为n阶单位下三角阵、U为上三角阵.六、讨论、心得本次试验中,感觉是最难的一次,完全主元素消元法程序编写过程相对来说花了好长时间。

纠正各种语法、算法、思路错误。

最后勉强成功,但还是有几处警告,不得解决之法。

数学计算方法实验报告

数学计算方法实验报告

数学计算方法实验报告习题二2.估计用二分法求方程f(x)=x3+4x2-10=0在区间[1,2]内根的近似值,为使方程不超过10时所需的二分次数。

f(x k)程序过程:function two (tolerance)a=1;b=2;counter=0;while (abs(b-a)>tolerance)c=(a+b)/2;fa=a^3+4*a^2-10;fb=b^3+4*b^2-10;fc=c^3+4*c^2-10;if ((fa==0|fb==0)) disp(counter);elseif (fa*fc<0)b=c;counter=counter+1;elseif (fb*fc<0)a=c;counter=counter+1;elseif (fb==0)disp(counter);endendsolution=(a+b)/2;disp(solution);disp(counter);实验结果:6.取x0=1.5,用牛顿迭代法求第三中的方程根.f(x)=x3+4x2-10=0的近似值(精确到||x k+1-x k|≦10-5,并将迭代次数与3题比较。

程序过程:function six (g)a=1.5;fa=a^3+4*a^2-10;ga=3*a^2+8*a;b=a-fa/ga;k=1;while(abs(b-a)>g)a=b;fa=a^3+4*a^2-10;ga=3*a^2+8*a;b=a-fa/ga;k=k+1;endformat long;disp(a);disp(k);实验结果:程序结果计算结果8.用弦割法求方程f(x)=x3-3x2-x+9=0在区间[-2,-1]内的一个实根近似值x k,|f(x k)|≦10-5.程序过程:function eight (t)a=-2;b=-1;fa=a^3-3*a^2-a+9;fb=b^3-3*b^2-b+9;c=b-fb*(b-a)/(fb-fa);k=1;while(abs(c-b)>t)a=b;b=c;fa=a^3-3*a^2-a+9;fb=b^3-3*b^2-b+9;c=b-fb*(b-a)/(fb-fa);k=k+1;endformat long;disp(k);disp(b);实验结果: 计算结果9.用艾特肯算法求方程x3+4x2-10=0在区间[1,2]内的根的近似值(取x0=1.5,g(x)=410 x ,精确到|x k+1-x k |≦10-5,并与2,3,6结果比较。

计算方法实验报告

计算方法实验报告

班级:地信11102班序号: 20姓名:任亮目录计算方法实验报告(一) (3)计算方法实验报告(二) (6)计算方法实验报告(三) (9)计算方法实验报告(四) (13)计算方法实验报告(五) (18)计算方法实验报告(六) (22)计算方法实验报告(七) (26)计算方法实验报告(八) (28)计算方法实验报告(一)一、实验题目:Gauss消去法解方程组二、实验学时: 2学时三、实验目的和要求1、掌握高斯消去法基础原理2、掌握高斯消去法法解方程组的步骤3、能用程序语言对Gauss消去法进行编程实现四、实验过程代码及结果1、实验算法及其代码模块设计(1)、建立工程,建立Gauss.h头文件,在头文件中建类,如下:class CGauss{public:CGauss();virtual ~CGauss();public:float **a; //二元数组float *x;int n;public:void OutPutX();void OutputA();void Init();void Input();void CalcuA();void CalcuX();void Calcu();};(2)、建立Gauss.cpp文件,在其中对个函数模块进行设计2-1:构造函数和析构函数设计CGauss::CGauss()//构造函数{a=NULL;x=NULL;cout<<"CGauss类的建立"<<endl;}CGauss::~CGauss()//析构函数{cout<<"CGauss类撤销"<<endl;if(a){for(int i=1;i<=n;i++)delete a[i];delete []a;}delete []x;}2-2:函数变量初始化模块void CGauss::Init()//变量的初始化{cout<<"请输入方程组的阶数n=";cin>>n;a=new float*[n+1];//二元数组初始化,表示行数for(int i=1;i<=n;i++){a[i]=new float[n+2];//表示列数}x=new float[n+1];}2-3:数据输入及输出验证函数模块void CGauss::Input()//数据的输入{cout<<"--------------start A--------------"<<endl;cout<<"A="<<endl;for(int i=1;i<=n;i++)//i表示行,j表示列{for(int j=1;j<=n+1;j++){cin>>a[i][j];}}cout<<"--------------- end --------------"<<endl;}void CGauss::OutputA()//对输入的输出验证{cout<<"-----------输出A的验证-----------"<<endl;for(int i=1;i<=n;i++){for(int j=1;j<=n+1;j++){cout<<a[i][j]<<" ";}cout<<endl;}cout<<"---------------END--------------"<<endl;}2-4:消元算法设计及实现void CGauss::CalcuA()//消元函数for(int k=1 ;k<n;k++){for(int i=k+1;i<=n;i++){double lik=a[i][k]/a[k][k];for(int j=k;j<=n+1;j++){a[i][j]-=lik*a[k][j];}a[i][k]=0; //显示消元的效果}}}2-5:回代计算算法设计及函数实现void CGauss::CalcuX()//回带函数{for(int i=n;i>=1;i--){double s=0;for(int j=i+1;j<=n;j++){s+=a[i][j]*x[j];}x[i]=(a[i][n+1]-s)/a[i][i];}}2-6:结果输出函数模块void CGauss::OutPutX()//结果输出函数{cout<<"----------------X---------------"<<endl;for(int i=1 ;i<=n;i++){cout<<"x["<<i<<"]="<<x[i]<<endl;}}(3)、“GAUSS消元法”主函数设计int main(int argc, char* argv[]){CGauss obj;obj.Init();obj.Input();obj.OutputA();obj.CalcuA();obj.OutputA();obj.CalcuX();obj.OutPutX();//obj.Calcu();return 0;2、实验运行结果计算方法实验报告(二)一、实验题目:Gauss列主元消去法解方程组二、实验学时: 2学时三、实验目的和要求1、掌握高斯列主元消去法基础原理(1)、主元素的选取(2)、代码对主元素的寻找及交换2、掌握高斯列主元消去法解方程组的步骤3、能用程序语言对Gauss列主元消去法进行编程实现四、实验过程代码及结果1、实验算法及其代码模块设计(1)、新建头文件CGuassCol.h,在实验一的基础上建立类CGauss的派生类CGuassCol公有继承类CGauss,如下:#include "Gauss.h"//包含类CGauss的头文件class CGaussCol:public CGauss{public:CGaussCol();//构造函数virtual ~CGaussCol();//析构函数public:void CalcuA();//列主元的消元函数int FindMaxIk(int k);//寻找列主元函数void Exchange(int k,int ik);//交换函数void Calcu();};(2)、建立CGaussCol.cpp文件,在其中对个函数模块进行设计2-1:头文件的声明#include "stdafx.h"#include "CGuassCol.h"#include "math.h"#include "iostream.h"2-2:派生类CGaussCol的构造函数和析构函数CGaussCol::CGaussCol()//CGaussCol类构造函数{cout<<"CGaussCol类被建立"<<endl;}CGaussCol::~CGaussCol()//CGaussCol类析构函数{cout<<"~CGaussCol类被撤销"<<endl;}2-3:高斯列主元消元函数设计及代码实现void CGaussCol::CalcuA()//{for(int k=1 ;k<n;k++){int ik=this->FindMaxIk(k);if(ik!=k)this->Exchange(k,ik);for(int i=k+1;i<=n;i++){float lik=a[i][k]/a[k][k];for(int j=k;j<=n+1;j++){a[i][j]-=lik*a[k][j];}}}}2-4:列主元寻找的代码实现int CGaussCol::FindMaxIk(int k)//寻找列主元{float max=fabs(a[k][k]);int ik=k;for(int i=k+1;i<=n;i++){if(max<fabs(a[i][k])){ik=i;max=fabs(a[i][k]);}}return ik;}2-5:主元交换的函数模块代码实现void CGaussCol::Exchange(int k,int ik)//做交换{for(int j=k;j<=n+1;j++){float t=a[k][j];a[k][j]=a[ik][j];a[ik][j]=t;}}(3)、建立主函数main.cpp文件,设计“Gauss列主元消去法”主函数模块3-1:所包含头文件声明#include "stdafx.h"#include "Gauss.h"#include "CGuassCol.h"3-2:主函数设计int main(int argc, char* argv[]){CGaussCol obj;obj.Init();//调用类Gauss的成员函数obj.Input();//调用类Gauss的成员函数obj.OutputA();//调用类Gauss的成员函数obj.CalcuA();obj.OutputA();obj.CalcuX();obj.OutPutX();return 0;}2、实验结果计算方法实验报告(三)一、实验题目:Gauss完全主元消去法解方程组二、实验学时: 2学时三、实验目的和要求1、掌握高斯完全主元消去法基础原理;2、掌握高斯完全主元消去法法解方程组的步骤;3、能用程序语言对Gauss完全主元消去法进行编程(C++)实现。

实验12 父权指数与父权概率精编版

实验12 父权指数与父权概率精编版

实验十二父权指数与父权概率【实验目的】掌握父权指数与父权概率的计算方法,了解父权概率的意义。

【实验原理】亲子鉴定中,经过DNA分型后,若争议父亲与孩子之间的基因型不违反孟德尔遗传规律(Mendelian Law),就有两种可能:一种是该争议父亲就是孩子的亲生父亲(生物学父亲,简称生父)。

另一种是他是该人群中的随机男子,此人只是偶然具有孩子的生父基因型组合,以下称为随机男子。

将这两种可能进行比较就是似然率(likelihood ratio, LR),此数值即为父权指数(paternity index, PI)。

显然,父权指数是反映检验结果(基因型组合)不违反孟德尔遗传规律时,对“争议父亲是孩子的生父”这一主张的支持强度。

依据支持强度,可以评估他们之间是否存在亲生关系。

根据Bayes定理,PI可以转换成父权概率(probability of paternity),用以反映争议父亲是孩子生父可能性的高低,使结论容易被理解。

【仪器与方法】纸、笔、计算器、电脑及计算软件。

【检材】争议父、母亲、孩子复合STR基因座分型结果图谱。

【实验步骤】1. 三联体(母子亲生关系已经确定)案件PI和父权概率计算将已知实验结果的图谱进行分析,分别列出复合STR基因座分型结果,打开亲权鉴定软件,点击亲权鉴定菜单,选择三联体和试剂盒型号,按照方法输入父母子3人的基因型。

输入完毕后,在生成结果表中勾选,点击右下角的计算器计算PI。

2. 二联体(父子)案件PI和父权概率计算将已知实验结果的图谱进行分析,分别列出复合STR基因座分型结果,打开亲权鉴定软件,点击亲权鉴定菜单,选择二联体和试剂盒型号,按照方法输入父子3人的基因型。

输入完毕后,在生成结果表中勾选,点击右下角的计算器计算PI。

注意事项a. 性别基因座(AMEL)中的X和Y在程序中分别用1和2表示,在设置基因座时,基因座序号X请设为1,Y设为2。

b. 等位基因输入时,分隔符可为'/'、'-'、'+',"13/15"或"13-15"或"13+15"都是正确的,纯合子可只输入一个等位基因,如"13/13"可输入为"13",性别基因(AMEL)在输入时可不使用分隔符,如"X/Y"可直接输入为"XY","XX"可简化输入为"X"("YY"或"Y"将不被程序所授),在偶合率计算时,AMEL的Pi值始终为0.5,而在亲权鉴定中,AMEL不列入计算。

计算方法实验指导与实验报告

计算方法实验指导与实验报告

6
实验题目 2 龙贝格(Romberg)积分法
方法概要:利用复化梯形求积公式、复化辛普生求积公式、复化柯特斯求积公式 的误差估计式计算积分 计算公式:

b
a
f ( x)dx 。记 h
ba , xk a k h , k 0,1, n
, n ,其
Tn
1 n h k 1[ f ( xk 1 ) f ( xk )] 2
2
实验题目 1 拉格朗日(Lagrange)插值
方法概要: 给定平面上 n 1 个不同的数据点 ( xk , f ( xk )) , k 0,1, 则满足条件
, n , xi x j , i j ;
Pn ( xk ) f ( xk ) , k 0,1,
的 n 次拉格朗日插值多项式
, n ,构造 Pn ( x ) ,利用拉格朗日插值多项式 Pn ( x ) 作
为 f ( x) 的近似值。分别取 n 5 , n 10 , n 20 ,同时计算 Pn ( x ) 在 x 0.95 ,
x 0.05 , x 0.05 , x 0.95 处的函数值。
(2)设 f ( x) e , x [1,1] ,考虑非等距节点的拉格朗日插值多项式 Pn ( x ) ,
问题 2 插值区间越小越好吗? 考虑下面两个拉格朗日插值问题:
1 , x [1,1] ,考虑等距节点的拉格朗日插值多项式 Pn ( x ) , 1 x2 2.0 xk 1.0 k h , 即将区间 [1,1] 进行 n 等分, 记h , 构造 Pn ( x ) , k 0,1, , n , n
问题 4 考虑拉格朗日插值问题,内插比外推更可靠吗? 考虑下面两个拉格朗日插值问题: (1)设 f ( x)

「实验报告计算方法」

「实验报告计算方法」

「实验报告计算方法」实验报告的计算方法包括统计数据的处理、数据分析与图表的绘制等内容。

下面将以实验报告中常见的计算方法为例进行详细介绍。

首先,实验报告中常见的计算方法之一是平均值的计算。

在实验中,往往需要多次重复测量同一个实验现象或现象相关的参数,然后将测得的数据求平均值。

计算平均值的步骤如下:1.将测得的数据依次排列;2.求出所有数据的总和;3.将总和除以数据的个数,得到平均值。

例如,实验中测得物体从起点到终点的位移分别为32 cm、35 cm和38 cm,那么求位移的平均值时,先将这3个数相加得到:32 + 35 + 38 = 105 cm,然后将总和105除以3(数据的个数),得到位移的平均值为35 cm。

第二,实验报告中还常常需要计算数据组的标准差。

标准差是用来描述一组数据的离散程度的指标,用来衡量数据的分散程度。

计算标准差的步骤如下:1.求出数据的平均值;2.将每组数据减去平均值后的差值平方;3.将所有平方差值相加;4.将总和除以数据的个数;5.将上一步骤的结果开平方,得到标准差。

例如,实验中测得物体从起点到终点的位移分别为32 cm、35 cm和38 cm,先求位移的平均值得到35 cm,然后将每组数据减去平均值后的差值平方,得到:(32-35)^2 + (35-35)^2 + (38-35)^2 = 9 + 0 + 9 = 18,然后将平方差值相加得到18,再将18除以3(数据的个数),得到6,最后将6开平方,得到标准差为2.45 cm。

第三,实验报告中还涉及数据的比较与分析。

通过比较不同样本或者不同实验条件下的数据来推导结论。

常用的比较与分析方法有:T检验、方差分析、线性回归等。

T检验用于比较两组数据的均值是否存在显著差异。

根据两组数据的均值、标准差和数据个数,通过T检验的统计分析可以给出是否存在显著差异的结论。

方差分析用于比较多组数据的均值是否存在显著差异。

根据多组数据的均值、标准差和数据个数,通过方差分析的统计分析可以给出是否存在显著差异的结论。

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

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

计算方法实验报告实验名称: 实验2 列主元素消去法解方程组 1 引言工程实际问题中,线型方程的系数矩阵一般为低阶稠密矩阵和大型稀疏矩阵。

用高斯消去法解Ax =b 时,可能出现)(k kk a 很小,用作除数会导致中间结果矩阵元素数量级严重增长和舍入误差的扩散,使结果不可靠;采用选主元素的三角分解法可以避免此类问题。

高斯消去法的消去过程,实质上是将A 分解为两个三角矩阵的乘积A =LU ,并求解Ly =b 的过程。

回带过程就是求解上三角方程组Ux =y 。

所以在实际的运算中,矩阵L 和U 可以直接计算出,而不需要任何中间步骤,从而在计算过程中将高斯消去法的步骤进行了进一步的简略,大大提高了运算速度,这就是三角分解法。

采用选主元的方式与列主元高斯消去法一样,也是为了避免除数过小,从而保证了计算的精确度。

2 实验目的和要求通过列主元素消去法求解线性方程组,实现P A =LU 。

要求计算解x ,L ,U ,整形数组IP (i ),(i =1,2,…,)(记录主行信息)。

3 算法原理与流程图(1)原理将A 分解为两个三角矩阵的乘积A =LU 。

对方程组的增广矩阵[]b A A ,=经过k-1步分解后,可变成如下形式:⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡→-------------n nnnjnkk n n n i in ij ik k i i i k kn kj kk k k k k k n k j k k k k k k k n j k k n j k k b a a a l l l b a a a l l l b a a a l l l y u u u u l l y u u u u u l y u u u u u u A1,211,211,211,1,1,11,12,11,122221,2222111,1,11,11211第k 步分解,为了避免用绝对值很小的数kku 作除数,引进量1111 (,1,,;1,2,,) ()/ (1,2,,;1,2,,)k kj kj km mj m k ik ik im mk kk m u a l u j k k n k n l a l u u i k k n k n -=-=⎧=-=+=⎪⎪⎨⎪=-=++=⎪⎩∑∑11(,1,,)k i ik im mkm s a l u i k k n -==-=+∑,于是有kk u =ks 。

实验十二用三表法测量交流电路等效参数

实验十二用三表法测量交流电路等效参数

实验十二用三表法测量交流电路等效参数Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】实验报告一、实验目的1. 学会用交流电压表、 交流电流表和功率表测量元件的交流等效参数的方法2. 学会功率表的接法和使用 二、原理说明1. 正弦交流激励下的元件值或阻抗值,可以用交流电压表、交流电流表及功率表,分别测量出元件两端的电压U ,流过该元件的电流I 和它所消耗的功率P ,然后通过计算得到所求的各值,这种方法称为三表法,是用以测量50Hz 交流电路参数的基本方法。

计算的基本公式为阻抗的模 │Z │= UI 电路的功率因数 cos φ= P UI等效电阻R =PI 2等效电抗 X=│Z │sin φ 如果被测元件是一个电感线圈,则有: X= XL=│Z │sin φ= 2πf L 如果被测元件是一个电容器,则有:X= X C =│Z │sin φ=12πfc2. 阻抗性质的判别方法:在被测元件两端并联电容或串联电容的方法来加以判别,方法与原理如下:(1) 在被测元件两端并联一只适当容量的试验电容, 若串接在电路中电流表的读数增大,则被测阻抗为容性,电流减小则为感性。

(a) (b) 图12-1 并联电容测量法图12-1(a)中,Z 为待测定的元件,C ’为试验电容器。

(b)图是(a)的等效电路,图中G 、B 为待测阻抗Z 的电导和电纳,B'为并联电容C ’的电纳。

在端电压有效值不变的条件下,按下面两种情况进行分析:① 设B +B ’=B",若B ’增大,B"也增大,则电路中电流I 将单调地上升,故可判断B 为容性元件。

② 设B +B ’=B",若B ’增大,而B"先减小而后再增大,电流I 也是先减小后上升,如图5-2所示,则可判断B 为感性元件。

I I 2 I gB 2B B ’ 图5-2 I-B'关系曲线由上分析可见,当B 为容性元件时,对并联电容C ’值无特殊要求;而当B 为感性元件时,B ’<│2B │才有判定为感性的意义。

溶液pH计算方法

溶液pH计算方法

溶液pH计算方法溶液pH值是描述溶液酸碱性强弱的指标,计算溶液pH值是化学实验中常见的一项技能。

在化学实验中,了解溶液的pH值对于研究物质的性质、进行实验设计以及解决实验实际问题都非常重要。

学习溶液pH值的计算方法是化学学习的重要内容之一。

一、pH值的概念pH值是用来描述溶液酸碱性的指标,它的取值范围是0-14。

当pH值小于7时,溶液呈酸性;当pH值大于7时,溶液呈碱性;当pH值等于7时,溶液呈中性。

pH值的计算是通过测量溶液中氢离子浓度的负对数来进行的。

通常来说,pH值计算的基本方程式为:pH=-log[H+],其中[H+]代表氢离子的浓度。

二、pH计算方法1.浓度已知的酸碱溶液的pH计算对于已知浓度的酸碱溶液,可以通过直接代入pH=-log[H+]的公式中来计算pH值。

当一溶液中氢离子的浓度为0.01mol/L时,可以通过pH=-log(0.01)来计算pH值,得到pH=2。

该溶液的pH值为2,呈酸性。

2.浓度未知的酸碱溶液的pH计算对于未知浓度的酸碱溶液,需要通过实验测定来获取氢离子的浓度,并进而计算pH值。

常见的测定方法包括指示剂法、电位法、电极法等。

以指示剂法为例,可以通过将指示剂加入溶液中,根据指示剂在酸碱溶液中的颜色变化来确定溶液的酸碱性,再通过对标溶液的测定从而计算未知溶液的pH值。

2.未知浓度的氢氧化钠溶液的pH计算使用酚酞指示剂法得到未知浓度的氢氧化钠溶液的pH值。

经过实验测定,得到氢氧化钠溶液的pH值为12。

根据已知氢氧化钠溶液的pH值为12,可以计算得到其氢离子的浓度。

根据pH=-log[H+]的公式,可以得出氢离子的浓度为10^(-12)。

所以,该氢氧化钠溶液的pH值为12,呈碱性。

四、pH计算方法的注意事项1.在进行pH值计算时,需要确保溶液中不存在其他影响氢离子浓度的因素,如盐酸溶液中含有其他酸碱性物质等。

2.在进行pH值计算时,需要准确测定溶液的浓度,以保证计算结果的准确性。

计算方法实验报告(附代码)

计算方法实验报告(附代码)

实验一 牛顿下山法实验说明:求非线性方程组的解是科学计算常遇到的问题,有很多实际背景.各种算法层出不穷,其中迭代是主流算法。

只有建立有效的迭代格式,迭代数列才可以收敛于所求的根。

因此设计算法之前,对于一般迭代进行收敛性的判断是至关重要的。

牛顿法也叫切线法,是迭代算法中典型方法,只要初值选取适当,在单根附近,牛顿法收敛速度很快,初值对于牛顿迭代 至关重要。

当初值选取不当可以采用牛顿下山算法进行纠正。

牛顿下山公式:)()(1k k k k x f x f x x '-=+λ下山因子 ,,,,322121211=λ下山条件|)(||)(|1k k x f x f <+实验代码:#include<iostream> #include<iomanip> #include<cmath>using namespace std;double newton_downhill(double x0,double x1); //牛顿下山法函数,返回下山成功后的修正初值double Y; //定义下山因子Y double k; //k为下山因子Y允许的最小值double dfun(double x){return 3*x*x-1;} //dfun()计算f(x)的导数值double fun1(double x){return x*x*x-x-1;} //fun1()计算f(x)的函数值double fun2(double x) {return x-fun1(x)/dfun(x);} //fun2()计算迭代值int N; //N记录迭代次数double e; //e表示要求的精度int main(){double x0,x1;cout<<"请输入初值x0:";cin>>x0;cout<<"请输入要求的精度:";cin>>e;N=1;if(dfun(x0)==0){cout<<"f'(x0)=0,无法进行牛顿迭代!"<<endl;}x1=fun2(x0);cout<<"x0"<<setw(18)<<"x1"<<setw(18)<<"e"<<setw(25)<<"f(x1)-f(x0)"<<endl;cout<<setiosflags(ios::fixed)<<setprecision(6)<<x0<<" "<<x1<<" "<<fabs(x1-x0)<<" "<<fabs(fun1(x1))-fabs(fun1(x0))<<endl;if(fabs(fun1(x1))>=fabs(fun1(x0))){ //初值不满足要求时,转入牛顿下山法x1=newton_downhill(x0,x1);} //牛顿下山法结束后,转入牛顿迭代法进行计算while(fabs(x1-x0)>=e){ //当精度不满足要求时N=N+1;x0=x1;if(dfun(x0)==0){cout<<"迭代途中f'(x0)=0,无法进行牛顿迭代!"<<endl;} x1=fun2(x0);cout<<setiosflags(ios::fixed)<<setprecision(6)<<x0<<" "<<x1<<" "<<fabs(x1-x0)<<endl;}cout<<"迭代值为:"<<setiosflags(ios::fixed)<<setprecision(6)<<x1<<'\n';cout<<"迭代次数为:"<<N<<endl;return 0;}double newton_downhill(double x0,double x1){Y=1;cout<<"转入牛顿下山法,请输入下山因子允许的最小值:";cin>>k;while(fabs(fun1(x1))>=fabs(fun1(x0))){if(Y>k){Y=Y/2;}else {cout<<"下山失败!";exit(0);}x1=x0-Y*fun1(x0)/dfun(x0);}//下山成功则cout<<"下山成功!Y="<<Y<<",转入牛顿迭代法计算!"<<endl;return x1;}实验结果:图4.1G-S 迭代算法流程图实验二 高斯-塞德尔迭代法实验说明:线性方程组大致分迭代法和直接法。

实验实训12 三相负载的三角形联结与功率测量

实验实训12 三相负载的三角形联结与功率测量

实验实训12 三相负载的三角形联结与功率测量1. 实验目的1.1 掌握三相电源的三角形联结方法;1.2 掌握三相负载的三角形联结方法;1.3 了解三相功率测量的方法;1.4 熟悉三相功率的计算方法。

2. 实验原理三相电源的三角形联结是指三台单相电源相互连接,构成一个三角形,如图1所示。

在三相电源输出电压相位差为120度的情况下,三相电源的三角形联结不会发生任何改变。

图1 三相电源的三角形联结三相负载的三角形联结是指三个单相负载相互连接,构成一个三角形,如图2所示。

在三相负载的三角形联结中,无论是负载电压还是负载电流,相邻两个相位差为120度。

2.3 三相功率测量方法(1) 用独立的表头分别测量三相电压和电流,在三相负载的三角形联结中,三个电压表头连接到三个负载端点上,三个电流表头连接到三相电源相应的输出端口上。

(2) 计算三相功率,使用平均功率公式,如下所示:P=V1×I1cosθ1+V2×I2cosθ2+V3×I3cosθ3其中,V1、V2、V3和I1、I2、I3分别为三相电压和电流的有效值,θ1、θ2、θ3为对应的相位角。

3. 实验步骤3.1 连接实验仪器连接好实验仪器后,打开电源开关,调节电压和电流表头的放大倍数,调节后使电压和电流的读数在合适范围内。

3相电源的三角形联结:在实验仪器中选定三相电压测量功能,记录三相电压的有效值和相位差。

功率测量:使用平均功率公式计算三相功率。

关闭电源开关,断开实验仪器的连接,清理实验现场。

4. 注意事项4.1 在连接实验仪器时,必须根据实验仪器的规定正确接线,避免短路或接错线导致损坏实验仪器;4.2 在操作实验仪器时,必须按照实验指导书上的要求进行,切勿擅自改变实验参数,以免引起不必要的危险;4.3 在进行实验时,应该全程关注实验仪器的读数,尤其是电压和电流的读数,及时调节电源电压和电流,以保证实验的顺利进行;4.4 实验结束后,应该关闭电源开关,断开实验仪器的连接,清理实验现场,如实记录实验数据及观察到的现象。

计算方法 实验报告 拉格朗日 龙贝格 龙格库塔

计算方法 实验报告 拉格朗日 龙贝格  龙格库塔
agrange.c,romberg.c和runge.c三个子文件包含(#include)在了main.c中,所以,要查看运行结果,老师只需直接用win-tc打开main.c,运行即可。感谢使用!
主界面:
/*lagrange.c*/
float real_value(float x) /*由被插值函数计算真实值*/
c=getchar();
if(c=='N'||c=='n') break;
}
}
/*romberg.c*/
double function(double x) /*被积函数*/
{
return 4.0/(1+(x)*(x));
}
double t(double a,double b,int m) /*计算T1*/
实验二(龙贝格公式)
§公式
§算法描述
§流程图
§运行结果
§结果分析:Romberg积分法是在积分步长逐步折半的过程中,用低精度求积公式的组合得到更高精度求积公式的一种方法,它算法简单,且收敛加速效果极其显著。
实验三(四阶龙格库塔)
§公式
k1=h*f(xn,yn);
k2=h*f(xn+h/2,yn+k1/2);
T1=t(a,b,0);
T2=T1/2.0+t(a,b,1);
S1=(4*T2-T1)/3.0;
T1=T2;
T2=T1/2.0+t(a,b,2);
S2=(4*T2-T1)/3.0;
C1=(16*S2-S1)/15.0;
T1=T2;
T2=T1/2.0+t(a,b,3);
S1=S2;
S2=(4*T2-T1)/3.0;

计算方法实验心得体会(专业13篇)

计算方法实验心得体会(专业13篇)

计算方法实验心得体会(专业13篇)计算机实验心得体会一学期的计算机网络实验课结束了。

通过这一学期的学习,使得自己在计算机网络这一方面有了更多的了解,更深刻的体会,对计算机网络也有了更多的兴趣。

大家在一起对计算机基础教学中、培训中的一些问题进行了探讨、相互间受到许多启发。

特别是每一次实验课,以团队为基础进行试验。

这样不仅能使我们快速完成实验,而且培养了团队合作的精神。

当实验过程中,不同人扮演不同的角色时,还可以分享实验心得,这样起到了互补的作用。

我们学习了:双绞线的制作与测试,我们认识了局域网中几种网线及其各自的特点;学会了用双绞线制作网线;学习掌握了路由器间背靠背的连接方法,路由器的工作原理等;交换机的工作原理、交换技术和vlan作用;alc配置;配置虚拟网等等的内容。

计算机网络实验,我们熟悉了解路由器的基本作用和基本功能。

了解代理服务的概念和掌握配置代理服务器的'方法和过程。

体会到协作学习的一些理念。

希望以后还会有机会再去接触计算机网络实验这门课程,也希望能从中得到更多的启示,并希望这门课的老师越讲越好,这门课越来越好。

计算机网络课程的实验不同于以前做过的c语言上机实验和数据结构上机实验,后两者都是编程的,要求的是个人对基础知识的掌握和熟练的应用,简单地说就是一个人的战场。

而计算机网络课程则是一门操作性很强的课程,很多时候它更要求我们注重团队之间的交流与配合,而不是独自完成。

第一次实验是双绞线的制作,通过这个实验让我学到了如何制作双绞线,也是我大学期间第一次做操作性这么强的实验。

以前的实验都是编程,而这一次的实验却是完完全全地让我们自己动手。

剥皮—排序—理直—剪齐—插入—压线,虽然实验过去了有一段时间,但是还是能清楚地记得做法。

虽然最后我们的实验没有成功,但是这并不代表我们没有收获。

第二次的实验是linux的使用与dns服务器的配置与管理。

在课堂上,由于机子的问题,linux不能成功打开。

《计算方法》实验报告材料

《计算方法》实验报告材料
double ChaShang(int n,vector<double>&X,vector<double>&Y);
double Newton(double x,vector<double>&X,vector<double>&Y);
int main(){
char a='n';
do{
int n;
cout<<"请输入插值点个数:"<<endl;
for(int i=0;i<N;i++){
X[i]=p;
Y[i]=1/(1+p*p);
p=p+c;
}
cout<<"请输入要求值x的值:"<<endl;
double x;
cin>>x;
double result=fenduan(N,X,Y,x,c);
cout<<"由分段线性插值法得出结果: "<<result<<endl;
cin>>n;
vector<double>X(n,0);
vector<double>Y(n,0);
cout<<"请输入插值点对应的值及函数值(Xi,Yi):"<<endl;
for(int i=0;i<n;i++){
cin>>X[i]>>Y[i];
}
cout<<"请输入要求值x的值:"<<endl;

《计算方法》实验指导书

《计算方法》实验指导书

《计算方法》实验指导书课程名称:计算方法英文名称:Numerical Calculation Method一、实验的性质、目的和任务本实验是与本专业基础课《计算方法》相配套的,旨在巩固专业课内容和学生编程的能力。

通过实验加强对数值方法的理解和掌握,编制出适用的程序。

同时,在理论教学的基础上,注意方法处理的技巧及其与计算机的结合,要重视误差分析、收敛性的理论;其次要通过例子,学习使用各种数值方法解决实际计算问题。

要求学生应用高级计算机语言编程完成实验。

二、实验基本要求实验基本要求:要求熟悉高级计算机语言,以及相关上机操作说明;上机时要遵守实验室的规章制度,爱护实验设备;实验内容要求:(1)认真分析题目的条件和要求,复习相关理论知识,选择适当的解决方案和算法;(2)编写上机实验程序,作好上机前的准备工作;(3)上机调试程序,并试算各种方案,记录计算的结果(包括必要的中间结果);(4)分析和解释计算结果;(5)程序调试完后,须由实验辅导教师在机器上检查运行结果;(6)按照要求书写每次实验的实验报告。

(7)要求独立完成上述各项。

三、实验原理应用高级计算机语言实现数值计算方法课程中的各种算法。

四、实验环境实验设备:计算机实验使用的语言:C语言、Java语言或Matlab语言任选五、考核与报告(1)本课程的评分方法是考查,实验作为平时成绩占学期期末总成绩的30%。

(2)每个实验完成后必须完成相应的实验报告。

实验成绩组成为:实验报告占40%;按照教学计划的实验,现场编程序,演示计算结果占50%;创新占10%。

六、实验报告格式实验报告在书写过程中应该将以下问题写清楚1、实验目的:2、实验要求:3、实验内容:4、实验题目:5、设计原理与思想:6、对应程序:7、实验结果及其分析:8、计算中出现的问题,解决方法及体会:七、《计算方法》课程实验项目名称和实验目的及实验内容如下实验一 非线性方程求根一、实验类型 验证性 二、实验学时 2学时 三、实验目的:1、 掌握计算机上常用的一些求非线性方程的近似根的数值方法(二分法、迭代法、牛顿法、割线法),并能比较各种方法的异同点;2、 掌握迭代的收敛性定理,局部收敛性、收敛阶的概念3、正确应用所学方法求出给定的非线性方程满足一定精度要求的数值解。

计算方法实验

计算方法实验
一、曲线拟合
1、实验内容
试用最小二乘法分别求一次和二次多项式,使其与下列数据按拟
合,并比较两曲线的优劣。
xi
1.36 1.49 1.73 1.81 1.95
yi
14.094 15.069 16.844 17.378 18.435
2.实验原理
曲线拟合的最小二乘法:设通过点(������������,������������ )的规律为 y=f(x),即
cout << "Input the "<< num <<" of x:"; cin >> data_x[num-1]; cout << "Input the "<< num <<" of y:"; cin >> data_y[num-1];
num--; } double A =0.0; double B =0.0; double C =0.0; double D =0.0; A = (data_x*data_x).sum(); B = data_x.sum(); C = (data_x*data_y).sum(); D = data_y.sum(); double k,b,tmp =0; if(tmp=(A*data_x.size()-B*B)) {
double h=(b-a)/n; double T=0; for(int i=1;i<n;i++) {
T=T+Function(a+i*h); } T*=2; T=(Function(a)+Function(b)+T)*h/2; return T; } //复化辛普森公式 double MulripleSimpson(double a,double b,int n) { double h=(b-a)/n; double T=0; for(int i=0;i<n;i++) {

华南理工大学《计算方法》实验报告

华南理工大学《计算方法》实验报告

华南理工大学《计算方法》实验报告华南理工大学《计算方法》实验报告学院计算机科学与工程专业计算机科学与技术(全英创新班)学生姓名 -------学生学号 ------------指导教师布社辉课程编号 145022课程学分 3 分起始日期 2015年5月28日实验题目一Solution of Nonlinear Equations--Bracketing method and Newton-Raphson method姓名:xxxxxx学号:xxxxxxxxxxxx时间:2015年5月28日【题目】1.Find an approximation (accurate to 10 decimal places) for the interest rate I thatwill yield a total annuity value of $500,000 if 240 monthly payments of $300 are made.2.Consider a spherical ball of radius r = 15 cm that is constructed from a variety ofwhite oak that has a density of ρ = 0.710. How much of the ball (accurate to eight decimal places) will be submerged when it is placed in water?3.To approximate the fixed points (if any) of each function. Answers should beaccurate to 12 decimal places. Produce a graph of each function and the line y = x that clearly shows any fixed points.(a) g(x) = x5 − 3x3 − 2x2 + 2(b) g(x) = cos(sin(x))【实验分析】1.Assume that the value of the k-th month is , the value next month is, whereSo the total annuity value after 240 months is :To find the rate I that satisfied A=5000000, we can find the solution to the equationThe Bisection method can be used to find the solution of .2.The mass of water displaced when a sphere is submerged to a depth d is:The mass of the ball isAppl ying Archimedes’ law, , produce the following equations:So g(d)=, and Bisection method can be used to find the root.3.In this problem, the target is to find the fixed point by fixed point iteration. So wecan use fixed point iteration method to solve the problem.(a),so ,Plot the function g(x) and y=x, it can be seen that there are three fixed point, where ,It can be solved that:for,for,for,So, ,,, they are all repelling fixed point, fixed point iteration method cannot converge to them.(b). From the graph below we know that the fixed point liesbetween 0.5 and 1. Where . So the fixed point is attractive fixed point. I initially guess that p=0.75, and apply fixed point iteration method to find the solution.【实验过程和程序】1.The value of g(I) will change significantly but little change of I, so that it’sunwise to plot the figure about I and g(I). Instead, the interest will be bound by [0,1] by common sense. So I set the left end point of Bisection method to 0, right end point to 1. The precision is set to 1e-10.Code for g(I) is :Code for applying Bisection method is :2.The since the density of the ball is smaller than water, so depth submerged shouldnot be larger than 2r, and not less than 0. So I set the left end point of Bisection method to 0 and right to 2r.Code for g(d) is :Code for applying Bisection method is :3.(a)Code for function g:Code for applying fixed point iteration:Code for plot the graph:(b)Code of this problem is similar to the previous one, so it’s not illustrated here.【实验结果】1.Result for the program is :So the annual interest rate is 31.78710938%2.X-axis is the depth and Y-axis is for g(d). Blue line is the function value versusdepth. Red line is y=0. It can be seen from the graph that the solution is about 19.And by using Bisection method, the solution depth=19.306641cm is found, with8 significance bit.3.(a) No fixed point can be found. By solving this equation, we can find that x=2 isone of the solution. If we set the initial point to 2.00000000001 or 1.9999999, the result is the same:. If we set initial point to 2, the point can be found:. This is consistent with the conclusion discussed in the previous part.(b)The fixed point p=0.768169156736 is found:实验题目二Solution of Linear Systems--Gaussian elimination and pivoting姓名:xxxxxx学号:xxxxxxxxxxxx时间:2015年5月28日【题目】Find the sixth-degree polynomial y = a1 + a2x + a3x^2 + a4x^3 + a5x^4 + a6x^5 + a7x^6 that passes through (0, 1), (1, 3), (2, 2), (3, 1), (4, 3), (5, 2), and (6, 1). Use the plot command to plot the polynomial and the given points on the same graph. Explain any discrepancies in your graph.【实验分析】To find the coefficient of each term, we can substitute all the given point to the equations and construct an argument matrix AX=B. Then perform triangular factorization and solve the upper-triangular and lower triangular matrix by back substitution method.Since det(A) = 2.4883e+07 ≠ 0,there exist a unique solution for AX=B.【实验过程和程序】Code for construct coefficient matrix A:Code for construct matrix B:Solve X by triangular factorization and back substitution method:【实验结果】The result for coefficient matrix:The graph of the polynomial is shown below. Blue lines denotes the graph for the polynomial and red points are the sample points. This polynomial fits the points well.Iterat ion of Linear System’s solution--Seidel iteration姓名:xxxxxx学号:xxxxxxxxxxxx时间:2015年5月28日【题目】(a)Start with P0 = 0 and use Jacobi iteration to find Pk for k = 1, 2, 3. Will Jacobi iteration converge to the solution?(b) Start with P0 = 0 and use Gauss-Seidel iteration to find Pk for k = 1, 2, 3. Will Gauss-Seidel iteration converge to the solution?【实验分析】In this problem we only need to construct the coefficient matrix and matrix B and then apply the Jacobi Iteration method and Gauss-Seidel Iteration method to find the solution. SinceA satisfy strictly diagonally dominant, so the iteration steps will converge.【实验过程和程序】【实验结果】Points in first three iteration is shown below. Both this two method will converge.Interpolation--Spline interpolation姓名:xxxxxx学号:xxxxxxxxxxxx时间:2015年5月28日【题目】The measured temperatures during a 5-hour period in a suburb of Los Angeles on November 8 are given in the following table.(a)To construct a Lagrange interpolatory polynomial for the data in the table.(b)To estimate the average temperature during the given5-hour period.(c)Graph the data in the table and the polynomial frompart (a) on the same coordinate system. Discuss thepossible error that can result from using thepolynomial in part (a) to estimate the averagetemperature.【实验分析】(a)X=[1,2,3,4,5,6] Y=[66,66,65,64,63,63], the target is to construct a Lagrangeinterpolatory polynomial for X and Y. We can apply the Lagrange approximation method to solve it.(b)After we get the interpolatory polynomial, we can use a great amount of samplepoints and estimate the function value of them and take the mean.(c)Error contain in Lagrange interpolatory polynomial of 5-degree is:, where Error on the average temperature equals to the mean of , which is:Error ====240.06【实验过程和程序】(a)Construct X and Y, and solve it by Lagrange approximation:(b)After we get the polynomial function, we calculate function value on a set ofsample points and get their mean as the average temperature.(c)plot X_new and Y_new in part(b) is equivalent to plot P N(x). And error bound canonly be obtain by analyzing since f(x) is unknown.【实验结果】(a) We can get the result:Which means that:(b)By taking the mean, the average temperature is 64.5℉:(c)The graph for polynomial and the sample points is shown below. Error bound forthe average temperature is 240.06.实验题目五Curve Fitting--Least mean square error姓名:xxxxxx学号:xxxxxxxxxxxx时间:2015年5月28日【题目】1.The temperature cycle in a suburb of Los Angeles on November 8 is given in theaccompanying table. There are 24 data points.(a)Follow the procedure outlined in Example5.5 (use the fmins command) to find theleast-squares curve of the form f (x) = Acos(Bx)+C sin(Dx)+ E for the given set ofdata.(b)Determine E2( f ).(c)Plot the data and the least-squares curvefrom part (a) on the same coordinatesystem.【实验分析】(a)In this problem. The hour 1~midnight p.m. can be map to 1~12, 1~noon a.m. canbe map to 13~24. So hour and temperature can be used to fit the curve. To get the curve with minimum error, which is define as:The best A, B, C, D, E can be found when:(b)is defined as:In our case,【实验过程和程序】(a) The function of the error is:Using command, A B C D E can be solved. (b) By the function solved by part(a), we can calculate for each sample pointand then calculate :(c) Code to plot the line:【实验结果】(a)The result for parameter A B C D E is:So the least-squares curve is :(b)Error for f(x) is:(c)Graph for least-squares curve and sample points is:Notice that the result of function fminesarch is sensitive about the input seeds.Firstly the seed is [1 1 1 1 1], and get the result [0.1055 -2.1100 0.9490 -4.869861.0712]. In second step, seed is [0.1 2 1 -5 61] and result is [0.0932 2.11141.175 -5.127 61.0424]. By 4 iterations, I find a good fit of the data and get the seed[1 0.1 1 1 60].Numerical Integration--Automatically select the integration step of the trapezoidal method姓名:xxxxxx学号:xxxxxxxxxxxx时间:2015年5月28日【题目】(i) Approximate each integral using the compositetrapezoidal rule with M = 10.(ii) Approximate each integral using the compositeSimpson rule with M = 5.【实验分析】The formula of each function is given in this problem, so we just need to use composite trapezoidal rule and composite Simpson rule to solve them.【实验过程和程序】Function of the six equations:Code for calculation:【实验结果】Solution of Differential Equations--Euler’s Method and Heun’s Method姓名:xxxxxx学号:xxxxxxxxxxxx时间:2015年5月28日【题目】(Supplement) A skydiver jumps from a plane, and up to the moment he opens theparachute the air resistance is proportional to (v represents velocity). Assume that the time interval is [0,6] and hat the differential equation for the downward direction isover [0,6] with v(0)=0Use Euler’s method with h=0.05 and estimate v(6).【实验分析】The function of , where left end point is 0 and right is 6, with initial point v(0)=0. So we can apply Euler’s method directory to solve the problem.【实验过程和程序】Function of :Code of applying Euler’s method:【实验结果】….,so v(6)=10.0726.。

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

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

简单迭代法#include<stdio.h>#include<math.h>#define x0 3.0#define MAXREPT 1000#define EPS 1E-6#define G(x) pow(12*x+sin(x)-1,1.0/3)void main(){int i;double x_k=x0,x_k1=x0;printf("k\txk\n");for(i=0;i<MAXREPT;i++){printf("%d\t%g\n",i,x_k1);x_k1=G(x_k);if (fabs(x_k1-x_k)<EPS){printf("THE ROOT IS x=%g,k=%d\n",x_k1,i);return;}x_k=x_k1;}printf("AFTER %d repeate,no solved.\n",MAXREPT);}结果牛顿迭代法一#include<stdio.h>#include<math.h>#define x0 3.0#define MAXREPT 1000#define EPS 1E-6#define G(x) x-(pow(x,3)-sin(x)-12*x+1)/(3*pow(x,2)-cos(x)-12) void main(){int i;double x_k=x0,x_k1=x0;printf("k\txk\n");for(i=0;i<MAXREPT;i++){printf("%d\t%g\n",i,x_k1);x_k1=G(x_k);if (fabs(x_k1-x_k)<EPS){printf("THE ROOT IS x=%g,k=%d\n",x_k1,i);return;}x_k=x_k1;}printf("AFTER %d repeate,no solved.\n",MAXREPT);}结果埃特金加速法#include<stdio.h>#include<math.h>#define x0 3.0#define MAXREPT 1000#define EPS 1E-6#define G(x) (pow(x,3)-sin(x)+1)/12void main(){int i;double x1=x0,x2=x0;double z,y;printf("k\tx1\tx2\txk\n");for(i=0;i<MAXREPT;i++){if(i==0)printf("%d\t\t\t%g\n",i,x2);elseprintf("%d\t%g\t%g\t%g\n",i,y,z,x2);y=G(x1);z=G(y);x2=z-((z-y)*(z-y))/(z-2*y+x1);if (fabs(x2-x1)<EPS){printf("THE ROOT IS x=%g,k=%d\n",x2,i);return;}x1=x2;}printf("AFTER %d repeate,no solved.\n",MAXREPT);} 结果牛顿迭代法二#include<stdio.h>#include<math.h>#define x0 1.5#define MAXREPT 1000#define EPS 1E-6#define G(x) x-(pow(x,3)+pow(x,2)-3*x-3)/(3*pow(x,2)+2*x-3) void main(){int i;double x_k=x0,x_k1=x0;printf("k\txk\n");for(i=0;i<MAXREPT;i++){printf("%d\t%g\n",i,x_k1);x_k1=G(x_k);if (fabs(x_k1-x_k)<EPS){printf("THE ROOT IS x=%g,k=%d\n",x_k1,i);return;}x_k=x_k1;}printf("AFTER %d repeate,no solved.\n",MAXREPT);}结果弦截法#include<stdio.h>#include<math.h>#define x0 0#define x1 1.5#define MAXREPT 1000#define EPS 1E-6#define G(x) pow(x,3)+pow(x,2)-3*x-3void main(){int i;double x_k=x0,x_k1=x1,x_k2=0;double y,z;printf("k\txk\n");for(i=0;i<MAXREPT;i++){printf("%d\t%g\n",i,x_k2);y=G(x_k);z=G(x_k1);x_k2=x_k1-(z*(x_k1-x_k))/(z-y);if (fabs(x_k2-x_k1)<EPS){printf("THE ROOT IS x=%g,k=%d\n",x_k2,i);return;}x_k=x_k1;x_k1=x_k2;}printf("AFTER %d repeate,no solved.\n",MAXREPT); } 结果高斯顺序消元法#include<stdio.h>#include<math.h>#define N 4static double aa[N][N+1]={{2,4,0,1,1},{3,8,2,2,3},{1,3,3,0,6},{2,5,2,2,3}}; int gauss(double a[][N+2],double x[]);void putout(double a[][N+2]);void main(){int i,j,det;double a[N+1][N+2],x[N+1];for(i=1;i<=N;i++)for(j=1;j<=N+1;j++)a[i][j]=aa[i-1][j-1];det=gauss(a,x);if(det!=0)for(i=1;i<=N;i++)printf(" x[%d]=%g",i,x[i]);printf("\n");}int gauss(double a[][N+2],double x[]){int i,j,k;double c;putout(a);for(k=1;k<=N-1;k++){ if(fabs(a[k][k])<1e-17){printf("\n pivot element is 0.fail!\n");return 0;}for(i=k+1;i<=N;i++){c=a[i][k]/a[k][k];for(j=k;j<=N+1;j++){a[i][j]=a[i][j]-c*a[k][j];}}putout(a);}if(fabs(a[N][N])<1e-17){printf("\n pivot element is 0.fail!\n");return 0;}for(k=N;k>=1;k--){x[k]=a[k][N+1];for(j=k+1;j<=N;j++){x[k]=x[k]-a[k][j]*x[j];}x[k]=x[k]/a[k][k];}return(1);}void putout(double a[][N+2]){for(int i=1;i<=N;i++){for(int j=1;j<=N+1;j++)printf("%-15g",a[i][j]);printf("\n");}printf("\n");}结果雅克比迭代法#include<stdio.h>#include<math.h>#define N 5#define EPS 0.5e-4static double aa[N][N]={{4,-1,0,-1,0},{-1,4,-1,0,-1},{0,-1,4,-1,0},{-1,0,-1,4,-1},{0,-1,0,-1,4}}; static double bb[N]={2,1,2,1,2};void main(){int i,j,k,NO;double a[N+1][N+1],b[N+1],x[N+1],y[N+1];double d,sum,max;for(i=1;i<=N;i++){for(j=1;j<=N;j++)a[i][j]=aa[i-1][j-1];b[i]=bb[i-1];}printf("\n 请输入最大迭代次数(尽量取大值!)NO:");scanf("%d",&NO);printf("\n");for(i=1;i<=N;i++)x[i]=0;k=0;printf(" k",' ');for(i=1;i<=N;i++)printf("%8cx[%d]",' ',i);printf("\n 0");for(i=1;i<=N;i++)printf("%12.8g",x[i]);printf("\n");do{for(i=1;i<=N;i++){sum=0.0;for(j=1;j<=N;j++)if(j!=i) sum=sum+a[i][j]*x[j];y[i]=(-sum+b[i])/a[i][i];}max=0.0;for(i=0;i<=N;i++){d=fabs(y[i]-x[i]);if(max<d) max=d;x[i]=y[i];}printf("%6d",k+1);for(i=1;i<=N;i++)printf("%12.8g",x[i]);printf("\n");k++;}while((max>=EPS)&&(k<NO));printf("\nk=%d\n",k);if(k>=NO) printf("\nfail!\n");elsefor(i=1;i<=N;i++)printf("x[%d]=%g\t",i,x[i]);}结果拉格朗日插值多项式#include<stdio.h>#include<math.h>#define N 4doublex[N]={0.56160,0.56280,0.56401,0.56521},y[N]={0.82741,0.82659,0.82577,0.82495}; void main(){double x=0.5635;double L(double xx);double lagBasis(int k,double xx);void output();output();printf("\n近似值L(%g)=%g\n",x,L(x));}double lagBasis(int k,double xx){double lb=1;int i;for(i=0;i<N;i++)if(i!=k) lb*=(xx-x[i])/(x[k]-x[i]);return lb;}double L(double xx){double s=0;int i;for(i=0;i<=N;i++)s+=lagBasis(i,xx)*y[i];return s;}void output(){int i;printf("\n各节点信息:\nxi:");for(i=0;i<N;i++)printf("\t%g",x[i]);printf("\nyi:");for(i=0;i<N;i++)printf("\t%g",y[i]);}结果牛顿插值多项式#include <math.h>#include <stdio.h>int a;#define M 4double x[M+1]={0.4,0.55,0.65,0.8,0.9},y[M+1]={0.41075,0.57815,0.69675,0.88811,1.02652}; void main(){double x;printf("输入x=");scanf("%lf",&x);printf("次数:");scanf("%d",&a);double N(double xx,int a);void output();output();printf("\n%d次牛顿插值多项式N(%g)=%g\n",a,x,N(x,a));}double N(double xx,int a){double s=y[0],d=1;int i,j;double df[M+1][M+1];for(i=0;i<=M;i++)df[i][0]=y[i];for(j=1;j<=a;j++)for(i=j;i<=a;i++)df[i][j]=(df[i][j-1]-df[i-1][j-1])/(x[i]-x[i-j]);printf("\nx\tf(x)\t");for(j=1;j<=a;j++) printf("%5d阶",j);for(i=0;i<=a;i++){printf("\n%g\t%g",x[i],y[i]);for(j=1;j<=i;j++)printf("\t%7.5g",df[i][j]);}for(i=1;i<=a;i++){d*=(xx-x[i-1]);s+=df[i][i]*d;}return s;}void output(){int i;printf("\n各节点信息:\nxi:");for(i=0;i<=M;i++)printf("\t%7g",x[i]);printf("\nyi:");for(i=0;i<=M;i++)printf("\t%7g",y[i]);}结果复合梯形公式#include<stdio.h>#include<math.h>#define f(x) 1/(x*x+1)#define Pi 3.1415926void main(){double a=0,b=1;double T,h,x;int n,i;printf("please input n:");scanf("%d",&n);h=(b-a)/n;x=a;T=0;for(i=1;i<n;i++){x+=h;T+=f(x);}T=(f(a)+2*T+f(b))*h/2;printf("T(%d)=%g\n",n,T);printf("The exact value is %g\n",Pi/4);}复合辛普森公式#include<stdio.h>#include<math.h>#define f(x) 1/(1+x*x)#define Pi 3.1415926void main(){double a=0,b=1;double S,h,x;int n,i;printf("please input Even n:");scanf("%d",&n);h=(b-a)/n;x=a; S=0;for(i=1;i<n;i++){x+=h;if(i%2==0) S+=2*f(x);else S+=4*f(x);}S=(f(a)+S+f(b))*h/3;printf("S(%d)=%g\n",n,S);printf("The exact value is %g\n",Pi/4);}龙贝格公式加速#include<stdio.h>#include<math.h>#define f(x) sin(x)/(1+x)#define M 3void main(){double a=0,b=1;double Long(double a,double b);printf("近似值I=%g\n",Long(a,b));}double Long(double a,double b){int n=1,i=1,j=1;double T[M+1][M+1],h,x,sum;h=b-a;T[0][0]=(f(a)+f(b))/2;for(j=1;j<=3;j++){x=a;h/=2;n*=2;sum=0;for(i=1;i<=n;i+=2){x=a+i*h;sum+=f(x);}T[j][0]=T[j-1][0]/2+h*sum;}for(i=1;i<=M;i++)for(j=1;j<=i;j++){T[i][j]=(pow(4,j)*T[i][j-1]-T[i-1][j-1])/(pow(4,j)-1);}printf("k\tT0\tT1\tT2\tT3\n");for(i=0;i<=M;i++){printf("%d",i);for(j=0;j<=i;j++)printf(" %g",T[i][j]);printf("\n");}return T[M][M];}。

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