计算方法实验.

合集下载

计算方法实验报告册

计算方法实验报告册

实验一——插值方法实验学时:4实验类型:设计 实验要求:必修一 实验目的通过本次上机实习,能够进一步加深对各种插值算法的理解;学会使用用三种类型的插值函数的数学模型、基本算法,结合相应软件(如VC/VB/Delphi/Matlab/JAVA/Turbo C )编程实现数值方法的求解。

并用该软件的绘图功能来显示插值函数,使其计算结果更加直观和形象化。

二 实验内容通过程序求出插值函数的表达式是比较麻烦的,常用的方法是描出插值曲线上尽量密集的有限个采样点,并用这有限个采样点的连线,即折线,近似插值曲线。

取点越密集,所得折线就越逼近理论上的插值曲线。

本实验中将所取的点的横坐标存放于动态数组[]X n 中,通过插值方法计算得到的对应纵坐标存放于动态数组[]Y n 中。

以Visual C++.Net 2005为例。

本实验将Lagrange 插值、Newton 插值和三次样条插值实现为一个C++类CInterpolation ,并在Button 单击事件中调用该类相应函数,得出插值结果并画出图像。

CInterpolation 类为 class CInterpolation { public :CInterpolation();//构造函数CInterpolation(float *x1, float *y1, int n1);//结点横坐标、纵坐标、下标上限 ~ CInterpolation();//析构函数 ………… …………int n, N;//结点下标上限,采样点下标上限float *x, *y, *X;//分别存放结点横坐标、结点纵坐标、采样点横坐标float *p_H,*p_Alpha,*p_Beta,*p_a,*p_b,*p_c,*p_d,*p_m;//样条插值用到的公有指针,分别存放i h ,i α,i β,i a ,i b ,i c ,i d 和i m};其中,有参数的构造函数为CInterpolation(float *x1, float *y1, int n1) {//动态数组x1,y1中存放结点的横、纵坐标,n1是结点下标上限(即n1+1个结点) n=n1;N=x1[n]-x1[0]; X=new float [N+1]; x=new float [n+1]; y=new float [n+1];for (int i=0;i<=n;i++) {x[i]=x1[i]; y[i]=y1[i]; }for (int i=0;i<=N;i++) X[i]=x[0]+i; }2.1 Lagrange 插值()()nn i i i P x y l x ==∑,其中0,()nj i j j ni jx x l x x x =≠-=-∏对于一个自变量x ,要求插值函数值()n P x ,首先需要计算对应的Lagrange 插值基函数值()i l x float l(float xv,int i) //求插值基函数()i l x 的值 {float t=1;for (int j=0;j<=n;j++) if (j!=i)t=t*(xv-x[j])/(x[i]-x[j]); return t; }调用函数l(float x,int i),可求出()n P xfloat p_l(float x) //求()n P x 在一个点的插值结果 {float t=0;for (int i=0;i<=n;i++) t+=y[i]*l(x,i); return t; }调用p_l(float x)可实现整个区间的插值float *Lagrange() //求整个插值区间上所有采样点的插值结果 {float *Y=new float [N+1]; for (int k=0;k<=N;k++) Y[k]=p_l(x[0]+k*h); return Y; } 2.2Newton 插值010()(,,)()nn i i i P x f x x x x ω==∑,其中101,0()(),0i i j j i x x x i ω-==⎧⎪=⎨-≠⎪⎩∏,0100,()(,,)()ik i nk k j j j kf x f x x x x x ==≠=-∑∏对于一个自变量x ,要求插值函数值()n P x ,首先需要计算出01(,,)i f x x x 和()i x ωfloat *f() {//该函数的返回值是一个长度为n +1的动态数组,存放各阶差商 }float w(float x, int i) {//该函数计算()i x ω }在求()n P x 的函数中调用*f()得到各阶差商,然后在循环中调用w(float x)可得出插值结果 float p_n(float x) {//该函数计算()n P x 在一点的值 }调用p_n(float x)可实现整个区间的插值 float *Newton() {//该函数计算出插值区间内所有点的值 }2.3 三次样条插值三次样条插值程序可分为以下四步编写: (1) 计算结点间的步长i hi 、i α、i β;(2) 利用i hi 、i α、i β产生三对角方程组的系数矩阵和常数向量; (3) 通过求解三对角方程组,得出中间结点的导数i m ; (4) 对自变量x ,在对应区间1[,]i i x x +上,使用Hermite 插值; (5)调用上述函数,实现样条插值。

数值计算方法实验报告

数值计算方法实验报告

数值计算方法实验报告实验目的:通过实验验证不同数值计算方法在求解数学问题时的精度和效率,并分析其优缺点。

实验原理:实验内容:本实验选取了三个典型的数值计算问题,并分别采用了二分法、牛顿迭代法和梯度下降法进行求解。

具体问题和求解方法如下:1. 问题一:求解方程sin(x)=0的解。

-二分法:利用函数值的符号变化将解空间不断缩小,直到找到满足精度要求的解。

-牛顿迭代法:通过使用函数的斜率来逼近方程的解,并不断逼近真实解。

-梯度下降法:将方程转化为一个极小化问题,并利用梯度下降的方式逼近极小值点,进而找到方程的解。

2.问题二:求解函数f(x)=x^2-3x+2的极小值点。

-二分法:通过确定函数在一个区间内的变化趋势,将极小值所在的区间不断缩小,从而找到极小值点。

-牛顿迭代法:通过使用函数的导数和二阶导数来逼近极小值点,并不断逼近真实解。

-梯度下降法:将函数转化为一个极小化问题,并利用梯度下降的方式逼近极小值点,进而找到函数的极小值点。

3. 问题三:求解微分方程dy/dx = -0.1*y的解。

-二分法:通过离散化微分方程,将微分方程转化为一个差分方程,然后通过迭代计算不同点的函数值,从而得到函数的近似解。

-牛顿迭代法:将微分方程转化为一个积分方程,并通过迭代计算得到不同点的函数值,从而得到函数的近似解。

-梯度下降法:将微分方程转化为一个极小化问题,并利用梯度下降的方式逼近极小值点,从而得到函数的近似解。

实验步骤:1.编写代码实现各个数值计算方法的求解过程。

2.对每个数值计算问题,设置合适的初始值和终止条件。

3.运行程序,记录求解过程中的迭代次数和每次迭代的结果。

4.比较不同数值计算方法的精度和效率,并分析其优缺点。

实验结果:经过实验测试,得到了如下结果:-问题一的二分法迭代次数为10次,求解结果为x=0;牛顿迭代法迭代次数为4次,求解结果为x=0;梯度下降法迭代次数为6次,求解结果为x=0。

-问题二的二分法迭代次数为10次,求解结果为x=1;牛顿迭代法迭代次数为3次,求解结果为x=1;梯度下降法迭代次数为4次,求解结果为x=1-问题三的二分法迭代次数为100次,求解结果为y=e^(-0.1x);牛顿迭代法迭代次数为5次,求解结果为y=e^(-0.1x);梯度下降法迭代次数为10次,求解结果为y=e^(-0.1x)。

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

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

计算方法与实习实验报告学院:电气工程学院指导老师:***班级:160093******学号:********实习题一实验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.输入节点的个数n2.输入各个节点的横纵坐标3.输入插值点4.调用函数,返回z函数语句与形参说明程序源代码如下:#include<iostream>#include<math.h>using namespace std;#define N 100double 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= "<<endl;for(i=0;i<n;i++)cin>>x[i];cout<<"please input xiangliang y= "<<endl;for(i=0;i<n;i++)cin>>y[i];cout<<"please input LagelangrichazhiJieDian p= "<<endl;cin>>p;cout<<"The Answer= "<<fun(x,y,n,p)<<endl;system("pause") ;}double fun(double x[],double y[], int n,double p){double z=0,s=1.0;int k=0,i=0;double L[N];while(k<n){ if(k==0){ for(i=1;i<n;i++)s=s*(p-x[i])/(x[0]-x[i]);L[0]=s*y[0];k=k+1;}else{s=1.0;for(i=0;i<=k-1;i++)s=s*((p-x[i])/(x[k]-x[i]));for(i=k+1;i<n;i++) s=s*((p-x[i])/(x[k]-x[i]));L[k]=s*y[k];k++;}}for(i=0;i<n;i++)z=z+L[i];return z;}五.实验分析n=2时,为一次插值,即线性插值n=3时,为二次插值,即抛物线插值n=1,此时只有一个节点,插值点的值就是该节点的函数值n<1时,结果都是返回0的;这里做了n=0和n=-7两种情况3<n<100时,也都有相应的答案常用的是线性插值和抛物线插值,显然,抛物线精度相对高些n次插值多项式Ln(x)通常是次数为n的多项式,特殊情况可能次数小于n.例如:通过三点的二次插值多项式L2(x),如果三点共线,则y=L2(x)就是一条直线,而不是抛物线,这时L2(x)是一次式。

计算方法实验:方程求根

计算方法实验:方程求根

实验一 方程求根一、实验目的用不同方法求任意实函数方程f (x )=0在自变量区间[a ,b]内或某一点附近的实根,并比较方法的优劣性。

二、实验方法 (1)二分法对方程f (x )=0在[a ,b]内求根。

将所给区间二等分,在二分点x=(b-a)/2处判断是否f (x )=0。

若是,则有根x=(b-a)/2;否则继续判断是否f(a)·f(b)<0,若是,则令b=x ,否则令a=x 。

重复此过程,直至求出方程f(x)=0在[a ,b]内的近似根为止。

(2)迭代法将方程f (x )=0等价变换为x=φ(x )的形式并建立相应的近似根为止。

(3)牛顿法设已知方程f (x )=0的一个近似根x 0,则函数f (x )在点x 0附近可用一阶泰勒多项式p 1(x )=f (x 0)+f ’(x 0)(x-x 0)来近似,因此方程f (x )=0可近似表示为f (x 0)+f ’(x 0)(x-x 0)=0。

设f ’(x 0)≠0,则 x=x 0-f (x 0)/’f (x 0)取x 作为原方程新的近似根x 1,然后再将x 1作为x 0代入上式。

迭代公式为 x k+1=x k -f (x k )/f ’(x k )三、实验内容1)在区间[0,1]内用二分法求方程e x +10x-2=0的近似根,要求误差不超过0.5×10-3。

