当前位置:文档之家› 计算方法 实验 线性方程组的数值解法

计算方法 实验 线性方程组的数值解法

计算方法 实验 线性方程组的数值解法
计算方法 实验 线性方程组的数值解法

姓名:

学号:

班级:

线性方程组的数值解法

实习目的

(1)通过实习进一步掌握高斯消去法、列主元高斯消去法、柯朗分解法、追赶法以及雅克比迭代法和高斯-赛德尔迭代法的基本思想;

(2)通过实习进一步掌握高斯消去法、列主元高斯消去法、柯朗分解法、追赶法以及雅克比迭代法和高斯-赛德尔迭代法的计算步骤,并能灵活应用;

(3)通过对高斯消去法、列主元高斯消去法、柯朗分解法、追赶法以及雅克比迭代法和高斯-赛德尔迭代法的调试练习,进一步体会各种算法的特点;

(4)通过对上机调试运行,组不培养解决实际问题的编程能力。

实习要求

(1)熟悉Turbo C的编译环境;

(2)实习前复习高斯消去法、列主元高斯消去法、直接三角分解法、雅克比迭代法、高斯-赛德尔迭代法以及追赶法的基本思想和过程;

(3)实习前复习高斯消去法、列主元高斯消去法、直接三角分解法、雅克比迭代法、高斯-赛德尔迭代法以及追赶法的计算步骤。

实习设备

(1)硬件设备:单机或网络环境下的微型计算机一台;

(2)软件设备:DOS 3.3以上操作系统,Turbo C 2.0编译器。

实习内容

实习一高斯消去法

(1)用高斯消去法求解线性方程组:

(2)要求:

①将线性方程组写成用矩阵表示的形式,即Ax=b的形式。

②输出系数矩阵的原始元素和经高斯消去法消去后的矩阵元素。

③经高斯消去法消去后的矩阵是一个什么形式的矩阵?

④请写出程序的运行结果。

#include

#define N 4

int Gauss(float a[N][N],float b[N])

