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

合集下载

计算方法上机实验报告

计算方法上机实验报告

《计算方法》上机实验报告班级:XXXXXX小组成员:XXXXXXXXXXXXXXXXXXXXXXXXXXXX任课教师:XXX二〇一八年五月二十五日前言通过进行多次得上机实验,我们结合课本上得内容以及老师对我们得指导,能够较为熟练地掌握Newton迭代法、Jacobi迭代法、Gauss-Seidel 迭代法、Newton 插值法、Lagrange 插值法与Gauss 求积公式等六种算法得原理与使用方法,并参考课本例题进行了MATLAB程序得编写。

以下为本次上机实验报告,按照实验内容共分为六部分.实验一:一、实验名称及题目:Newton迭代法例2、7(P38):应用Newton迭代法求在附近得数值解,并使其满足、二、解题思路:设就是得根,选取作为初始近似值,过点做曲线得切线,得方程为,求出与轴交点得横坐标,称为得一次近似值,过点做曲线得切线,求该切线与轴得横坐标称为得二次近似值,重复以上过程,得得近似值序列,把称为得次近似值,这种求解方法就就是牛顿迭代法。

三、Matlab程序代码:function newton_iteration(x0,tol)syms z %定义自变量formatlong%定义精度f=z*z*z-z-1;f1=diff(f);%求导y=subs(f,z,x0);y1=subs(f1,z,x0);%向函数中代值x1=x0-y/y1; k=1;whileabs(x1—x0)〉=tolx0=x1;y=subs(f,z,x0);y1=subs(f1,z,x0);x1=x0-y/y1;k=k+1;endx=double(x1)K四、运行结果:实验二:一、实验名称及题目:Jacobi迭代法例3、7(P74):试利用Jacobi迭代公式求解方程组要求数值解为方程组得精确解、二、解题思路:首先将方程组中得系数矩阵分解成三部分,即:,为对角阵,为下三角矩阵,为上三角矩阵。

之后确定迭代格式,,(, 即迭代次数),称为迭代矩阵。

暑期实习报告--数值实验

暑期实习报告--数值实验

2011年暑期实习报告数值实验姓名: GZ 班级:信息与计算科学09-3班学号:一、 实验目的(1) 《数值计算方法》算法的上机实践。

2011年的春季学习,我们学习了《数值计算方法》这门很重要的课程。

要知道课本上的东西不经过消化是不能成为自己的知识的,不讲理论联系实际,那么我们学到的东西是没有任何意义的。

只有真正去试验,去检验才能成为明白其中的道理。

只有经过怀疑、验证、比较才能明白,什么是好用的,什么是实用的。

为了能够使我们更好的掌握和了解数值计算的算法,为了使我们能将学过的知识真正用于将来的编程设计中,学校和学院老师为我们提供了暑期实践这样一个很好的机会,让大家能亲身感受到算法的奥妙,在短时间内有很大的提高。

(2)Mablab 的学习和使用。

我们在认真领悟算法的同时,通过程序的实现过程,很好的了解并且熟练使用Matlab 也是我们实习的一个重要目的。

一种实用的工具如果不经过练习是不可能被熟练的掌握和使用的,我们如果不经过编程实验,就不能体会到Matlab 强的功能和数学计算上的优势。

Matlab 是三大数学软件之一,有强大的数值计算功能,同时有许多实用的工具箱。

要掌握这些必须要我们多加练习,这次实验正给我们提供了一次了解使用Matlab 编程的机会,在实验中体会Matlab 带给我们的方便。

熟练的掌握Matlab 的用法和工具箱是我们信息专业的同学必须具备的条件。

(3)体会实验的意义和重要性。

提高自己在实验中发现问题、解决问题的能力。

实验的过程是是最重要的,在过程中我们不断的提高自己,发展自己,认识不足,弥补不足才会有真正的提高。

我参加了这次实践,获益良多。

二、 实验内容及结果分析实验一:迭代法求方程根的收敛性内容:为了体会在非线性方程求根的迭代法中,迭代函数和初始迭代值的选取对迭代收敛性的影响。

考虑一个简单的代数方程324100x x +-=,针对上述方程,可以构造多种迭代法,如下列几种迭代格式:①321410n n n x x x x +=--++;②13211(10)2n n x x +=-;③12110()4n x x +=+;④321241038n n n n n nx x x x x x ++-=-+。