2)取初值x0=0,用迭代公式x k+1=(2-e x k )/10,(k=0,1,2,…)求方程e x + 10x-2=0的近似根,要求误差不超过0.5×10-3。

3)取初值x 0=0用牛顿迭代法求方程e x + 10x-2=0的近似根,要求误差不超过0.5×10-3。

四、实验程序 (1)二分法(2)迭代法(3)牛顿法五、实验结果(仅供参考)(1)x11=0.09033 (2)x5=0.09052 (3)x2=0.09052六、结果分析由上面的对二分法、迭代法、牛顿法三种方法的三次实验结果,我们可以得出这样的结论:二分法要循环k=10次,迭代法要迭代k=4次,牛顿法要迭代k=2次才能达到精度为0.5×10-3的要求,而且方程e x+10x-2=0的精确解经计算,为0.0905250,由此可知,牛顿法和迭代法的精确度要优越于二分法。

计算方法实验一-二分法

计算方法实验一-二分法

学院 长望学院 专业 大气科学实验班 年级 班次 1 姓名 仙女 学号1. 引言-问题重述问题一要求对方程3()250f x x x =--=,用二分法,至少找到一个根,并展示一下信息:(a )近似根(b )初始猜测(区间)(c )迭代次数(d )停止准则(3)收敛速度 问题二要求用二分法求出以下两个方程的近似根:(a )5()10f x x x =--=,(b )22520x e x -+=.2. 数学公式-数值方法和参数定义二分法求根原理为:若[,]f C a b ∈,严格单调,且()()0f a f b <g ,则f 在(,)a b 上有一实根。