{

int i,j,k,flag=1;

float t;

for(i=0;i

{

if(a[i][i]==0)

{

flag=0;

break;

}

else

{

for(j=i+1;j

{

t=-a[j][i]/a[i][i];

b[j]=b[j]+t*b[i];

for(k=i;k

a[j][k]=a[j][k]+t*a[i][k];

}

}

}

return(flag);

}

void zg_matric(float a[N][N],float b[N])

{

int i,j;

for(i=0;i

{

for(j=0;j

printf("%10f",a[i][j]);

printf("%10f",b[i]);

printf("\n");

}

printf("\n");

}

void main()

{

static float a[N][N]={{1,-4,6,-5},{-5,21,-33,32},{6,-26,43,-48},{5,-24,45,-64}};

float b[N]={8,-32,25,-10};

float x[N]={0,0,0,0};

int i,j,flag;

zg_matric(a,b);

flag=Gauss(a,b);

if(flag==0)

printf("Gauss method does not run.");

else

{

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

x[i]=x[i]-a[i][j]*x[i];

x[i]=x[i]/a[i][i];

}

for(i=0;i

printf("x%d=%11.7f\n",i+1,x[i]);

}

}

(3)思考题:

①高斯消去法的基本思想是什么?

答:高斯消去法是最古老的求解线性代数方程组的方法之一,是消去法的一种特殊形式。

②高斯消去法由哪两个过程组成?

答:高斯消去法包括消元与回代两个过程。

实习二列主元高斯消去法求解线性方程组

(1)用列主元高斯消去法求解线性方程组:

(2)要求:

①输出系数矩阵的原始元素和经列主高斯消去法消去后的矩阵元素。

②经列主高斯消去法消去后的矩阵是一个什么形式的矩阵?

③请写出输出后的运行结果。

④若线性方程组的准确解为:,请通过计算绝对误差证明,

在一般情况下用经列主高斯消去法求解线性方程组是稳定的。#include

#include

#define N 3

void ColGauss(float a[N][N],float b[N])

{

float t,max_fab;

int i,j,k,l;

for(i=0;i

{

l=i;

max_fab=fabs(a[i][i]);

for(j=i+1;j

if(fabs(a[j][i]>max_fab))

{

l=j;

max_fab=fabs(a[l][i]);

}

if(i<1)

{

t=b[i];

b[i]=b[k];

b[k]=t;

for(j=i;j

{

t=a[i][j];a[i][j]=a[l][j];a[l][j]=t;

}

}

for (j=i+1;j

{

t=-a[j][i]/a[i][i];

b[j]=b[j]+t*b[i];

for(k=i;k

a[j][k]=a[j][k]+t*a[i][k];

}

}

}

void zg_matric(float a[N][N],float b[N])

{

int i,j;

for(i=0;i

{

for(j=0;j

printf("%10f",a[i][j]);

printf("%10f",b[i]);

printf("\n");

}

printf("\n");

}

void main()

{

static float a[N][N]={{0.02,4.0,1.38},{2.0,3.32,0.575},{4.0,5.0,4.0}};

float b[N]={9.0,16.0,1.0};

float x[N]={0,0,0};

int i,j;

zg_matric(a,b);

ColGauss(a,b);

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

x[i]=x[i]-a[i][j]*x[j];

x[i]=x[i]/a[i][i];

}

for(i=0;i

printf("x%d=%11.6f\n",i+1,x[i]);

}

(3)思考题:

①列主高斯消去法的基本思想是什么?

答:列主高斯消去法在高斯消去法每次进行消元之前先选取绝对值最大的元素作为主元素(位于主对角线上的在消去过程中作除数的元素称为主元素,简称主元)进行消去。

②在高斯消去法的基础上,引进经列主高斯消去法的两个主要原因是什么?

答:当时,消元过程就无法进行。另外,即使,但其绝对值很小时,

用它做除数,根据数值运算中“用绝对值很小的数做除数,舍入误差会增大,而且严重影响计算结果的精度”的原则,这种方法在一定程度上也具有局限性。为了克服这一局限性,产生了列主高斯消元法。

实习三柯朗分解法

(1)用柯朗分解法求解线性方程组:

(2)要求:

①输出系数矩阵的原始元素和经柯朗分解法后的L、U矩阵元素。

②经柯朗分解法后的L、U矩阵各是一个什么形式的矩阵?

③请写出程序的运行结果。

#include

#define N 4

void Lu(float a[N][N],float L[N][N],float U[N][N])

{

int i,j,k;

for(k=0;k

{

for(i=k;i

{

L[i][k]=a[i][k];

for(j=0;j<=k-1;j++)

L[i][k]-=(L[i][j]*U[j][k]);

}

for(j=k+1;j

{

U[k][j]=a[k][j];

for(i=0;i<=k-1;i++)

U[k][j]-=(L[k][i]*U[i][j]);

U[k][j]/=L[k][k];

}

}

}

void solve(float b[N],float L[N][N],float U[N][N],float x[N])

{

int j,k;

float y[N];

for(k=0;k

{

y[k]=b[k];

for(j=0;j<=k-1;j++)

y[k]=y[k]-L[k][j]*y[j];

y[k]=y[k]/L[k][k];

}

for(k=N-1;k>=0;k--)

{

x[k]=y[k];

for(j=k+1;j

x[k]=x[k]-U[k][j]*x[j];

}

}

void zg_matric(float a[N][N],float b[N])

{

int i,j;

for(i=0;i

{

for(j=0;j

printf("%10f",a[i][j]);

printf("%10f",b[i]);

printf("\n");

}

printf("\n");

}

void main()

{

static float a[N][N]={{1,2,3,4},{1,3,4,5},{2,1,4,4},{2,3,2,5}};

float b[N]={2,3,3,2};

float x[N]={0,0,0,0};

float U[N][N]={{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1}};

float L[N][N];

int i;

zg_matric(a,b);

Lu(a,L,U);

solve(b,L,U,x);

for(i=0;i

printf("x%d=%11.7f\n",i+1,x[i]);

}

(4)思考题:

①柯朗分解法的基本思想是什么?

答:

②在柯朗分解法汇中使用主对角线上的元素做分母计算时,如果分母绝对值很小(甚至可能为零),仍用它做除数,就会导致舍入误差增大(甚至不能保证柯朗分解法顺利进行),严重影响计算结果的精度。为解决这一问题,可以采取什么措施?

答:

实习四追赶法

(1)用追赶法求解线性方程组Ax=b:

(2)要求:请写出程序的运行结果。

#include

#define N 4

void zhuigan(float a[N][N],float b[N],float r[N],float y[N])

{

float q;

int i;

r[0]=a[1][0]/a[0][0];

y[0]=b[0]/a[0][0];

for(i=1;i

{

q=a[i][i]-r[i-1]*a[i-1][i];

r[i]=a[i+1][i]/q;

y[i]=(b[i]-y[i-1]*a[i-1][i])/q;

}

y[N-1]=(b[N-1]-y[N-2]*a[N-2][N-1])/(a[N-1][N-1]-r[N-2]*a[N-2][N-1]); }

void solve(float r[N],float y[N],float x[N])

{

int k;

x[N-1]=y[N-1];

for(k=N-2;k>=0;k--)

x[k]=y[k]-r[k]*x[k+1];

}

void main()

{

float a[N][N]={{1,3,0,0},{2,7,3,0},{0,2,7,3},{0,0,2,7}};

float b[N]={-2,-8,-6,5};

float r[N],y[N];

float x[N];

int i;

zhuigan(a,b,r,y);

solve(r,y,x);

for(i=0;i

printf("x%d=%13.6f\n",i+1,x[i]);

}

(3)思考题:

①追赶法的基本思想是什么?

答:追赶法是高斯消去法的一种简化形式,同样分为消元和回代两个过程。

②追赶法适合怎样形式的问题?

答:系数矩阵为三对角矩阵的方程组解法。

实习五雅克比迭代法与高斯-赛德尔迭代法

(1)用雅克比迭代法与高斯-赛德尔迭代法求解线性方程组Ax=b:

(2)要求:

①请写出程序的运行结果。

②请写出迭代次数。

雅克比迭代法:

#include

#include

#define N 3

#define MAX_N 100

#define eps 1e-6

int yacobi(float a[N][N],float b[N],float x[N])

{

float d,s,max;

float y[N];

int i,j,k,flag;

k=0;

for(i=0;i

x[i]=0.0;

while(1)

{

max=0.0;

k++;

for(i=0;i

{

s=0.0;

for(j=0;j

{

if(j==i) continue;

s=s+a[i][j]*x[j];

}

y[i]=(b[i]-s)/a[i][i];

d=fabs(y[i]-x[i]);

if(max

}

if(max

{

flag=1;

break;

}

if(k>=MAX_N)

{

flag=0;

break;

}

for(i=0;i

x[i]=y[i];

}

return(flag);

}

void zg_matric(float a[N][N],float b[N])

{

int i,j;

for(i=0;i

{

for(j=0;j

printf("%10f",a[i][j]);

printf("%12f",b[i]);

printf("\n");

}

printf("\n");

}

void main()

{

float a[N][N]={{6,2,-1},{1,4,-2},{-3,1,4}};

float b[N]={-3,2,4};

float x[N];

int i,k;

zg_matric(a,b);

k=yacobi(a,b,x);

if(k==1)

for(i=0;i

printf("x%d=%11.7f\n",i+1,x[i]);

else

printf("The Method is disconvergent!\n");

}

高斯-赛德尔迭代法:

#include

#include

#define N 3

#define MAX_N 100

#define eps 1e-6

int seidel(float a[N][N],float b[N],float x[N])

{

float d,s,max,temp;

int i,j,k,flag;

k=0;

for(i=0;i

x[i]=0.0;

while(1)

{

max=0.0;

k++;

for(i=0;i

{

s=0.0;

temp=x[i];

for(j=0;j

{

if(j==i) continue;

s=s+a[i][j]*x[j];

}

x[i]=(b[i]-s)/a[i][i];

d=fabs(x[i]-temp);

if(max

}

if(max

{

flag=1;

break;

}

if(k>=MAX_N)

{

flag=0;

break;

}

}

return(flag);

}

void zg_matric(float a[N][N],float b[N])

{

int i,j;

for(i=0;i

{

for(j=0;j

printf("%10f",a[i][j]);

printf("%12f",b[i]);

printf("\n");

}

printf("\n");

}

void main()

{

float a[][N]={{6,2,-1},{1,4,-2},{-3,1,4}};

float b[N]={100,-200,345};

float x[N];

int i,k;

zg_matric(a,b);

k=seidel(a,b,x);

if(k==1)

for(i=0;i

printf("x%d=%11.7f\n",i+1,x[i]);

else

printf("The Method is disconvergent!\n");

}

(3)思考题:

①雅克比迭代法与高斯-赛德尔迭代法的基本思想是什么?

答:

②观察右端项对迭代收敛是否有影响。答:

《计算方法》课内实验报告

《计算方法》实验报告 姓名: 班级: 学号: 实验日期: 2011年10月26日

一、实验题目: 数值积分 二、实验目的: 1.熟悉matlab 编写及运行数值计算程序的方法。 2.进一步理解数值积分的基础理论。 3.进一步掌握应用不同的数值积分方法求解给定的积分并给出数据结果及误差分析。 三、实验内容: 1.分别用复合梯形求积公式及复合辛普森求积公式计算积分xdx x ln 10 ? , 要求计算精度达到410-,给出计算结果并比较两种方法的计算节点数. 2.用龙贝格求积方法计算积分dx x x ?+3 021,使误差不超过510-. 3.用3=n 的高斯-勒让德公式计算积分?3 1 sin x e x ,给出计算结果. 4.用辛普森公式(取2==M N ) 计算二重积分.5 .00 5 .00 dydx e x y ? ? - 四、实验结果: 1.(1)复合梯形法: 将区间[a,b]划分为n 等份,分点n k n a b h kh a x k ,2,1,0,,=-=+=在每个区间[1,+k k x x ](k=0,1,2,···n-1)上采用梯形公式,则得 )()]()([2)()(1 11 1 f R x f x f h dx x f dx x f I n n k k k b a n k x x k k ++===∑?∑? -=+-=+ 故)]()(2)([21 1 b f x f a f h T n k k n ++=∑-=称为复合梯形公式 计算步长和划分的区间 Eps=1E-4 h1=sqrt(Eps/abs(-(1-0)/12*1/(2+1))) h1 =0.0600 N1=ceil(1/h1) N1 =17 用复合梯形需要计算17个结点。 复合梯形: function T=trap(f,a,b,n) h=(b-a)/n;

数值计算实验课题目

数值实验课试题 本次数值实验课结课作业,请按题目要求内容写一篇文章。按题目要求 人数自由组合,每组所选题目不得相同(有特别注明的题目除外)。试题如下: 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 语言将最速下降法编写成通用的子程序,然后用你编写的程序求解对称

数值计算方法教学大纲

《数值计算方法》教学大纲 课程编号:MI3321048 课程名称:数值计算方法英文名称:Numerical and Computational Methods 学时: 30 学分:2 课程类型:任选课程性质:任选课 适用专业:微电子学先修课程:高等数学,线性代数 集成电路设计与集成系统 开课学期:Y3开课院系:微电子学院 一、课程的教学目标与任务 目标:学习数值计算的基本理论和方法,掌握求解工程或物理中数学问题的数值计算基本方法。 任务:掌握数值计算的基本概念和基本原理,基本算法,培养数值计算能力。 二、本课程与其它课程的联系和分工 本课程以高等数学,线性代数,高级语言编程作为先修课程,为求解复杂数学方程的数值解打下良好基础。 三、课程内容及基本要求 (一) 引论(2学时) 具体内容:数值计算方法的内容和意义,误差产生的原因和误差的传播,误差的基本概念,算法的稳定性与收敛性。 1.基本要求 (1)了解算法基本概念。 (2)了解误差基本概念,了解误差分析基本意义。 2.重点、难点 重点:误差产生的原因和误差的传播。 难点:算法的稳定性与收敛性。 3.说明:使学生建立工程中和计算中的数值误差概念。 (二) 函数插值与最小二乘拟合(8学时) 具体内容:插值概念,拉格朗日插值,牛顿插值,分段插值,曲线拟合的最小二乘法。 1.基本要求 (1)了解插值概念。 (2)熟练掌握拉格朗日插值公式,会用余项估计误差。 (3)掌握牛顿插值公式。 (4)掌握分段低次插值的意义及方法。

(5)掌握曲线拟合的最小二乘法。 2.重点、难点 重点:拉格朗日插值, 余项,最小二乘法。 难点:拉格朗日插值, 余项。 3.说明:插值与拟合是数值计算中的常用方法,也是后续学习内容的基础。 (三) 第三章数值积分与微分(5学时) 具体内容:数值求积的基本思想,代数精度的概念,划分节点求积公式(梯形辛普生及其复化求积公式),高斯求积公式,数值微分。 1.基本要求 (1)了解数值求积的基本思想,代数精度的概念。 (2)熟练掌握梯形,辛普生及其复化求积公式。 (3)掌握高斯求积公式的用法。 (4)掌握几个数值微分计算公式。 2.重点、难点 重点:数值求积基本思想,等距节点求积公式,梯形法,辛普生法,数值微分。 难点:数值求积和数值微分。 3.说明:积分和微分的数值计算,是进一步的各种数值计算的基础。 (四) 常微分方程数值解法(5学时) 具体内容:尤拉法与改进尤拉法,梯形方法,龙格—库塔法,收敛性与稳定性。 1.基本要求 (1)掌握数值求解一阶方程的尤拉法,改进尤拉法,梯形法及龙格—库塔法。 (2)了解局部截断误差,方法阶等基本概念。 (3)了解收敛性与稳定性问题及其影响因素。 2.重点、难点 重点:尤拉法,龙格-库塔法,收敛性与稳定性。 难点:收敛性与稳定性问题。 3.说明:该内容是常用的几种常微分方程数值计算方法,是工程计算的重要基础。 (五) 方程求根的迭代法(4学时) 具体内容:二分法,解一元方程的迭代法,牛顿法,弦截法。 1.基本要求 (1)了解方程求根的对分法和迭代法的求解过程。 (2)熟练掌握牛顿法。 (3)掌握弦截法。 2.重点、难点 重点:迭代法,牛顿法。

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

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

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

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

曲线拟合的数值计算方法实验 【摘要】实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系;疾病疗效与疗程长短的关系;毒物剂量与致死率的关系等常呈曲线关系。曲线拟合(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使得拟合模型与实际观测值在

数值计算方法实验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

c 计算器实验报告

简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (1)体系设计: 程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,运算结果能正确显示,可以清楚数据等。 (2)设计思路: 1)先在Visual C++ 6.0中建立一个MFC工程文件,名为 calculator. 2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和单 选框 3)设计按钮,并修改其相应的ID与Caption. 4)选择和设置各控件的单击鼠标事件。 5)为编辑框添加double类型的关联变量m_edit1. 6)在calculatorDlg.h中添加math.h头文件,然后添加public成 员。 7)打开calculatorDlg.cpp文件,在构造函数中,进行成员初始 化和完善各控件的响应函数代码。 (3)程序清单:

●添加的public成员: double tempvalue; //存储中间变量 double result; //存储显示结果的值 int sort; //判断后面是何种运算:1.加法2.减法3. 乘法 4.除法 int append; //判断后面是否添加数字 ●成员初始化: CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCalculatorDlg) m_edit1 = 0.0; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); tempvalue=0; result=0; sort=0; append=0; }

2021年常系数线性方程组基解矩阵的计算

常系数线性方程组基解矩阵的计算 欧阳光明(2021.03.07) 董治军 (巢湖学院数学系,安徽巢湖238000) 摘要:微分方程组在工程技术中的应用时非常广泛的,不少问题都归结于它的求解问题,基解矩阵的存在和具体寻求是不同的两回事,一般齐次线性微分方程组的基解矩阵是无法通过积分得到的,但当系数矩阵是常数矩阵时,可以通过方法求出基解矩阵,这时可利用矩阵指数exp A t,给出基解矩阵的一般形式,本文针对应用最广泛的常系数线性微分方程组,结合微分方程,线性代数等知识,讨论常系数齐次线性微分方程的基解矩阵的几个一般的计算方法. 关键词;常系数奇次线性微分方程组;基解矩阵;矩阵指数Calculation of Basic solution Matrix of Linear Homogeneous System with Constant Coefficients Zhijun Dong (Department of Mathematics,Chaohu CollegeAnhui,Chaohu) Abstract:Differential equations application in engineering technology is very extensive, when many problems are attributable to its solving problem, base solution matrix existence and specific seek is different things, general homogeneous linear differential equations is not the

数值分析实验报告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 姓名:万轩 实验二插值法

《数值计算方法实习》教学大纲

《数值计算方法实习》教学大纲 Numerical Computation Method Practice 适用本科四年制信息与计算科学专业(2周 2学分) 一、课程的目的和任务 本课程的授课对象是信息与计算科学专业本科生,属信息与计算科学专业公共基础课。 数值计算方法是一门专门研究各种数学问题近似解法的课程,它是一门与计算机应用密切结合的实用性很强的数学课程。在数值计算方法课程中,讲授了各种数学问题的近似解法,这些近似解法的计算量很大,只有利用计算机计算,这些解法才具有实用意义。因而上机实习,掌握这些近似解法的计算机实现是数值计算方法课程学习的一个重要环节。 本课程实习的主要目的是通过科学计算语言MA TLAB的学习,利用MA TLAB求解各种数学问题的近似解,使学生对数值计算方法课程所学的各种近似解法能在计算机上实现,提高学生对数值计算方法课程讲授的各种数学问题近似解法的理解和掌握。 通过本实践环节,要求学生初步掌握MATLAB的使用方法,掌握利用MATLAB求解各种数学问题近似解的算法,通过上机实践,提高学生对各种数学问题近似解法的实际运用能力,并能应用所学的方法解决一些较简单的实际问题。 二、课程的基本要求和特点 本课程是一门既有系统理论又有较强实践性的技术基础课,学习本课程需坚持理论联系实际的学风,必须在学习数值计算方法课程讲授的各种数学问题近似解法的基础上,动手编写一些简单的MA TLAB程序,利用MATLAB来实现求解各种数学问题的近似解;同时要注意数学软件的使用原理及使用方法。本课程是一门实用性很强的应用数学课程。 三、本课程与其它课程的联系 本课程实习是对前期《数值计算方法》课程的巩固,数值计算方法课程涉及面较宽,必须先修课程为《数学分析》、《高等代数》、《常微分方程》、《计算机应用基础》、《数值计算方法》。 四、课程的主要内容 1 数学软件MATLAB 教学要求: 了解:MA TLAB的基本特点,MATLAB的启动方法和工作界面,MATLAB数值计算,MATLAB程序设计,MATLAB绘图。 掌握:MA TLAB的基本操作,MATLAB的基本运算。。 教学要点: (1)MATLAB的基本特点、启动方法和工作界面; (2)MATLAB的基本操作; (3)MATLAB的基本运算; (4)MATLAB数值计算; (5)MATLAB程序设计; (6)MATLAB绘图。 2数值计算方法实习 教学要求: 掌握:MATLAB数值计算语句的使用,利用MA TLAB编制程序将求解各种数学问题近似解的公式转化为计算机程序,利用MA TLAB绘图。

计算方法实验报告格式

计算方法实验报告格式 小组名称: 组长姓名(班号): 小组成员姓名(班号): 按贡献排序情况: 指导教师评语: 小组所得分数: 一个完整的实验,应包括数据准备、理论基础、实验内容及方法,最终对实验结果进行分析,以达到对理论知识的感性认识,进一步加深对相关算法的理解,数值实验以实验报告形式完成,实验报告格式如下: 一、实验名称 实验者可根据报告形式需要适当写出. 二、实验目的及要求 首先要求做实验者明确,为什么要做某个实验,实验目的是什么,做完该实验应达到什么结果,在实验过程中的注意事项,实验方法对结果的影响也可以以实验目的的形式列出. 三、算法描述(实验原理与基础理论) 数值实验本身就是为了加深对基础理论及方法的理解而设置的,所以要求将实验涉及到的理论基础,算法原理详尽列出. 四、实验内容 实验内容主要包括实验的实施方案、步骤、实验数据准备、实验的算法以及可能用到的仪器设备. 五、程序流程图 画出程序实现过程的流程图,以便更好的对程序执行的过程有清楚的认识,在程序调试过程中更容易发现问题. 六、实验结果 实验结果应包括实验的原始数据、中间结果及实验的最终结果,复杂的结果可以用表格

形式列出,较为简单的结果可以与实验结果分析合并出现. 七、实验结果分析 实验结果分析包括对对算法的理解与分析、改进与建议. 数值实验报告范例 为了更好地做好数值实验并写出规范的数值实验报告,下面给出一简单范例供读者参考. 数值实验报告 小组名称: 小组成员(班号): 按贡献排序情况: 指导教师评语: 小组所得分数: 一、实验名称 误差传播与算法稳定性. 二、实验目的 1.理解数值计算稳定性的概念. 2.了解数值计算方法的必要性. 3.体会数值计算的收敛性与收敛速度. 三、实验内容 计算dx x x I n n ? += 1 10 ,1,2,,10n = . 四、算法描述 由 dx x x I n n ? += 1 10 ,知 dx x x I n n ?+=--101110,则

《大数据分析与挖掘》课程教学大纲

《大数据分析与挖掘》课程教学大纲 一、课程基本信息 课程代码:16054103 课程名称:大数据分析与挖掘 英文名称:Big data analysis and mining 课程类别:专业选修课 学时:48(理论课:32, 实验课:16) 学 分:3 适用对象: 软件工程专业、计算机科学与技术 考核方式:考查 先修课程:多媒体技术、程序设计、软件工程 二、课程简介 本课程从大数据挖掘分析技术实战的角度,结合理论和实践,全方位地介绍基于Python语言的大数据挖掘算法的原理与使用。本课程涉及的主题包括基础篇和实战篇两部分, 其中基础篇包括:数据挖掘基础,Python数据分析简介,数据探索,数据预处理和挖掘建模;实战篇包括:电力窃漏电用户自动识别,航空公司客户价值分析,中医证型关联规则挖掘,基于水色图像的水质评价,家用电器用户行为分析与事件识别,应用系统负载分析与磁盘容量预测和电子商务网站用户行为分析及服务推荐。 本课程不是一个泛泛的理论性、概念性的介绍课程,而是针对问题讨论基于Python语言机器学习模型解决方案的深入课程。教师对于上述领域有深入的理论研究与实践经验,在课程中将会针对这些问题与学员一起进行研究,在关键点上还会搭建实验环境进行实践研究,以加深对于这些解决方案的理解。通过本课程学习,目的是让学生能够扎实地掌握大数据分析挖掘的理论与应用。 This course introduces the principle and application of big data mining algorithm based on Python language comprehensively from the perspective of big data mining analysis technology practice, combining theory and practice. This course covers two parts, the basic part and the practical part. The basic part includes: basic data mining, introduction to Python data analysis, data exploration, data preprocessing and mining modeling. Practical article included: electric power leakage automatic identification of the user, airlines customer value analysis, TCM syndrome association rule mining, based on water quality evaluation of color image, household electrical appliances

计算方法实验报告 拟合

南京信息工程大学实验(实习)报告 一、实验目的: 用最小二乘法将给定的十个点拟合成三次多项式。 二、实验步骤: 用matlab编制以函数为基的多项式最小二乘拟合程序,并用于对下列数据作三次多项式最小二乘拟合(取权函数wi=1) x -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 y -2.30 -1 -0.14 -0.25 0.61 1.03 1.75 2.75 4.42 6.94 给定直线方程为: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

-2.5 -2-1.5-1-0.5 00.51 1.52 2.5 -4-20246 81012 x 轴 y 轴 拟合图 离散点 y=a(1)+a(2)*x+a(3)*x.2+a(4)*x.3 结论: 一般情况下,拟合函数使得所有的残差为零是不可能的。由图形可以看出最小二乘解决了残差的正负相互抵消的问题,使得拟合函数更加密合实验数据。 优点:曲线拟合是使拟合函数和一系列的离散点与观测值的偏差平方和达到最小。 缺点:由于计算方法简单,若要保证数据的精确度,需要大量的数据代入计算。

数值计算方法大纲

数值分析 一、课程名称:数值分析(Numerical Analysis ) 课程负责人:邹昌文 二、学时与学分:64学时,4学分 三、适用专业:信息与计算科学 四、课程教材:李有法编. 数值计算方法. 高等教育出版社,1996 五、参考教材:杜延松编. 数值分析及实验. 科学出版社,2006 丁丽娟编. 数值计算方法. 北京理工大学出版社,1997 郑咸义编.计算方法. 华南理工大学出版社,2002 六、开课单位:理学院 七、课程的性质、目的和任务: 本课程是计算机科学与技术本科专业的一门专业基础课,是培养学生掌握计算机上常用的数值分析方法以及有关的基本概念与理论的专业基础学科。 本课程的主要任务是,通过对数值分析内容的讲解,培养学生使用所学方法进行科学计算的能力,着重培养学生用数学的思想去指导编程的能力。 八、课程的基本要求: 通过理论教学达到如下基本要求。 1.了解误差的概念 2.掌握常用的解非线性方程根的方法 3.熟练掌握线性代数方法组的解法 4.熟练掌握插值与拟合的常用方法 5.掌握数值积分方法 6.了解常微分方程初值问题的数值方法 九、课程的主要内容: 理论教学 1. 误差的概念 误差的来源、绝对误差、相对误差、有效数字、误差的传播、数值运算中应注意的问题 2. 解非线性方程根的方法 二分法、迭代法、牛顿迭代法、迭代法的收敛阶与加速收敛方法 3. 线性代数方法组的解法 高斯消去法、三角分析法、向量与矩阵的范数、迭代法、方程组的状态与解的迭代改善 4. 插值与拟合 插值概念与基本理论、插值多项式的存在唯一性、插值多项式的求法、分段低次插值、曲线拟合的最小二乘法 5. 数值积分方法 构造数值积分公式的基本方法与有关概念、牛顿-科茨公式 6. 常微分方程初值问题的数值方法 欧拉方法与改进欧拉方法、龙格-库塔法

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

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;

计算方法课程教学大纲解答

计算方法》课程教学大纲 课程编号: 学时:54 学分:3 适用对象:教育技术学专业先修课程:高等数学、线性代数 考核方式:本课程考试以笔试为主70%,兼顾学生的平时成绩30%。使用教材及主要参考书:使用教材: 李庆扬. 《数值分析(第四版)》, 清华大学出版,2014 年。 主要参考书: 1.朱建新,李有法. 《高等学校教材:数值计算方法(第3版)》,高等教育出版社,2012 2.徐萃薇,孙绳武. 《计算方法引论(第4版)》,高等教育出版社,2015 。 一课程的性质和任务计算方法是教育技术学专业学生的一门专业选修课。作为计算数学的一个重要分支,它是数学科学与计算机技术结合的一门应用性很强的学科,本课程重点介绍计算机上常用的基本计算方法的原理和使用;同时对计算方法作适当的分析。 教学任务:通过本课程的学习,要使学生具有现代数学的观点和方法,并初步掌握处理计算机常用数值分析的构造思想和计算方法。同时,也要培养学生抽象思维和慎密概括的能力,使学生具有良好的开拓专业理论的素质和使用所学知识分析和解决实际问题的能力。 二教学目的与要求教学目的:通过学习使学生了解数值计算方法的基本原理。了解计算机与数学结合的作用及课程的应用性。为今后使用计算机解决实际问题中的数值计算问题打下基础。 通过理论教学达到如下基本要求。 1.了解误差的概念2.掌握常用的解非线性方程根的方法3.熟练掌握线性代数方法组的解法4.熟练掌握插值与拟合的常用方法5.掌握数值积分方法 6.了解常微分方程初值问题的数值方法 三学时分配

四教学中应注意的问题 本课程是一门理论性较强、内容较抽象的综合课程,因此面授辅导或自学,将是不可缺少的辅助教学手段,教师在教学的过程中一定要注意理论结合实际,课堂教学并辅助上机实验,必须通过做练习题和上机实践来加深对概念的理解和掌握,熟悉公式的运用,从而达到消化、掌握所学知识的目的。同时应注重面授辅导或答疑,及时解答学生的疑难问题。五教学内容 第一章绪论(误差) 基本内容: 第一节数值分析研究的对象和特点 第二节数值计算的误差 1.误差的来源与分类 2.误差与有效数字 3.数值运算的误差估计 第三节误差的定性分析与避免误差的危害 1.病态问题与条件数 2.算法的数值稳定性 3.避免误差危害的若干原则教学重点难点: 重点:数值运算的误差估计 难点:误差的定性分析与避免误差的危害。 教学建议: 了解数值分析的背景、对象与特点。理解误差的来源与分类、有效数字、误差估计、算法的数值稳定性与病态算法。熟练掌握与误差相关的概念以及避免误差危害的若干原则。第二章插值法基本内容: 第一节引言 第二节拉格朗日插值 1.线性插值与抛物插值 2.拉格朗日插值多项式 3.插值余项、误差估计

数值分析实验报告总结

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

如果 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 ,那 外,还规定其必须满足相容性: 所以

数据分析方法教学大纲

《数据分析方法与软件》课程教学大纲课程类型:选修课程代码:课程总学时:64 总学分: 2 实验课程性质:非独立课程实验学时: 32 实验学分: 课程类别:专业课适用专业:计信本 开课时间: 04 年级 6 学期开课单位:计算机学院 大纲执笔人:彭平大纲审定人: 一、实验课程名称: 数据分析方法(Methods of Data Analysis with software) 二、课程简介 数据分析是分析和处理数据的理论和方法,从中获取有用的信息。数据作为信息的重要载体在当今信息化社会扮演着重要的角色。信息与计算科学专业则主要研究信息技术的核心基础与运用现代计算机工具高效求解科学与工程问题的数学理论与方法。基于这一专业定位,信息与计算科学可包括信息科学与科学计算两个大的方向。而信息科学可以理解为“有关信息获取、信息传输、信息处理与信息控制基础的科学”。数据分析正是信息科学的重要专业基础课程。 三、适用专业与学时学分: 1.信息与计算科学课程总学时:64;总学分:4实验32学时 四、教学目的和内容要求 通过本课程的学习,使学生对数据分析方法的基本原理有系统的理解,掌握利用专业软件进行数据统计分析的方法和步骤。培养学生应用计算机进行统计分析的能力,为后续课程的学习以及解决实际问题打下良好的基础, 1、通过本课程的学习与实践,掌握数据分析的基本原理和统计软件SPSS系统基本用法。

2、通过本课程的学习与实践,能够对数据进行描述性统计分析,熟练使用SPSS软件内部函数,并能分析所得结果。 3、通过本课程的学习与实践,加深对数据分析方法的基本理论(回归分析、方差分析、聚类分析、判别分析等)的理解,掌握统计软件的各个操作方法和步骤,并能结合具体问题和相关知识对计算结果给出合理的解释。 主要内容: 五、实验课程内容及要求

数值计算方法实验3

学院(系)名称:

附录(源程序及运行结果): 一.变步长梯形法 #include #include double f(double x){return 4/(1+x*x);} void main(){ double a,b,h,T1,T2,e,S,x; printf("请输入区间a和b:"); scanf("%lf,%lf",&a,&b); printf("精度:"); scanf("%lf",&e); h=b-a; T2=h/2*(f(a)+f(b)); do{ T1=T2; S=0; x=a+h/2; do{ S=S+f(x); x=x+h; }while(x=e); printf("用变步长梯形法输出T2:%lf\n",T2); } 运行结果: 二.龙贝格积分法 #include #include double f(double x){return sin(x);} void main(){ double a,b,h,T1,T2=1,e,S,S1,S2=1,x,C1,C2,R1=0,R2=1; printf("请输入区间a和b:"); scanf("%lf,%lf",&a,&b); printf("精度:"); scanf("%lf",&e); h=2*(b-a); T2=(b-a)/2*(f(a)+f(b)); int k=0; while(fabs(R2-R1)>=e){ k=k+1; h=h/2; T1=T2; S1=S2; S=0; x=a+h/2; do{S=S+f(x); x=x+h; }while(x

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

计算方法上机实验报告——拉格朗日插值问题 一、方法原理 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;

相关主题
文本预览
相关文档 最新文档