(完整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 。

计算方法上机实验

计算方法上机实验

1.拉格朗日插值多项式,用于离散数据的拟合#include <stdio.h>#include <conio.h>#include <alloc.h>float lagrange(float *x,float *y,float xx,int n) /*拉格朗日插值算法*/{ int i,j;float *a,yy=0.0; /*a作为临时变量,记录拉格朗日插值多项式*/a=(float *)malloc(n*sizeof(float));for(i=0;i<=n-1;i++){ a[i]=y[i];for(j=0;j<=n-1;j++)if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]);yy+=a[i];}free(a);return yy;}main(){ int i,n;float x[20],y[20],xx,yy;printf("Input n:");scanf("%d",&n);if(n>=20) {printf("Error!The value of n must in (0,20)."); getch();return 1;} if(n<=0) {printf("Error! The value of n must in (0,20)."); getch(); return 1;} for(i=0;i<=n-1;i++){ printf("x[%d]:",i);scanf("%f",&x[i]);}printf("\n");for(i=0;i<=n-1;i++){ printf("y[%d]:",i);scanf("%f",&y[i]);}printf("\n");printf("Input xx:");scanf("%f",&xx);yy=lagrange(x,y,xx,n);printf("x=%f,y=%f\n",xx,yy);getch();}2.牛顿插值多项式,用于离散数据的拟合#include <stdio.h>#include <conio.h>#include <alloc.h>void difference(float *x,float *y,int n){ float *f;int k,i;f=(float *)malloc(n*sizeof(float));for(k=1;k<=n;k++){ f[0]=y[k];for(i=0;i<k;i++)f[i+1]=(f[i]-y[i])/(x[k]-x[i]);y[k]=f[k];}return;}main(){ int i,n;float x[20],y[20],xx,yy;printf("Input n:");scanf("%d",&n);if(n>=20) {printf("Error! The value of n must in (0,20)."); getch(); return 1;} if(n<=0) {printf("Error! The value of n must in (0,20).");getch(); return 1;} for(i=0;i<=n-1;i++){ printf("x[%d]:",i);scanf("%f",&x[i]);}printf("\n");for(i=0;i<=n-1;i++){ printf("y[%d]:",i);scanf("%f",&y[i]);}printf("\n");difference(x,(float *)y,n);printf("Input xx:");scanf("%f",&xx);yy=y[20];for(i=n-1;i>=0;i--) yy=yy*(xx-x[i])+y[i];printf("NewtonInter(%f)=%f",xx,yy);getch();}3.高斯列主元消去法,求解其次线性方程组第一种#include<stdio.h>#include <math.h>#define N 20int main(){ int n,i,j,k;int mi,tmp,mx;float a[N][N],b[N],x[N];printf("\nInput n:");scanf("%d",&n);if(n>N){ printf("The input n should in(0,N)!\n");getch();return 1;}if(n<=0){ printf("The input n should in(0,N)!\n");getch();return 1;}printf("Now input a(i,j),i,j=0...%d:\n",n-1); for(i=0;i<n;i++){ for(j=0;j<n;j++)scanf("%f",&a[i][j]);}printf("Now input b(i),i,j=0...%d:\n",n-1);for(i=0;i<n;i++)scanf("%f",&b[i]);for(i=0;i<n-2;i++){ for(j=i+1,mi=i,mx=fabs(a[i][j]);j<n-1;j++) if(fabs(a[j][i])>mx){ mi=j;mx=fabs(a[j][i]);}if(i<mi){ tmp=b[i];b[i]=b[mi];b[mi]=tmp;for(j=i;j<n;j++){ tmp=a[i][j];a[i][j]=a[mi][j];a[mi][j]=tmp;}}for(j=i+1;j<n;j++){ tmp=-a[j][i]/a[i][i];b[j]+=b[i]*tmp;for(k=i;k<n;k++)a[j][k]+=a[i][k]*tmp;}}x[n-1]=b[n-1]/a[n-1][n-1];for(i=n-2;i>=0;i--){ x[i]=b[i];for(j=i+1;j<n;j++)x[i]-=a[i][j]*x[j];x[i]/=a[i][i];}for(i=0;i<n;i++)printf("Answer:\n x[%d]=%f\n",i,x[i]); getch();return 0;}第二种#include<math.h>#include<stdio.h>#define NUMBER 20#define Esc 0x1b#define Enter 0x0dfloat A[NUMBER][NUMBER+1] ,ark;int flag,n;exchange(int r,int k);float max(int k);message();main(){float x[NUMBER];int r,k,i,j;char celect;clrscr();printf("\n\nUse Gauss.");printf("\n\n1.Jie please press Enter."); printf("\n\n2.Exit press Esc.");celect=getch();if(celect==Esc)exit(0);printf("\n\n input n=");scanf("%d",&n);printf(" \n\nInput matrix A and B:"); for(i=1;i<=n;i++){printf("\n\nInput a%d1--a%d%d and b%d:",i,i,n,i);for(j=1;j<=n+1;j++) scanf("%f",&A[i][j]);}for(k=1;k<=n-1;k++){ark=max(k);if(ark==0){printf("\n\nIt's wrong!");message();}else if(flag!=k)exchange(flag,k);for(i=k+1;i<=n;i++)for(j=k+1;j<=n+1;j++)A[i][j]=A[i][j]-A[k][j]*A[i][k]/A[k][k];}x[n]=A[n][n+1]/A[n][n];for( k=n-1;k>=1;k--){float me=0;for(j=k+1;j<=n;j++){me=me+A[k][j]*x[j];}x[k]=(A[k][n+1]-me)/A[k][k];}for(i=1;i<=n;i++){printf(" \n\nx%d=%f",i,x[i]);}message();}exchange(int r,int k){int i;for(i=1;i<=n+1;i++)A[0][i]=A[r][i];for(i=1;i<=n+1;i++)A[r][i]=A[k][i];for(i=1;i<=n+1;i++)A[k][i]=A[0][i];}float max(int k){int i;float temp=0;for(i=k;i<=n;i++)if(fabs(A[i][k])>temp){temp=fabs(A[i][k]);flag=i;}return temp;}message(){printf("\n\n Go on Enter ,Exit press Esc!");switch(getch()){case Enter: main();case Esc: exit(0);default:{printf("\n\nInput error!");message();} }}4.龙贝格求积公式,求解定积分#include<stdio.h>#include<math.h>#define f(x) (sin(x)/x)#define N 20#define MAX 20#define a 2#define b 4#define e 0.00001float LBG(float p,float q,int n){ int i;float sum=0,h=(q-p)/n;for (i=1;i<n;i++)sum+=f(p+i*h);sum+=(f(p)+f(q))/2;return(h*sum);}void main(){ int i;int n=N,m=0;float T[MAX+1][2];T[0][1]=LBG(a,b,n);n*=2;for(m=1;m<MAX;m++){ for(i=0;i<m;i++)T[i][0]=T[i][1];T[0][1]=LBG(a,b,n);n*=2;for(i=1;i<=m;i++)T[i][1]=T[i-1][1]+(T[i-1][1]-T[i-1][0])/(pow(2,2*m)-1);if((T[m-1][1]<T[m][1]+e)&&(T[m-1][1]>T[m][1]-e)){ printf("Answer=%f\n",T[m][1]); getch();return ;}}}5.牛顿迭代公式,求方程的近似解#include<stdio.h>#include<math.h>#include<conio.h>#define N 100#define PS 1e-5#define TA 1e-5float Newton(float (*f)(float),float(*f1)(float),float x0 ) { float x1,d=0;int k=0;do{ x1= x0-f(x0)/f1(x0);if((k++>N)||(fabs(f1(x1))<PS)){ printf("\nFailed!");getch();exit();}d=(fabs(x1)<1?x1-x0:(x1-x0)/x1);x0=x1;printf("x(%d)=%f\n",k,x0);}while((fabs(d))>PS&&fabs(f(x1))>TA) ;return x1;}float f(float x){ return x*x*x+x*x-3*x-3; }float f1(float x){ return 3.0*x*x+2*x-3; }void main(){ float f(float);float f1(float);float x0,y0;printf("Input x0: ");scanf("%f",&x0);printf("x(0)=%f\n",x0);y0=Newton(f,f1,x0);printf("\nThe root is x=%f\n",y0); getch();}。

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

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

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

数值计算方法实验报告例

数值计算方法实验报告例

实验报告一、实验目的二、实验内容三、实验环境四.实验方法五、实验过程1实验步骤2 关键代码及其解释3 调试过程六、实验总结1.遇到的问题及解决过程2.产生的错误及原因分析3.体会和收获。

七、程序源代码:八、教师评语实验报告一.试验目的:练习用数值方法求解给定的非线性方程。

二.实验内容:求解人口方程: )1(5.43e 1004.156-+=λλλe要求误差小于410-。

三.实验环境:PC 计算机,FORTRAN 、C 、C ++、VB 任选一种。

四.实验方法:牛顿法牛顿法简述:牛顿法是一种特殊的迭代法,其迭代公式为:,2,1,0,)()(1='-=+k x f x f x x k k k k ,当数列{}k x 收敛时,其极限值x 即为方程的解。

定理:给定方程],[,0)(b a x x f ∈=1)设0)()(<b f a f ;2))(x f ''在],[b a 上不变号,且],[,0)(b a x x f ∈≠'; 3)选取],[0b a x ∈,满足0)()(00>''x f x f ;则牛顿法产生的序列{}k x 收敛于0)(=x f 在],[b a 内的唯一解x 。

五.实验过程:1.编程: 用C 语言编出牛顿法的源程序。

2. 开机, 打开C 语言编译程序,键入所编程序源代码.3. 调试程序, 修改错误至能正确运行.六.实验总结:(1)牛顿法收敛速度快,但初值不容易确定,往往由于初值取得不当而使迭代不收敛或收敛慢,但若能保证)()(1+>K K x f x f (称为下山条件),则有可能收敛。

把新的近似值看作初值的话会比原来的取得好,有可能落入局部收敛的邻域。

(2)牛顿法要求)(x f '在x 附近不为零。

亦即x 只能是单根, 不能求重根。

可用重根加速收敛法求重根。

(3)牛顿法的每一步迭代中,都要计算一次导数值,若计算)(x f '比计算函数的近似值要麻烦的多。

数值计算方法实验报告

数值计算方法实验报告

数值分析实验报告实验一、解线性方程组的直接方法——梯形电阻电路问题利用追赶法求解三对角方程组的方法,解决梯形电阻电路问题:电路中的各个电流{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 -+=。

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

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

《数值计算方法》上机实验报告华北电力大学实验名称数值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华北电力大学实验报告方程组求解。

太原理工大学数值计算试验报告

太原理工大学数值计算试验报告

TAIYUAN UNIVEaSIIY OF TECHNOLOGY本科实验报告计算机数值方法课程名称:实验项目:方程求根,线性方程组的直接求解, 线性方程组的迭代求解,代数插值和最小二乘法拟合实验地点:软件楼208 _______________专业班级:学号:学生姓名:___________________________指导教师:李志崔冬华2015年6月5 日实验内容和要求(必填)目的:《数值计算方法》是一门实践性和实用性都很强的课程,学习的目的在于应用已有的理论基础和技术方法,实现对实际计算问题的计算机求解。

本实验配合《计算数值方法》课堂教学,通过上机实践实验环节,巩固课堂和书本上所学的知识、加强实践能力、提高解决实际计算问题的水平、启发创新思想。

其基本目的是:(1)培养理论联系实际的思路,训练综合运用已经学过的理论和实际知识去分析和解决实际问题的能力。

(2)帮助学生全面消化已学的相关课程内容,深刻理解计算数值方法课程的内涵,培养使用电子计算机进行科学计算和解决问题的能力。

(3)进行基本技能训练和巩固。

使学生得到选择算法、编写程序、分析数值结果、写数值试验报告、课堂讨论等环节的综合训练。

要求:(1)应用结构化程序设计编出通用程序,源程序要有详细的注释和说明;(2)比较计算结果,分析数值解误差的原因;(3)实验完成,要求提交实验结果并写出报告,分析计算结果是否符合问题的要求,找出计算成功的原因或计算失败的教训。

实验原理(必填)选择上述方法中的两种方法求方程:f(x)=x3+4x2-10=0在[1,2]内的一个实根,且要求满足精度lx*-x n l<0.5x10-5主要仪器设备笔记本计算机实验记录(写出实验内容中的程序代码和运行结果)(可分栏或加页)迭代法:#include "stdafx.h"#include"stdio.h"#include〃math.h〃#include〃iostream〃using namespace std;float main()(float a;cin>>a;float t, x;x=a;do(x=sqrt((10-x*x*x)/4);t=a;a=x;}while(fabs(a-t)>0.5*1e-5);printf(〃x=%f〃,a); system(〃pause〃);)割线法:#include "stdafx.h"#include〃stdio.h〃#include〃math.h〃#include〃iostream〃using namespace std;float main()(float c,a=1.0,b=2.0;//cin>>a>>b;while(1)(c=b-(b*b*b+4*b*b-10)*(b-a)/(b*b*b+4*b*b-(a*a*a+4*a*a));if (fabs(b-c)<0.5*0.000001) break;b=c;)cout<<c;)实验结果和分析实验结果:心得体会(遇到的问题和解决方法)使用不同的方法,可以不同程度的求得方程的解,不同的方法速度不同。

数值实验报告

数值实验报告

北京XX大学计算机与通信工程学院实验报告实验名称:《数值计算方法》课程实验学生姓名:_____________XX_______________专业:________计算机科学与技术________班级:_____________XXXX____________学号:_____________XXXXXX___________指导教师:_____________XXXXX_____________实验成绩:________________________________实验地点:__________XXXXXXX____________实验时间:____2017____年___6___月___6___日一、实验目的与实验要求1、实验目的实验1:探究非线性方程的解法,比较不同解法的优劣性,针对具体问题对解法进行实践,并迭代达到指定的精确度。

实验2:探究一般化曲线拟合的方法,采用最小二乘法对含有多项式,指数和对数多种形式的函数进行拟合,确定拟合结果中的系数。

实验3:探究多种积分的数值解法,根据给定的精度,选择恰当的数值积分方法,确定迭代步数与步长,分析积分数值解法的优劣性。

2、实验要求实验1:采用两种算法求解非线性方程,比较两种算法的性能。

实验2:用最小二乘法拟合由不超过三阶多项式和指数、对数函数线性组合成的符合函数,确定各个项的系数实验3:自选一种数值积分方法求解积分值,根据要求的精度给出最终的迭代步数和步长,分析优缺点。

二、实验设备(环境)及要求实验1,3采用C语言编写,编译环境为DEV C++。

实验2涉及矩阵操作,故采用MATLAB编写。

三、实验内容与步骤1、实验1(1)实验内容·采用至少两种不同的算法求解ex+3*x3-x2-2=0在[0,1]范围内的一个根,要求两次迭代误差小于10-4。

·根据实验结果,比较分析不同算法的性能。

(2)主要步骤本实验由C 语言实现。

在两种不同的算法上选用简单迭代法和牛顿迭代法。

数值计算方法实验报告

数值计算方法实验报告
2如果f[(a+b)/2]<0,则区间((a+b)/2,b)内存在零点,(a+b)/2≥a;
3如果f[(a+b)/2]>0,则区间(a,(a+b)/2)内存在零点,(a+b)/2≤b;
返回①重新循环,不断接近零点。通过每次把f(x)的零点所在区间收缩一半的方法,使区间内的两个端点逐步逼近函数零点,最终求得零点近似值。
{
int z[10];
int maxi,maxj;
initdata();
for(int i=1;i<=N;i++)
z[i]=i;
for(int k=1;k<N;k++)
{
maxi=k;maxj=k;float maxv=abs(a[k][k]);
for(i=k;i<=N;i++)
for(int j=k;j<=N;j++)
34;请输入矩阵阶数:"<<endl;
cin>>N;
cout<<"请输入矩阵各项:"<<endl;
for(int i=1;i<=N;i++)
for(int j=1;j<=N+1;j++)
{
cin>>a[i][j];
}
cout<<endl;
}
void main()
{
for(i=1;i<=N;i++)
{
float t=a[i][k];a[i][k]=a[i][maxj];a[i][maxj]=t;

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

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

printf("%lf ",x[i]);printf("\n");}int _tmain(int argc, _TCHAR* argv[]){double a[3][4],x[3]={0,0,0},d[3];for(int i=0;i<3;i++)for(int j=0;j<4;j++)scanf("%lf",&a[i][j]);shuchu(x);do{x[0]=(a[0][3]-a[0][1]*x[1]-a[0][2]*x[2])/a[0][0];x[1]=(a[1][3]-a[1][0]*x[0]-a[1][2]*x[2])/a[1][1];x[2]=(a[2][3]-a[2][0]*x[0]-a[2][1]*x[1])/a[2][2];d[0]=abs((a[0][3]-a[0][1]*x[1]-a[0][2]*x[2])/a[0][0]-x[0]);d[1]=abs((a[1][3]-a[1][0]*(a[0][3]-a[0][1]*x[1]-a[0][2]*x[2])/a[0][0]-a[1][2]*x[2]) /a[1][1]-x[1]);d[2]=abs((a[2][3]-a[2][0]*(a[0][3]-a[0][1]*x[1]-a[0][2]*x[2])/a[0][0]-a[2][1]*(a[1] [3]-a[1][0]*(a[0][3]-a[0][1]*x[1]-a[0][2]*x[2])/a[0][0]-a[1][2]*x[2])/a[1][1])/a[2][2]-x[2]);shuchu(x);}while(d[0]>0.5e-5&&d[1]>0.5e-5&&d[2]>0.5e-5);system("pause");return 0;}实验结果与分析1.列主元素消元法2.完全组元素消元法3.LU分解法4.高斯-赛德尔迭代法讨论、心得(可选):了解Gauss消元法、LU分解法、追赶法等线性方程组直接求解的基本方法、基本原理;能够按照工程实际要求,选择适当的算法;通过编写程序,进行算法设计和数值求解,了解雅可比迭代法、高斯-赛德尔迭代法等线性方程组迭代求解的基本方法、基本原理,能够按照工程实际要求,选择适当的算法,通过编写程序,进行算法设计和数值求解。

数值计算方法实验报告jrh

数值计算方法实验报告jrh

学院:自动化学院班级:自动化085姓名:学号:2011年3月一、实验的性质、目的和任务本实验是与本专业基础课《数值计算方法》相配套的,旨在巩固专业课内容和学生编程的能力。

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

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

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

二、实验基本要求要求熟悉高级计算机语言Matlab,以及相关上机操作说明;上机时要遵守实验室的规章制度,爱护实验设备;记录调试过程及结果。

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

四、设备及器材配置主机:微机操作系统:WINDOWS 98以上软件:高级计算机语言Matlab五、考核与报告每个实验完成后交一份实验报告。

本实验作为平时成绩的一部分占学期期末总成绩的20%。

六、适用对象自动化专业七、主要参考书1.王能超编,《数值分析简明教程》,高等教育出版社,2003年,第2版2.封建湖编,《数值分析原理》,科学出版社,2001年,第1版3.冯有前编,《数值分析》,清华大学出版社,2005年,第1版4.周璐等译, John H. Mathews等编,《数值方法(MATLAB版)》,电子工业出版社,2007年,第二版实验一 采用拉格朗日方法计算插值一、 实验目的:1. 掌握多项式插值的概念、存在唯一性;2. 能够熟练地应用拉格朗日方法计算插值,并完成插值程序的设计和调试。

二、 实验内容:构造拉格朗日插值多项式()p x 逼近3()f x x =,要求:(1) 取节点01x =-,11x =求线性插值多项式1()p x ;(2) 取节点01x =-,10x =,21x =求抛物插值多项式2()p x ;(3) 取节点01x =-,10x =,21x =,32x =求三次插值多项式3()p x ;(4) 分别求1(1.3)p 、2(1.3)p 、3(1.3)p 的值,并与精确值相比较。

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

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

实用数值计算方法上机实验报告学院:化学工程学院姓名:**专业:工业催化学号: **********1. 问题来源某公司饲养实验用的动物以供出售,已知这些动物的生长对饲料中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元。

数值计算方法上机实验

数值计算方法上机实验
实验内容:,
用追赶法解三角方程组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};

数值计算方法实验报告

数值计算方法实验报告

数值分析实验报告实验一、解线性方程组的直接方法——梯形电阻电路问题利用追赶法求解三对角方程组的方法,解决梯形电阻电路问题:电路中的各个电流{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 -+=。

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

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

数值计算方法上机实验报告实验目的:复习和巩固数值计算方法的基本数学模型,全面掌握运用计算机进行数值计算的具体过程及相关问题。

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

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

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

一、各算法的算法原理及计算机程序框图1. 列主元高斯消去法算法原理:高斯消去法是利用现行方程组初等变换中的一种变换,即用一个不为零的数乘一个方程后加只另一个方程,使方程组变成同解的上三角方程组,然后再自下而上对上三角方程组求解。

列选住院是当高斯消元到第k 步时,从k 列的kk a 以下(包括kk a )的各元素中选出绝对值最大的,然后通过行交换将其交换到kk a 的位置上。

交换系数矩阵中的两行(包括常数项),只相当于两个方程的位置交换了,因此,列选主元不影响求解的结果。

●源程序:#define N 200#include "stdio.h"#include "math.h"FILE *fp1,*fp2;void LZ(){int n,i,j,k=0,l;double d,t,t1;static double x[N],a[N][N];fp1=fopen("a1.txt","r");fp2=fopen("b1.txt","w");fscanf(fp1,"%d",&n);for(i=0;i<n;++i)for(j=0;j<=n;++j){fscanf(fp1,"%lf",&a[i][j]);}{d=a[k][k];l=k;i=k+1;do{if(fabs(a[i][k])>fabs(d)) /*选主元*/{d=a[i][k];l=i;}i++;}while(i<n);if(d==0){printf("\n输入矩阵有误!\n");}else{ /*换行*/if(l!=k){for(j=k;j<=n;j++){t=a[l][j];a[l][j]=a[k][j];a[k][j]=t;}}}for(j=k+1;j<=n;j++) /*正消*/ a[k][j]/=a[k][k];for(i=k+1;i<n;i++)for(j=k+1;j<=n;j++)a[i][j]-=a[i][k]*a[k][j];k++;}while(k<n);if(k!=0){for(i=n-1;i>=0;i--) /*回代*/ {t1=0;for(j=i+1;j<n;j++)t1+=a[i][j]*x[j];x[i]=a[i][n]-t1;}for(i=0;i<n;i++)fprintf(fp2,"\n 方程组的根为x[%d]=%lf",i+1,x[i]); fclose(fp1); fclose(fp2); }main() { LZ(); }● 具体算例及求解结果:用列选主元法求解下列线性方程组⎪⎩⎪⎨⎧=++=++=-+28x x 23x 2232832321321321x x x x x x 输入3 输出结果:方程组的根为x[1]=6.0000001 2 -3 8 方程组的根为x[2]=4.000000 2 1 3 22 方程组的根为x[3]=2.000000 3 2 1 28● 输入变量、输出变量说明:输入变量:ij a 系数矩阵元素,i b 常向量元素 输出变量:12,,n b b b 解向量元素2. 杜里特尔分解法解线性方程● 算法原理:求解线性方程组Ax b =时,当对A 进行杜里特尔分解,则等价于求解LUx b =,这时可归结为利用递推计算相继求解两个三角形(系数矩阵为三角矩阵)方程组,用顺代,由Ly b =求出y ,再利用回带,由Ux y =求出x 。

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

数值计算方法上机实验报告
列选主元是当高斯消元到第 步时,从 列的 以下(包括 )的各元素中选出绝对值最大的,然后通过行交换将其交换到 的位置上。交换系数矩阵中的两行(包括常数项),只相当于两个方程的位置交换了,因此,列选主元不影响求解的结果。
(2)计算机程序框图:(见下页)
(3)输入变量、输出变量说明:
输入变量: 系数矩阵元素, 常向量元素
称为改进欧拉公式。
(2)计算机程序框图:(见下页)
(3)输入变量、输出变量说明:
输入变量: 处置点, 区间长度, 计算次数
输出变量: 初值问题的数值解法结果
(4)具体算例及求解结果:
例:求解初值问题(课本P242例7-2)
求解结果:
0.1
1.095909
1.095909
0.6
1.485956
1.485955
输出变量: 解向量元素
(4)具体算例及求解结果:
例:用列选主元法求解下列线性方程组(课本P65例3-3)
求解结果:
3、 分解法求解线性方程组
(1)算法原理:
求解线性方程组 时,当对 进行 分解,则等价于求解 ,这时可归结为利用递推计算相继求解两个三角形(系数矩阵为三角矩阵)方程组,用顺代,由
求出 ,再利用回带,由 求出 。
例:根据给定的函数 的实例数据表,试用最小二乘法求二次拟合多项式。(课本P186习题3)
求解结果:
6、变步长梯形求积分
(1)算法原理:
设将积分区间 分成 等份,即有 个子区间,分点 ,其中步长
对于子区间 ,利用体型求其积分近似值
对于子区间 有
对于子区间 再取其中点
作新节点,此时区间数增加了一倍为 ,
0.2
1.184097

(精品)数值计算方法上机报告

(精品)数值计算方法上机报告
fx2=fun(x2);
do
{x0=(x1+x2)/2.0;
fx0=fun(x0);
if(fx0*fx1<0)
{x2=x0;
fx2=fx0;
}
else{
x1=x0;
fx1=fx0;
for(j=0;j<=N;j++)
{if(j!=i) l=l*(xx-x[j])/(x[i]-x[j]);}
L=L+y[i]*l;
}
return(L);
}
void main()
{
float x[Max_N],y[Max_N];
float xx,L;
int i,N;
printf("\ninput n:\n ");
数值计算方法上机
姓名:桑红
学号:0905020101
班级:应数0901
实验一拉格朗日插值与牛顿插值
一、
熟悉拉格朗日插值多项式和牛顿插值多项式,注意其不同特点;
二、
通过拉格朗日插值多项式的实例计算,了解这种求解方法,分析其的优缺点。
三、
程序与实例
例:给定函数表
x
0
1
2
3
4
5
y
-7
-4
5
26
65
128
试用Lagrange插值法求一个三次插值多项式 ,并由此求 的近似值。
scanf("%f",&xx);
L=lagrange(x,y,xx,N);
printf("\nL(%f)=%f",xx,L);
}
实验二舍入误差与数值稳定性
一、目的与要求:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

将非线性方程的fx()fx()0,**根代入,即 fx()0,x'* fxfxxx()()()0,,,kkk解出fx()*k xx,,k'fx()k*将右端取为,则是比更接近于的近似值,即 xxxxk,1k,1k fx()k ,,xx,1kk'fx()k这就是牛顿迭代公式。

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

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

列选主元是当高斯消元到第步时,从列的以下(包括)的各元素中选出绝aakkkkkk对值最大的,然后通过行交换将其交换到的位置上。

交换系数矩阵中的两行(包括常akk数项),只相当于两个方程的位置交换了,因此,列选主元不影响求解的结果。

,2,计算机程序框图:,见下页,,3,输入变量、输出变量说明:输入变量:系数矩阵元素,常向量元素 baiji输出变量:解向量元素 bbb,,12n,4,具体算例及求解结果:例:用列选主元法求解下列线性方程组(课本P65例3-3)0.501.103.106.00xxx,,,,123, 2.004.500.360.020xxx,,,,123,5.000.966.500.96xxx,,,123,求解结果:x,,2.600000,1,x,1.000000,2,x,2.0000003,3、分解法求解线性方程组 LU,1,算法原理:求解线性方程组时,当对进行分解,则等价于求解,这时可归AAxb,LULUxb,结为利用递推计算相继求解两个三角形(系数矩阵为三角矩阵)方程组,用顺代,由Lyb,求出,再利用回带,由求出。

xyUxy,,2,计算机程序框图:,见下页,,3,输入变量、输出变量说明:输入变量:系数矩阵元素,常向量元素 baiji4 / 16华北电力大学实验报告开始读入数据,abiji从主程序来ijn,1,2,..,,ad,kkk,1kl,选主元ki,,1aaa/,ikkkik,ikkn,,,1,2,...,ad,?ikaaaa,,ijikkjikad,ijkkn,1,2,...,,,ikbabb,,il,iikkiijkkn,1,2,...0,,,kk,,1,ii,,1in,?,kn,,1?,,输出,d,0?奇异标志bab/,nnnn,n,()/babab,,lk,?,iijjiii结束ji,,1,inn,,,1,2,...,1 ataata,,,,,ljkjljkjjkkn,,,1,..., 输出btbbtb,,,,,lklkbbb,, (12)返回主程序结束5 / 16华北电力大学实验报告开始读入数据,abijiijn,1,2,..,,uain,,,1,2,...,11iiai1lin,,,2,3,...,i1ul1r1,ualuirrn,,,,,,1,...,,ririrrkik,1r1,laluuirrn,,,,,()/,1,2,...,,iririkkrrrk,1i,1ybyblyin,,,,,,2,3,...,,11iiikkk,1nxyuxyuxuin,,,,,/,()/,1,,...,2,1,nnnniiikkiiki,,1输出xxx,, (12)结束输出变量:解向量元素 bbb...,1,2,,n,4,具体算例及求解结果:例:用杜里特尔分解法求解方程组(课本P74例3-8)x2233,,,,,,1,,,,,, 4771x,2,,,,,,,,,,,,,,2457x,,,,3,,求解结果:x,2.000000,1, x,,2.000000,2,x,1.0000003,6 / 16华北电力大学实验报告4、拉格朗日插值法,1,算法原理:nxx,i构造基函数,可以证明基函数满足下列条件: ()lx,,kxx,,0iki,ik 0ik,,, lx(),,ki1ik,,对于给定(1)n,个节点,次拉格朗日插值多项式由下式给出: nnnxx,i()Lxy,,,kxx,,0,0kiki ,ik由于是一个关于的次多项式,所以为关于的不高于次的代数多项lx()xnxnLx()k式。

当时,,满足插值条件。

xx,Lxy(),iii,2,计算机程序框图:,见下页, ,3,输入变量、输出变量说明: 输入变量:插值节点 (,)xyii输出变量:插值所得到被插函数在插值点的近似值 y,4,具体算例及求解结果: 例:已知的值如下表所示。

fxx()sin, 的值 fxx()sin,,,,, x 0 6432123 sinx0 1 222,sin试用拉格朗日多项式计算的估计值。

12求解结果:0.2585887 / 16华北电力大学实验报告开始输入(,)xyiiin,0,1,...,0,y0,x1,txx,jtt,xx,kjjkkn,,,0,...,1,1,...,ytyy,,k,kk,,1kn,?,输出y结束5、最小二乘法的曲线拟合,1,算法原理:对于给定的一组数据,要在给定的函数空间 (,()),1,2,...,xfxim,ii,,Span{,,...,},,,01n 中找一个函数n***** ,,,,,()()()...()()xaxaxaxax,,,,,,0011nnii,0i*使满足 ,()x8 / 16华北电力大学实验报告mm2*2*2,,,,,,,[()()]min[()()]xfxxfx,,iiii2 ,,,()x,,11ii**这种求拟合函数的方法称为曲线拟合的最小二乘法,称为最小二乘法的,()x,()x最小二乘解。

,2,计算机程序框图:开始读入数据xyin,,1,2,...,,jiiCn,11nCxilm,,,,2,3,...,1,11ll,1i,nCxikm,,,,2,3,...,1,11kk,1i,nCxxilkm,,,,,2,3,...,1(1)(1)klkl,,,1i,nby,1i,1i,nbxykm,,,,2,3,...,1(1)kkii,,1i,进行分解,框图如分解法,得系数LULUakm,0,1,...,,k输出aaa,, (01)结束,3,输入变量、输出变量说明: 输入变量:已知数据点 (,)xyii输出变量:拟合多项式的系数 ai9 / 16华北电力大学实验报告,4,具体算例及求解结果:例:根据给定的函数的实例数据表,试用最小二乘法求二次拟合多项式。

(课本yfx,()P186习题3)x 3506 124iy 151516 14141414i求解结果:a,14.9285720a,,0.8928571 a, 0.17857122yxx,,,,1.3181713.4318110.3863636、变步长梯形求积分,1,算法原理:设将积分区间分成等份,即有个子区间,分点,其中nnxakhkn,,,,0,1,...,[,]abk步长ba, h,n对于子区间,利用体型求其积分近似值 [,]xxkk,1h [()()],fxfxkk,12对于子区间有 [,]abn,1h ,,[()()]Tfxfx,nkk,12k,0对于子区间再取其中点 [,]xxkk,11 xxx,,()11kk,k,22作新节点,此时区间数增加了一倍为, 2n对子区间,其积分近似值 [,]xxkk,1h [()2()()],,fxfxfxkk11,k,4210 / 16华北电力大学实验报告对区间有 [,]abn,1h,,,[()2()()]Tfxfxfx,211nkk,k,4k,02 nn,,11hh ,,,[()()]()fxfxfx,,kk,11k,42kk,,002,2,计算机程序框图:开始读入ab,,,hbahfafbT,,,,,[()()]12h0,,,,Sax2SfxSxhx,,,,(),,xb,?ThS1,,T222,hTT,,,?,,hTT,21212,打印T2结束,3,输入变量、输出变量说明: 输入变量:积分区间,精度 ,[,]ab输出变量:T积分结果 211 / 16华北电力大学实验报告 ,4,具体算例及求解结果:1sinx例:用变步长梯形公式求积法计算。

(课本P209例6-13)dx, 0x求解结果:0.94608277、改进欧拉法,1,算法原理:当取值较小时,让梯形法的迭代公式只迭代一次就结束。

这样先用欧拉公式求得h(0)一个初步近似值,称之为预报值,预报值的精度不高,用它替代梯形法右端的,yyn,1,n1再直接计算得出,并称之为校正值,这时得到预报-校正公式。

将预报-校正公式 yn,1(0),yyhfxy,,(,)nnnn,1, ,h(0),,yyfxyfxy(,)(,),,,,nnnnnn,,,111,,,2称为改进欧拉公式。

,2,计算机程序框图:,见下页,,3,输入变量、输出变量说明:输入变量:处置点,区间长度,计算次数 (,)xyNh00输出变量:初值问题的数值解法结果 (,)xy11,4,具体算例及求解结果:例:求解初值问题(课本P242例7-2)2x,'yyx,,,,,01, y,,y(0)1,,求解结果:xyyx()xyyx()nnnnnn0.1 1.095909 1.095909 0.6 1.485956 1.4859550.2 1.184097 1.184097 0.7 1.562514 1.5525140.3 1.266201 1.266201 0.8 1.616475 1.6164740.4 1.343360 1.343360 0.9 1.678320 1.67816612 / 16华北电力大学实验报告 0.5 1.416402 1.416402 1.0 1.737867 1.737867开始读入xyhN,,,001,nxhx,,01yhfxyy,,(,)000pyhfxyy,,(,)01pcyyy,,()/21pc输出xy,11nn,,1,xx,nN,?10,yy,10结束8、四阶龙格,库塔法求解常微分方程的初值问题,1,算法原理:xx,用区间内四个不同点上的函数值的线性组合就得到四阶龙格-库塔法。

相关文档
最新文档