其基本思想为:逐步将区间分半,计算中点处的函数值,根据介值定理选择比原区间缩小一半的有根区间,如此继续下去,直到得到满足精度要求,从而求出满足给定精度的根的近似值。

针对问题一,本文根据方程,定义函数f(x)=a*x*x*x+b*x*x+c*x+d=0,其中,,,a b c d 为各项系数;精度16eps e =-;,m n 分别为求根区间的左右端点,即收敛区间[,]m n ;i 为近似根;v 为收敛速度,count 为当前迭代次数。

其中,count 为单精度int 类型,其余均为双精度double 类型。

基于以上参数定义,设置收敛准则为:当根和函数值的精度小于所设置精度时,结束循环,并输出收敛区间、迭代次数、近似根以及收敛速度。

具体表现为:每进行一次循环视近似根i 的相对位置对收敛区间进行修正,同时对迭代次数+1;收敛速度可通过下式计算:11n n n n x x v x x +--=-. 针对问题二(a )在问题一的基础上,更改方程f(x)=a*x*x*x+b*x*x+c*x+d=0的系数以及相关项即可求得相应结果。

对于(b )将方程改为:exp(2*x)-5*x*x+20=。

3. 数值实验-讨论和分析数值结果针对方程3()250f x x x =--=,首先对其求导,判断单调性,再进行需略估算,发现(2)(3)0f f <g ,于是设置初始收敛区间为[2,3],进而通过二分法求得结果如图1。

计算方法非线性方程求根实验

计算方法非线性方程求根实验
1.用迭代法解方程: f ( x) − ln( x + 2) = 0。 #include "iostream.h" #include "math.h" inline double fun1(double x) { return log(x+2); } inline double fun2(double x) { return exp(x)-2; } double ER(double x,double y,double e,double (*p) (double)) { double xy=p(x),dis=fabs(xy-x); while(dis>e && xy>x && xy<y) { x=xy; xy=p(x); } return xy; } void main() { double a1=1,b1=2,a2=-1.9,b2=-1; double (*p)(double); double m=0.5*pow(10,-6); p=fun1; double f1=ER(a1,b1,m,p); p=fun2; double f2=ER(a2,b2,m,p); cout<<"f1="<<f1<<endl; cout<<"f2="<<f2<<endl; } 2.用牛顿迭代公式计算 26 的近似值。 #include "iostream.h" #include "math.h" void main() {
f (a ) ⋅ f (b) < 0 ;又设 f ( x) 的一个零点 x* ∈ (a, b) 的近似值 (设f ′( x0 ) ≠ 0) 。用过曲

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

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

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

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

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

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

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

牛顿下山公式:)()(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 迭代算法流程图实验二 高斯-塞德尔迭代法实验说明:线性方程组大致分迭代法和直接法。

计算方法实验报告

计算方法实验报告

实验一:误差传播与算法稳定性实验目的:体会稳定性在选择算法中的地位。

实验内容:考虑一个简单的由积分定义的序列10I ,0,1,10nn x dx n a x==+⎰其中a 为参数,分别对0.05a =及15a =按下列两种方法计算。

方案1:用递推公式11,1,2,,10n n I aI n n-=-+= 递推初值可由积分直接得01lna I a+= 方案2:用递推公式111(),,1,,1n n I I n N N a n-=-+=-根据估计式当1n a n ≥+时,11(1)(1)(1)n I a n a n <<+++或当01n a n ≤<+时,11(1)(1)n I a n n<≤++ 取递推初值 当1n a n ≥+时, 11121()2(1)(1)(1)2(1)(1)N N a I I a N a N a a N +≈+=+++++ 当01n a n ≤<+时,111()2(1)(1)N N I I a N N≈+++ 实验要求:列出结果,并对其稳定性进行分析比较,说明原因。

实验二:非线性方程数值解法实验目的:探讨不同方法的计算效果和各自特点 实验内容:应用算法(1)牛顿法;(2)割线法 实验要求:(1)用上述各种方法,分别计算下面的两个例子。

在达到精度相同的前提下,比较其迭代次数。

(I )31080x x +-=,取00x =;(II) 2281(0.1)sin 1.060x x x -+++=,取00x =;(2) 取其它的初值0x ,结果如何?反复选取不同的初值,比较其结果; (3) 总结归纳你的实验结果,试说明各种方法的特点。

实验三:选主元高斯消去法----主元的选取与算法的稳定性问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。

但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。

计算方法实验报告 拟合

计算方法实验报告 拟合

南京信息工程大学实验(实习)报告
一、实验目的:
用最小二乘法将给定的十个点拟合成三次多项式。

二、实验步骤:
用matlab编制以函数为基的多项式最小二乘拟合程序,并用于对下列数据作三次多项式最小二乘拟合(取权函数wi=1)
给定直线方程为:y=1/4*x3+1/2*x2+x+1
三、实验结论:
最小二乘法:通过最小化误差的平方和寻找数据的最佳函数匹配。

利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。

最小二乘法还可用于曲线拟合。

一般地。

当测量数据的散布图无明显的规律时,习惯上取n次代数多项式。

程序运行结果为:
a =
0.9731
1.1023
0.4862
0.2238
即拟合的三次方程为:y=0.9731+1.1023x+0.4862*x2+0.2238*x3
x 轴
y 轴
拟合图
结论:
一般情况下,拟合函数使得所有的残差为零是不可能的。

由图形可以看出最小二乘解决了残差的正负相互抵消的问题,使得拟合函数更加密合实验数据。

优点:曲线拟合是使拟合函数和一系列的离散点与观测值的偏差平方和达到最小。

缺点:由于计算方法简单,若要保证数据的精确度,需要大量的数据代入计算。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

数值计算方法实验报告

数值计算方法实验报告

数值计算方法实验报告一、实验目的本实验旨在通过Python语言编写数值计算方法程序,掌握常见数值计算方法的实现原理及应用。

具体包括:插值法、最小二乘法、数值微积分、数值解方程、数值解微分方程等。

二、实验环境Python编程语言、Jupyter Notebook环境三、实验内容1.插值法(1)代码实现:在Python中使用Scipy库中的Interpolate模块实现拉格朗日插值法和牛顿插值法,并通过数据可视化展示其效果。

(2)实验步骤:- 导入所需库,准备所需数据;- 定义拉格朗日插值法函数;- 定义牛顿插值法函数;- 测试函数并可视化结果。

(3)实验结果:2.最小二乘法(1)代码实现:在Python中使用Numpy库实现最小二乘法,并通过数据可视化展示其效果。

(2)实验步骤:- 导入所需库,准备所需数据;- 定义最小二乘法函数;- 测试函数并可视化结果。

(3)实验结果:3.数值微积分(1)代码实现:在Python中实现梯形法和辛普森法,并通过数据可视化展示其效果。

(2)实验步骤:- 导入所需库,准备所需数据;- 定义梯形法函数和辛普森法函数;- 测试函数并可视化结果。

(3)实验结果:4.数值解方程(1)代码实现:在Python中实现二分法、牛顿法和割线法,并通过数据可视化展示其效果。

(2)实验步骤:- 导入所需库,准备所需数据;- 定义二分法函数、牛顿法函数和割线法函数;- 测试函数并可视化结果。

(3)实验结果:5.数值解微分方程(1)代码实现:在Python中实现欧拉法和龙格-库塔法,并通过数据可视化展示其效果。

(2)实验步骤:- 导入所需库,准备所需数据;- 定义欧拉法函数和龙格-库塔法函数;- 测试函数并可视化结果。

(3)实验结果:四、实验总结通过本次实验,我学习了数值计算方法的常用算法和实现原理,掌握了Python 语言实现数值计算方法的方法,加深了对数值计算方法的理解和应用。

实验中遇到的问题,我通过查找资料和与同学的讨论得到了解决,也更加熟练地掌握了Python语言的使用。

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

《计算方法》实验报告材料
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;

数值计算方法实验报告

数值计算方法实验报告

数值计算方法实验报告数值计算方法实验报告引言:数值计算方法是一种通过数学模型和计算机算法来解决实际问题的方法。

在科学研究和工程应用中,数值计算方法被广泛应用于求解方程、优化问题、模拟仿真等领域。

本实验报告将介绍数值计算方法的基本原理和实验结果。

一、二分法求根二分法是一种通过不断折半缩小搜索区间来求解方程根的方法。

在实验中,我们选取了一个简单的方程f(x) = x^2 - 4 = 0来进行求根实验。

通过不断将搜索区间进行二分,我们可以逐步逼近方程的根。

实验结果表明,通过二分法,我们可以得到方程的根为x = 2。

二、牛顿迭代法求根牛顿迭代法是一种通过不断逼近方程根的方法。

在实验中,我们同样选取了方程f(x) = x^2 - 4 = 0进行求根实验。

牛顿迭代法的基本思想是通过对方程进行线性近似,求得近似解,并不断迭代逼近方程的根。

实验结果表明,通过牛顿迭代法,我们可以得到方程的根为x = 2。

三、高斯消元法求解线性方程组高斯消元法是一种通过变换线性方程组的系数矩阵,将其化为上三角矩阵的方法。

在实验中,我们选取了一个简单的线性方程组进行求解实验。

通过对系数矩阵进行行变换,我们可以将其化为上三角矩阵,并通过回代求解得到方程组的解。

实验结果表明,通过高斯消元法,我们可以得到线性方程组的解为x = 1,y = 2,z = 3。

四、插值与拟合插值与拟合是一种通过已知数据点来构造函数模型的方法。

在实验中,我们选取了一组数据点进行插值与拟合实验。

通过拉格朗日插值多项式和最小二乘法拟合,我们可以得到数据点之间的函数模型。

实验结果表明,通过插值与拟合,我们可以得到数据点之间的函数关系,并可以通过该函数模型来进行预测和拟合。

结论:数值计算方法是一种通过数学模型和计算机算法来解决实际问题的方法。

通过本次实验,我们学习了二分法求根、牛顿迭代法求根、高斯消元法求解线性方程组以及插值与拟合的基本原理和应用。

这些方法在科学研究和工程应用中具有广泛的应用前景。

《计算方法实验》课件

《计算方法实验》课件
《计算方法实验》PPT课 件
计算方法实验 PPT 课件
实验介绍
实验安排
详细介绍了实验进行的时间安排和实验室要求。
实验目的
阐述了学习计算方法实验的重要目标和价值。
实验内容概述
概括性地介绍了实验涉及的主要内容和操作。
计算方法基础知识回顾
数值计算方法概述
概括了数值计算方法的定义和应用领域。
插值法简介
解释了插值法在数值计算中的作用和原理。
1 实验步骤
具体描述了进行插值法实验的步骤和操作流程。
2 实验要求
列举了完成实验所需的前置条件和要求。
3 实验结果和分析
总结了实验结果并给出了相关数据的分析和解释。
实验三:数值微积分实验
1 实验步骤
具体说明了进行数值微 积分实验的步骤和具体 操作。
2 实验要求
概述了完成实验所需的 前提条件和技术要求。
其他资料
介绍了一些其他有关计算方法实验的相关资料和参考。
3 实验结果和分析
总结了实验的结果,并 进行了相应数据分析和 解读。
实验总结
实验心得
分享了在完成实验过程中 的感悟和收获。
实验成果展示
展示了实验中获得的数据 和图表等成果知识和技能。
参考资料
书籍
推荐了一些计算方法方面的经典教材和参考书籍。
网络资源
提供了一些在线学习计算方法实验的优质网站和资源。
矩阵运算基础
介绍了矩阵的基本运算规则和重要性。
数值微积分概述
回顾了数值微积分的基本概念和计算方法。
实验一:矩阵运算实验
1 实验步骤
详细说明了进行矩阵运 算实验的步骤和操作。
2 实验要求
列出了完成实验所需的 前提条件和要求。

数值计算方法实验报告

数值计算方法实验报告

数值计算方法实验报告一、实验目的本实验旨在通过数值计算方法的实验操作,深入理解数值计算方法的原理与应用,掌握数值计算方法的相关技能,提高数值计算方法的实际应用能力。

二、实验内容1.数值微积分2.数值代数3.数值微分方程4.数值线性代数5.数值优化6.数值统计分析7.数值随机模拟8.数值傅立叶分析9.数值偏微分方程三、实验步骤1.数值微积分:通过不同的数值积分方法,计算给定函数的定积分值,并对不同数值积分方法的误差进行分析。

2.数值代数:通过使用线性代数方法,求解给定的线性方程组,并分析不同线性方程组求解方法的优劣。

3.数值微分方程:通过使用常微分方程数值解法,求解给定的微分方程,并比较不同求解方法的精度和稳定性。

4.数值线性代数:通过使用特征值分解方法,对给定的矩阵进行特征值分解,并分析不同特征值分解方法的优缺点。

5.数值优化:通过使用不同的优化方法,求解给定的优化问题,并比较不同的优化方法的效率和精度。

6.数值统计分析:通过使用不同的统计分析方法,对给定的数据进行统计分析,并分析不同的统计方法的优缺点。

7.数值随机模拟:通过使用随机模拟方法,模拟给定的概率分布,并分析不同随机模拟方法的效率和精度。

8.数值傅立叶分析:通过使用傅立叶分析方法,对给定的信号进行频谱分析,并分析不同的傅立叶分析方法的优缺点。

9.数值偏微分方程:通过使用偏微分方程数值解法,求解给定的偏微分方程,并比较不同求解方法的精度和稳定性。

四、实验结果与分析本实验中,通过对不同的数值计算方法的实验操作,我们可以更深入地理解数值计算方法的原理与应用,并掌握数值计算方法的相关技能,提高数值计算方法的实际应用能力。

同时,通过实验结果的分析,我们可以更好地比较不同数值计算方法的优缺点,为实际应用提供参考依据。

五、实验总结本实验旨在通过数值计算方法的实验操作,深入理解数值计算方法的原理与应用,掌握数值计算方法的相关技能,提高数值计算方法的实际应用能力。

计算方法实验四

计算方法实验四

《计算方法》实验指导用书班级B材控181姓名学号1801011210教师刘聪盐城工学院机械工程学院实验四 解方程组的直接法一、 实验目的用高斯消去法解线性方程组Ax b =。

式中,A 为n 阶非奇异方阵,,x b 是n 阶列向量,并分析选主元的重要性。

二、 实验方法(1) 顺序消元法通过变换,将系数矩阵转换成等价的上三角形矩阵,经过回代求出方程组的解。

(2) 列主元消元法在第i 步时,首先将()ij a j i <化为0。

在第i 列余下的()ij a j i ≥中选择绝对值最大的元素作为主元,且把它所在的行和第i 行交换,同时将列下标的交换记录下来。

其次将()ki a k i <化为0,然后利用回代公式()(),1,1,,1nk k i i i jj j i x b ax i n n =+=-=-∑进行回代,求出方程组的解。

三、 实验内容解方程组:12341.1348 3.83261.16513.40179.53420.5301 1.7875 2.5330 1.5435 6.39413.41294.93178.7643 1.314218.42311.2371 4.999810.67210.014716.9237x x x x ⎛⎫⎛⎫⎛⎫⎪⎪ ⎪⎪ ⎪ ⎪=⎪ ⎪ ⎪⎪⎪ ⎪⎝⎭⎝⎭⎝⎭ 四、 实验程序(1)顺序高斯消元法函数function x=DelGauss(a,b) % Gauss 消去法 [n,m]=size(a); nb=length(b); det=1; %存储行列式值 x= zeros(n,1); for k=1:n-1. for i=k+1 :n if a(k,k)==0 return ; endm=a(i,k)/a(k,k); for j=k+1:na(i,j)=a(i,j)-m*a(k,j); endb(i)=b(i)-m*b(k); enddet=det*a(k,k); %计算行列式 enddet=det*a(n,n);for k=n:-1:1 % 回代求解for j=k+1:nb(k)=b(k)-a(k,j)*x(j);endx(k)=b(k)/a(k,k);end顺序高斯消元法运行程序a=[1.1348 3.8326 1.1651 3.4017;0.5301 1.7875 2.5330 1.5435;3.41294.9317 8.7643 1.3142;1.2371 4.9998 10.6721 0.0147];b=[9.5342;6.3941;18.4231;16.9237];x=DelGauss(a,b)(2)列主元高斯消元法函数function x=agui_Guass(a,b)%列主元素高斯消去法解方程组ax=bn=length(b);a=[a,b];for k=1:(n-1)%选主元素[~,r]=max(abs(a(k:n,k)));r=r+k-1;if r>kt=a(k,:);a(k,:)=a(r,:);a(r,:)=t;end%消元a((k+1):n,(k+1):(n+1))=a((k+1):n,(k+1):(n+1))-a((k+1):n,k)/a(k,k)*a(k,(k+1):(n+1) );a((k+1):n,k)=zeros(n-k,1);a;end%回代x=zeros(n,1);x(n)=a(n,n+1)/a(n,n);for k=n-1:-1:1x(k,:)=(a(k,n+1)-a(k,n+1)-a(k,(k+1):n)*x((k+1):n))/a(k,k);end列主元高斯消元法程序a=[1.1348 3.8326 1.1651 3.4017;0.5301 1.7875 2.5330 1.5435;3.4129 4.9317 8.7643 1.3142;1.2371 4.9998 10.6721 0.0147];b=[9.5342;6.3941;18.4231;16.9237]; x=agui_Guass(a,b)五、实验结果六、结果分析。

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

计算方法实验指导姓名______________学号______________院系______________专业______________哈尔滨工业大学计算方法实验指导根据实际问题建立的数学模型,一般不能求出所谓的解析解,必须针对数学模型的特点确定适当的计算方法,编制出计算机能够执行的计算程序,输入计算机,进行调试,完成运算,如果计算结果存在问题或不知是否正确,还需要重新确定新的计算方法,再编制出计算程序,输入计算机,重新调试,完成运算,直至获得正确的计算结果,这就是数值计算的全部过程。

学生在学习“计算方法”和“高级语言”等课程时普遍存在的问题是:只会套用教科书中的标准程序进行数值计算,很少有人能够独立地将学过的数值算法编制成计算机程序,至于灵活应用已经掌握的算法求解综合性较大的课题,则更是困难的事情。

编写《计算方法实验指导》的目的是:突出数值计算程序结构化的思想。

提高学生的编程能力,加深对“计算方法”课程内容的理解和掌握,为”计算方法“课程的教学服务,进一步奠定从事数值计算工作的基础。

具体地1.根据“计算方法”课程内容的特点,给出五个典型算法的分析流程,学生可以利用所掌握的“高级语言”顺利地编制出计算机程序,上机实习,完成实验环节的教学要求。

2.所有的计算实习题目都经过任课教师逐一检验,准确无误。

3.充分利用循环的思想、迭代的思想,给出算法结构描述和程序语言的对应关系,有利于学生编制相应的程序。

4.结合实习题目,提出实验要求,要求学生按规范格式写出相应的实验报告,实验报告成绩记入期末总成绩。

需要提醒学生:不能简单地套用现成的标准程序完成实验题目,应当把重点放在对算法的理解、程序的优化设计、上机调试和计算结果分析上,否则就失去实验课的目的啦。

5. 五个具体的实验题目是:实验题目1拉格朗日(Lagrange)插值实验题目2龙贝格(Romberg)积分法实验题目3四阶龙格—库塔(Runge —Kutta)方法实验题目4牛顿(Newton)迭代法实验题目5高斯(Gauss)列主元消去法要求必须完成其中三个(如果全部完成更好)。

实验题目1 拉格朗日(Lagrange)插值方法概要:给定平面上1n +个不同的数据点(,())k k x f x ,0,1,,k n =L ,i j x x ≠,i j ≠;则满足条件()()n k k P x f x =,0,1,,k n =L的n 次拉格朗日插值多项式是存在唯一的。

若[,],0,1,,k x a b k n ∈=L ,且函数()f x 充分光滑,则当[,]x a b ∈时,有误差估计式(1)01()()()()()()(1)!n n n f f x P x x x x x x x n ξ+-=---+L ,[,]a b ξ∈ 拉格朗日插值算法实验实验目的:利用拉格朗日插值多项式()n P x 求()f x 的近似值输 入:1n +个数据点(,())k k x f x ,0,1,,k n =L ;插值点x输 出:()f x 在插值点x 的近似值()n P x程序流程:1 置0.0y =;0k =2 当k n ≤时,做2.1—2.42.1 置 1.0l =;2.2 对0,1,,1,1,,j k k n =-+L L ,置()/()j k j l l x x x x =⋅--2.3 置()k y y l f x =+⋅2.4 置1k k =+3 输出,x y4 停机问题1 拉格朗日插值多项式的次数n 越大越好吗?考虑下面两个拉格朗日插值问题:(1)设21()1f x x =+,[5,5]x ∈-,考虑等距节点的拉格朗日插值多项式()n P x ,即将区间[5,5]-进行n 等分,记10.0h n =, 5.0k x k h =-+⋅,0,1,,k n =L ,构造()n P x ,利用拉格朗日插值多项式()n P x 作为()f x 的近似值。

分别取5n =,10n =,20n =,同时计算()n P x 在0.75x =, 1.75x =, 2.75x =, 3.75x =, 4.75x =处的函数值。

(2)设()x f x e =,[1,1]x ∈-,考虑等距节点的拉格朗日插值多项式()n P x ,即将区间[1,1]-进行n 等分,记 2.0h n=, 1.0k x k h =-+⋅,0,1,,k n =L ,构造()n P x ,利用拉格朗日插值多项式()n P x 作为()f x 的近似值。

分别取5n =,10n =,20n =,同时计算()n P x 在0.95x =-,0.05x =-,0.05x =,0.95x =处的函数值。

问题2 插值区间越小越好吗?考虑下面两个拉格朗日插值问题:(1)设21()1f x x =+,[1,1]x ∈-,考虑等距节点的拉格朗日插值多项式()n P x ,即将区间[1,1]-进行n 等分,记 2.0h n =, 1.0k x k h =-+⋅,0,1,,k n =L ,构造()n P x ,利用拉格朗日插值多项式()n P x 作为()f x 的近似值。

分别取5n =,10n =,20n =,同时计算()n P x 在0.95x =-,0.05x =-,0.05x =,0.95x =处的函数值。

(2)设()x f x e =,[5,5]x ∈-,考虑等距节点的拉格朗日插值多项式()n P x ,即将区间[5,5]-进行n 等分,记 2.0h n=, 1.0k x k h =-+⋅,0,1,,k n =L ,构造()n P x ,利用拉格朗日插值多项式()n P x 作为()f x 的近似值。

分别取5n =,10n =,20n =,同时计算()n P x 在 4.75x =-,0.25x =-,0.25x =, 4.75x =处的函数值。

问题3 在区间[1,1]-考虑拉格朗日插值问题,为了使得插值误差较小,应如何选取插值节点?考虑下面两个拉格朗日插值问题:(1)设21()1f x x =+,[1,1]x ∈-,考虑非等距节点的拉格朗日插值多项式()n P x ,记(21)cos 2(1)k k x n π+=+,0,1,,k n =L ,构造()n P x ,利用拉格朗日插值多项式()n P x 作为()f x 的近似值。

分别取5n =,10n =,20n =,同时计算()n P x 在0.95x =-,0.05x =-,0.05x =,0.95x =处的函数值。

(2)设()x f x e =,[1,1]x ∈-,考虑非等距节点的拉格朗日插值多项式()n P x ,记(21)cos 2(1)k k x n π+=+,0,1,,k n =L ,构造()n P x ,利用拉格朗日插值多项式()n P x 作为()f x 的近似值。

分别取5n =,10n =,20n =,同时计算()n P x 在0.95x =-,0.05x =-,0.05x =,0.95x =处的函数值。

问题4 考虑拉格朗日插值问题,内插比外推更可靠吗?考虑下面两个拉格朗日插值问题:(1)设()f x =关于以01x =,14x =,29x =为节点的拉格朗日插值多项式2()P x ,利用拉格朗日插值多项式2()P x 作为()f x 的近似值。

同时计算2()P x 在5x =,50x =,115x =,185x =处的函数值。

(2)设()f x =036x =,149x =,264x =为节点的拉格朗日插值多项式2()P x ,利用拉格朗日插值多项式2()P x 作为()f x 的近似值。

同时计算2()P x 在5x =,50x =,115x =,185x =处的函数值。

(3)设()f x =0100x =,1121x =,2144x =为节点的拉格朗日插值多项式2()P x ,利用拉格朗日插值多项式2()P x 作为()f x 的近似值。

同时计算2()P x 在5x =,50x =,115x =,185x =处的函数值。

(4)设()f x =0169x =,1196x =,2225x =为节点的拉格朗日插值多项式2()P x ,利用拉格朗日插值多项式2()P x 作为()f x 的近似值。

同时计算2()P x 在5x =,50x =,115x =,185x =处的函数值。

思考题:1. 对实验1存在的问题,应如何解决?2. 对实验2存在的问题的回答,试加以说明3. 对实验3存在的问题的回答,试加以说明4. 如何理解插值问题中的内插和外推?写出实验报告实验题目2 龙贝格(Romberg)积分法方法概要:利用复化梯形求积公式、复化辛普生求积公式、复化柯特斯求积公式的误差估计式计算积分()b a f x dx ⎰。

记b a h n-=,k x a k h =+⋅,0,1,,k n =L ,其计算公式:一般地,利用龙贝格算法计算积分,要输出所谓的T -数表龙贝格(Romberg)积分法实验实验目的:利用龙贝格(Romberg)积分法计算积分()b a f x dx ⎰输 入:,,,a b N ε输 出: 龙贝格T -数表程序流程:1 置b a h n -=,1m =2 输出1T3 对2,3,,i N =L ,做3.1—3,53.1 置 12i ii -=置 211111(())222ii k T T h f a k h ==++-∑ 输出 2T3.2 置 2211(4)3S T T =-输出 2S3.3 对1m ≠,置 2211(16)15C S S =- 输出 2C ,转3.63.4 对2m ≠,置 2211(64)63R C C =-输出 2R ,转3.63.5 对3m ≠,置21tol R R =-如果tol ε<,则停机,否则转3.63.6 置12R R =,12C C =,12S S =,12T T =,2h h =,1m m =+4 停机问题1: 利用龙贝格(Romberg)积分法计算积分(1)120e x x dx ⎰,610ε-=(2)31e sin x xdx ⎰,610ε-=(3)12041dx x+⎰,610ε-= (4)1011dx x +⎰,610ε-= 问题2: 被积函数无界,如何处理?(1)10sin x dx x⎰,610ε-= 提示:0sin (0)lim 1x x f x →== (2)10⎰,610ε-=提示:引进变换t =(3)10⎰,610ε-= 提示:利用等式111000=+⎰⎰⎰,第一个积分值等于2,第二个积分,利用0(0)0x f →==;也可以考虑利用分部积分11002cos xd =⎰⎰(4)1-⎰,610ε-=提示:利用第一类Gauss-Chebyshev 求积公式问题3: 积分区间无限,如何处理?(1)2e ,x dx +∞--∞⎰,610ε-=提示:利用21010e x dx +--⎰作近似(2)1+∞⎰,610ε-=提示:利用变换t =(3)23e cos x xdx +∞--∞⎰,610ε-=提示:Gauss-Hermite 求积公式(4)20e sin x xdx +∞-⎰,610ε-=提示:Gauss-Lagurre 求积公式思考题:1. 输入的参数N 有什么意义?2. 在实验1中二分次数和精度的关系如何?3. 在实验2中给出的提示具有普遍性吗?存在其它的方法吗?试加以说明。

相关文档
最新文档