文档库 最新最全的文档下载
当前位置:文档库 › 数值分析中的各种公式C 代码

数值分析中的各种公式C 代码

数值分析中的各种公式C  代码
数值分析中的各种公式C  代码

二分法

2.2 算法步骤

步骤1:准备计算f(x)在有根区间[a,b]端点处的值f(a),f(b).

步骤2:二分计算f(x)在区间中点(a+b)/2处的值f((a+b)/2).

步骤3:判断若f((a+b)/2)=0,则(a+b)/2即是根,计算过程结束,否则检验;

若f((a+b)/2)f(a)<0,则以(a+b)/2代替b,否则以(a+b)/2代替a.

反复执行步骤2和步骤3,直到区间[a,b]的长度小于允许误差e,此时中点(a+b)/2即为所求近似根。

2.3 程序流程图

3 实验结果分析

#include"stdio.h"

void main()

{

float a,b,e,x,c;

int k=0,n=1;

scanf("%f,%f,%f",&a,&b,&e);

while(n==1)

{

x=(a+b)/2;c=(x*x*x-x-1)*(a*a*a-a-1);

if(c<0)

{

b=x;

if(b-a<=e)

{

printf("%f,%d\n",x,k);

break;}

else k++;}

{ if(c==0) { printf("%f,%d\n",x,k);

break;}

else { a=x; if(b-a<=e) { printf("%f,%d\n",x,k);

break;}

else k++;

}}}}

高斯塞德尔迭代法求方程组解 高斯主元素消去法求方程组解

2.2 算法步骤

高斯塞德尔迭代法:

步骤1:给定初值)

0(1)0(2)0(1,...,,n x x x ,精度ε,最大容许迭代次数M,令k=1。

步骤2:对 i=1,2,…,n 依此计算)

0()1()

0()

1(01)0()1()

1().(i i i

i i ii

n

j j j ij i

i

x x x x e a x a x

x

→-=-=∑≠=

步骤3:求出 e=

}{max 1i n

i e ≤≤,若 e<ε,则输出 )

0(i x (i=1,2,..,n ),停止计算。否则执行步 步骤4:若k

高斯主元素消去法:

步骤1:det ←1,k=1,2,…,n-1,从第2步做到第7步; 步骤2: 按列主元素ik k ik a a ,max =

步骤3:如果 k ik a ,=0,则 det ←0,计算停止。 步骤4:若 k i k =,转步骤5,否则换行:

det det ,),,...1,(,,←?+=?ik k j ik kj b b n k k j a a

步骤5:计算乘数ik m , kk ik ik ik a a m a /=← (i=k_1,…,n) 步骤6:消元计算

)

,...,1(,),...,1,(,n k i b m b b n k j i a m a a i ik i i kj ik ij ij +=-←+=-←

步骤7:det kk a ←det;

步骤8:若 0det ,0←=nn a 计算停止。否则 det det nn a ←

步骤9:回代求解

ii

j

n

i j ij

ij i nn

n n a

b a a b a b b )(/1

∑+=-

←← (i=n-1, (1)

2.3 程序流程图

3 实验结果分析高斯塞德尔迭代法:

高斯主元素消去法:

高斯塞德尔迭代法:

#include

#include//控制输入的格式,如下边setw(6),1.234567控制了小数点后六位#include

#include

#define M 10

int n;

void Gauss_seidel(double x[],double x0[],double a[][M],double b[],double eps,int Nmax) {

int i,j,s=0;

double max;

while(s

{

for(i=0;i

{

x[i]=b[i];

for(j=0;j

if(j!=i)

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

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

}

max=fabs(x[0]-x0[0]);

for(i=1;i

if(fabs(x[i]-x0[i])>max)

max=fabs(x[i]-x0[i]);

if(max

break;

for(i=0;i

x0[i]=x[i];

s++;

}

if(s>=Nmax)

cout<<"迭代发散!\n"<

else

{

cout<<"原方程组的解为:\n"<

for(i=0;i

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

}

}

void main()

{

double a[10][10]={{5,2,1},{-1,4,2},{2,-3,10}};

double b[10]={-12,20,3};

double x[10],x01[10];

double eps;// 精度

int i,j,s=0,Nmax;

cout<<"方程组系数矩阵:"<

n=3;

for(i=0;i

{

for(j=0;j

cout<

cout<

}

cout<<"输入初始向量:"<

for(i=0;i

{

printf("X%d=",i+1);

cin>>x[i];

x01[i]=x[i];

}

cout<<"\n输入所需精度:"<

cin>>eps;

cout<<"输入最大迭代次数:"<

cin>>Nmax;

Gauss_seidel(x,x01,a,b,eps,Nmax);

cout<

}

高斯主元素消去法:

#include

#include

#include

//在列向量中寻找绝对值最大的项,并返回该项的标号

int FindMax(int p,int N,double *A)

{

int i=0,j=0;

double max=0.0;

for(i=p;i

{

if(fabs(A[i*(N+1)+p])>max)

{

j=i;

max=fabs(A[i*(N+1)+p]);

}

}

return j;

}

//交换矩阵中的两行

void ExchangeRow(int p,int j,double *A,int N)

{

int i=0;

double C=0.0;

for(i=0;i

{

C=A[p*(N+1)+i];

A[p*(N+1)+i]=A[j*(N+1)+i];

A[j*(N+1)+i]=C;

}

}

//上三角变换,A为增广矩阵的指针,N为矩阵的行数。

{

int p=0,k=0,q=0,j=0;

double m=0.0;

for(p=0;p

{

//找出该列最大项的标号

j=FindMax(p,N,A);

//交换p行和j行

ExchangeRow(p,j,A,N);

if(A[p*(N+1)+p]==0)

{

printf("矩阵是一个奇异矩阵,没有唯一解!");

break;

}

//消去P元素以下的p列内容。

for(k=p+1;k

{

m=A[k*(N+1)+p]/A[p*(N+1)+p];

for(q=p;q

A[k*(N+1)+q]=A[k*(N+1)+q]-m*A[p*(N+1)+q];

}

}

printf("\n增广矩阵高斯列主元消去后的矩阵为:\n");

for(j=0;j

{

if(j%(N+1)==0)

printf("\n");

printf("%lf\t",A[j]);

}

}

//下面是回代函数

double* backsub(double *A,int N)

{

double* X=NULL,temp=0.0;

int k=0,i=0;

X=(double*)malloc(N*sizeof(double));

X[N-1]=A[(N-1)*(N+1)+N]/A[(N-1)*(N+1)+N-1];

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

{

temp=0.0;

for(i=k+1;i

temp=temp+A[k*(N+1)+i]*X[i];

X[k]=(A[k*(N+1)+N]-temp)/A[k*(N+1)+k];

}

return X;

}

main()

{

int N=0,i=0;

double *A=NULL,*X=NULL;

printf("\n请输入待求解方程组的增广矩阵的行数:");

scanf("%d",&N);

if(N>256||N<=0)

{

printf("输入的数字不再范围之内!!!");

printf("\n");

return 0;}

else

{

A=(double*)calloc(N*(N+1),sizeof(double));

printf("请输入待求解方程组的增广矩阵(%d行%d列):\n",N,N+1);

for(i=0;i

scanf("%lf",&A[i]);

system("cls");

printf("方程的增广矩阵为:\n");

for(i=0;i

{

if(i%(N+1)==0)

printf("\n");

printf("%lf\t",A[i]);}

uptrbk(A,N); //上三角变换

X=backsub(A,N); //回代函数

printf("\n\n方程组的解为:\n");

for(i=0;i

printf("X(%d)= %lf\n",i+1,X[i]);}

free(A);

free(X);

exit(0);

}

二次或者三次样条插值

#include "math.h"

#include "stdio.h"

#include

#include "iostream.h"

#define BOOL int

#define FALSE 0

#define TRUE 1

//计算分段线性插值的系数

void LinearCoe(double * pd_X, double * pd_Y,double * pd_Coe, int i)

{

pd_Coe[0] = (-pd_X[i]*pd_Y[i+1]+pd_X[i+1]*pd_Y[i])/(pd_X[i+1]-pd_X[i]);

pd_Coe[1] = (pd_Y[i+1]-pd_Y[i])/(pd_X[i+1]-pd_X[i]);

}

//计算分段二次多项式插值的系数

void QuadrateCoe(double * pd_X, double * pd_Y,double * pd_Coe, int i)

{

int n = 2;

double * pd_MatrixA = new double[(n+1)*(n+1)];

double * pd_VectorB = new double[n+1];

pd_VectorB[0] = pd_Y[i-1];

pd_VectorB[1] = pd_Y[i];

pd_VectorB[2] = pd_Y[i+1];

for(int j = 0; j < n+1; j++)

{

pd_MatrixA[j*3] = pd_X[i+j-1]*pd_X[i+j-1];

pd_MatrixA[j*3 + 1] = pd_X[i+j-1];

pd_MatrixA[j*3 + 2] = 1;

}

GaussRemove(pd_MatrixA,pd_VectorB,pd_Coe,n+1);

//计算分段三次多项式插值的系数

void ThriceCoe(double * pd_X, double * pd_Y,double * pd_Coe, int i)

{

int n = 3;

double * pd_MatrixA = new double[(n+1)*(n+1)];

double * pd_VectorB = new double[n+1];

pd_VectorB[0] = pd_Y[i-2];

pd_VectorB[1] = pd_Y[i-1];

pd_VectorB[2] = pd_Y[i];

pd_VectorB[3] = pd_Y[i+1];

for(int j = 0; j < n+1; j++)

{

pd_MatrixA[j*4] = pd_X[i+j-2]*pd_X[i+j-2]*pd_X[i+j-2];

pd_MatrixA[j*4 + 1] = pd_X[i+j-2]*pd_X[i+j-2];

pd_MatrixA[j*4 + 2] = pd_X[i+j-2];

pd_MatrixA[j*4 + 3] = 1;

}

GaussRemove(pd_MatrixA,pd_VectorB,pd_Coe,n+1);

}

//计算三次样条插值函数的系数组M

void SplineCoe(double * pd_X, double * pd_Y, int N, double * pd_h, double * pd_M) {

int n = N -1;

double * pd_Alpha = new double[n]; //系数数组Alpha

double * pd_Beta = new double[n]; //系数数组Beta

double * pd_Gama = new double[n]; //系数数组Gama

for(i = 0; i < n; i++) //计算Alpha,Beta,Gama

{

pd_Alpha[i] = pd_h[0]/(pd_h[0] + pd_h[i]);

pd_Gama[i] = 1 - pd_Alpha[i];

pd_Beta[i] = 6 * (((pd_Y[1]-pd_Y[0])/pd_h[0]) - ((pd_Y[i+1]-pd_Y[i])/pd_h[i])) / (pd_h[0] + pd_h[i]);

}

double * pd_MatrixA = new double[n*n];

for(i = 0; i < n; i++)

{

for(j = 0; j < n; j++)

{

if (i == j)

{

pd_MatrixA[i*n+j] = 2;

}

else if (j == (i+1))

{

pd_MatrixA[i*n+j] = pd_Alpha[i];

}

else if (j == (i-1))

{

pd_MatrixA[i*n+j] = pd_Gama[i];

}

else

pd_MatrixA[i*n+j] = 0;

}

pd_MatrixA[n-1] = pd_Gama[0];

pd_MatrixA[(n-1)*n] = pd_Alpha[n-1];

// ShowMatrix(pd_MatrixA,n,n);

GaussRemove(pd_MatrixA,pd_Beta,&(pd_M[1]),N-1);

pd_M[0] = pd_M[N-1];

// ShowVector(pd_Beta,n);

delete pd_Alpha;

delete pd_Beta;

delete pd_Gama;

delete pd_MatrixA;

}

复化梯形公式和复化辛普森公式

对应程序

实验一的源程序:

#include

#include

double fun1(double x,double y,int n)

{

int i;

double sum=0,m;

for(i=1;i<=n-1;i++) //求f(x(k))的和

{

m=x+i*y;

sum=sum+sqrt(1+pow(2.718,m));

}

return sum;

}

double get(double x)

{

return sqrt(1+pow(2.718,x));

}

double fun2(double x,double y,int n)

{

for(i=1;i<=n-1;i++)//求f(x(k))的和

{

sum1+=get(x+i*y+y/2);

sum2+=get(x+i*y);

}

ff=4*sum1+2*sum2;

return ff;

}

void main()

{

double a=0,b=2;//给定的区间

int n;

while(1)

{

cout<<"请输入要等分的子区间个数(n>0):";

cin>>n;

double h;

double I1,f10,f11,f12;

double I2,f20,f21,f22;

h=(b-a)/n;//步长

f10=get(a);

f11=fun1(a,h,n);

f12=get(b);

f20=f10;

f21=fun2(a,h,n);

f22=f12;

I1=h/2*(f10+2*f11+f12);//复化梯形公式

I2=h/6*(f20+f21+f22); //复化辛浦生公式

cout<<"等分成"<

cout<<"复化梯形公式计算结果I="<

cout<<"复化辛浦生公式计算结果I="<

}

}

实验内容二的源程序:

#include

#include

double get(double x)

{

if(x==0) return 1;

else return sin(x)/x;

}

double fun(double x,double y,int n)

{

int i;

for(i=1;i<=n-1;i++)//求f(x(k))的和

{

sum1+=get(x+i*y+y/2);

sum2+=get(x+i*y);

}

ff=4*sum1+2*sum2;

return ff;

}

void main()

{ double a=0,b=1;//给定的区间

int n;//等分成n个空间

while(true)

{

cout<<"请输入要等分的子区间个数(n>0):";

cin>>n;

if(n==-1)

break;

double h;

double I1,f11,f12,f13;

h=(b-a)/n;//步长

f11=get(a);

f12=fun(a,h,n);

f13=get(b);

I1=h/6*(f11+f12+f13);//复化辛浦生公式

cout<<"等分成"<

cout<<"复化辛浦生公式计算结果:I="<

}

}

10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔 (转)

1.拉格朗日插值多项式,用于离散数据的拟合

C/C++ code#include

#include

#include

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.牛顿插值多项式,用于离散数据的拟合

C/C++ code#include

#include

#include

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

f[i+1]=(f[i]-y[i])/(x[k]-x[i]);

y[k]=f[k];

}

return;

数值分析所有代码

实验一:拉格朗日插值多项式 命名(源程序.cpp及工作区.dsw):lagrange 问题: 4 //Lagrange.cpp #include #include #define N 4 int checkvalid(double x[], int n); void printLag (double x[], double y[], double varx, int n); double Lagrange(double x[], double y[], double varx, int n); void main () { double x[N+1] = {0.4, 0.55, 0.8, 0.9, 1}; double y[N+1] = {0.41075, 0.57815, 0.88811, 1.02652, 1.17520}; double varx = 0.5; if (checkvalid(x, N) == 1) { printf("\n\n插值结果: P(%f)=%f\n", varx, Lagrange(x, y, varx, N)); } else { printf("结点必须互异"); } getch(); } int checkvalid (double x[], int n) { int i,j; for (i = 0; i < n; i++) { for (j = i + 1; j < n+1; j++) { if (x[i] == x[j])//若出现两个相同的结点,返回-1 { return -1; } } }

数值分析重点公式

第一章 非线性方程和方程组的数值解法 1)二分法的基本原理,误差:~ 1 2 k b a x α+--< 2)迭代法收敛阶:1lim 0i p i i c εε+→∞ =≠,若1p =则要求01c << 3)单点迭代收敛定理: 定理一:若当[],x a b ∈时,[](),x a b ?∈且' ()1x l ?≤<,[],x a b ?∈,则迭代格式收敛 于唯一的根; 定理二:设()x ?满足:①[],x a b ∈时,[](),x a b ?∈, ②[]121212,,, ()(),01x x a b x x l x x l ???∈-≤-<<有 则对任意初值[]0,x a b ∈迭代收敛,且: 110 1 11i i i i i x x x l l x x x l αα+-≤ ---≤-- 定理三:设()x ?在α的邻域内具有连续的一阶导数,且'()1?α<,则迭代格式具有局部收敛性; 定理四:假设()x ?在根α的邻域内充分可导,则迭代格式1()i i x x ?+=是P 阶收敛的 () ()()0,1,,1,()0j P j P ? α?α==-≠ (Taylor 展开证明) 4)Newton 迭代法:1'() () i i i i f x x x f x +=-,平方收敛 5)Newton 迭代法收敛定理: 设()f x 在有根区间[],a b 上有二阶导数,且满足: ①:()()0f a f b <; ②:[]' ()0,,f x x a b ≠∈; ③:[]'' ,,f x a b ∈不变号 ④:初值[]0,x a b ∈使得'' ()()0f x f x <; 则Newton 迭代法收敛于根α。

数值分析实验报告1

实验一 误差分析 实验(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对()中19x 的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b =

的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve = ))20:1((ve poly roots + 上述简单的Matlab 程序便得到()的全部根,程序中的“ess ”即是()中的ε。 实验要求: (1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。 如果扰动项的系数ε很小,我们自然感觉()和()的解应当相差很小。计算中你有什么出乎意料的发现表明有些解关于如此的扰动敏感性如何 (2)将方程()中的扰动项改成18x ε或其它形式,实验中又有怎样的现象 出现 (3)(选作部分)请从理论上分析产生这一问题的根源。注意我们可以将 方程()写成展开的形式, ) 3.1(0 ),(1920=+-= x x x p αα 同时将方程的解x 看成是系数α的函数,考察方程的某个解关于α的扰动是否敏感,与研究它关于α的导数的大小有何关系为什么你发现了什么现象,哪些根关于α的变化更敏感 思考题一:(上述实验的改进) 在上述实验中我们会发现用roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。

数值分析的MATLAB程序

列主元法 function lianzhuyuan(A,b) n=input('请输入n:') %选择阶数A=zeros(n,n); %系数矩阵A b=zeros(n,1); %矩阵b X=zeros(n,1); %解X for i=1:n for j=1:n A(i,j)=(1/(i+j-1)); %生成hilbert矩阵A end b(i,1)=sum(A(i,:)); %生成矩阵b end for i=1:n-1 j=i; top=max(abs(A(i:n,j))); %列主元 k=j; while abs(A(k,j))~=top %列主元所在行 k=k+1; end for z=1:n %交换主元所在行a1=A(i,z); A(i,z)=A(k,z); A(k,z)=a1; end a2=b(i,1); b(i,1)=b(k,1); b(k,1)=a2; for s=i+1:n %消去算法开始m=A(s,j)/A(i,j); %化简为上三角矩阵 A(s,j)=0; for p=i+1:n A(s,p)=A(s,p)-m*A(i,p); end b(s,1)=b(s,1)-m*b(i,1); end end X(n,1)=b(n,1)/A(n,n); %回代开始 for i=n-1:-1:1 s=0; %初始化s for j=i+1:n s=s+A(i,j)*X(j,1);

end X(i,1)=(b(i,1)-s)/A(i,i); end X 欧拉法 clc clear % 欧拉法 p=10; %贝塔的取值 T=10; %t取值的上限 y1=1; %y1的初值 r1=1; %y2的初值 %输入步长h的值 h=input('欧拉法please input number(h=1 0.5 0.25 0.125 0.0625):h=') ; if h>1 or h<0 break end S1=0:T/h; S2=0:T/h; S3=0:T/h; S4=0:T/h; i=1; % 迭代过程 for t=0:h:T Y=(exp(-t)); R=(1/(p-1))*exp(-t)+((p-2)/(p-1))*exp(-p*t); y=y1+h*(-y1); y1=y; r=r1+h*(y1-p*r1); r1=r; S1(i)=Y; S2(i)=R; S3(i)=y; S4(i)=r; i=i+1; end t=[0:h:T]; % 红线为解析解,'x'为数值解 plot(t,S1,'r',t,S3,'x')

数值分析心得体会

数值分析心得体会 篇一:学习数值分析的经验 数值分析实验的经验、感受、收获、建议班级:计算131 学号:XX014302 姓名:曾欢欢 数值分析实验主要就是学习MATLAB的使用以及对数值分析类容的应用,可以使学生更加理解和记忆数值分析学得类容,也巩固了MATLAB的学习,有利于以后这个软件我们的使用。在做实验中,我们需要具备较好的编程能力、明白MATLAB软件的使用以及掌握数值分析的思想,才能让我们独立自主的完成该作业,如果是上述能力有限的同学,需要借助MATLAB的书以及网络来完成实验。数值分析实验对于我来说还是有一定难度,所以我课下先复习了MATLAB的使用方法以及编写程序的基本类容,借助互联网和同学老师资源完成了数值分析得实验的内容。在实验书写中,我复习了各种知识,所以我认为这门课程是有必要且是有用处的,特别是需要处理大量实验数据的人员,很有必要深入了解学习它,这样在以后的工作学习里面就减少了很多计算问题也提高了实验结果的精确度。 学习数值分析的经验、感受、收获、建议数值分析的内容包括插值与逼近,数值微分与数值积分,非线性方程与线性方程组的数值解法,矩阵的特征值与特征向量计算,常微分方程数值解等。

首先我们必须明白数值分析的用途。通常所学的其他数学类学科都是由公式定理开始,从研究他们的定义,性质再到证明与应用。但实际上,尤其是工程,物理,化学等其它具体的学科。往往我们拿到 手的只是通过实验得到的数据。如果是验证性试验,需要代回到公式 进行分析,验证。但往往更多面对的是研究性或试探性试验,无具体 公式定理可代。那就必须通过插值,拟合等计算方法进行数据处理以得到一个相对可用的一般公式。还有许多计算公式理论上非常复杂,在工程中不实用,所以必须根据实际情况把它转化成多项式近似表 示。学习数值分析,不应盲目记公式,因为公事通常很长且很乏味。其次,应从公式所面临的问题以及用途出发。比如插值方法,就 是就是把实验所得的数据看成是公式的解,由这些解反推出一个近似公式,可以具有局部一般性。再比如说拟合,在插值的基础上考虑实 验误差,通过拟合能将误差尽可能缩小,之后目的也是得到一个具有 一定条件下的一般性的公式。。建议学习本门课程要结合知识与实际,比如在物理实验里面很多

数值分析——编程作业..docx

《数值分析》实验报告 第二章=解线性方程组的直接方法 2、试用MATLAB软件编程实现追赶法求解三对角方程组的算法, 并考虑梯形电阻电路问题,电路如下:

其中电路中的各个电流f2?…,珀}须满足下列线性方程组: 一耳十务一巧=0 一巧4■笃一為=0 一迢+呂一逼=0 一耳+兀_%=0 一爲+5% 一巧=0 -2f6+5f7-2f8 =0 -2i7+5r g=0 设F = 220V,氏= 27Q,运用求各段电路的电流量。 解:v!R = — ?8_1481 27 上述方程组可用矩阵表示为: ?2_2000000h81481 _25_200000h0 0_25-20000h0 00_25_2000h0 000-25_200h0 0000_25-20S0 00000-25_2h0 000000-25?8.0

認翟蚁蛊 X -p u a) A .H )q /(i p n .H )p T (.rH )p T 二—二丄岂4 晒口?〈狠* A8)q 、 (8)PH(8)p -p u a) -U —.H ) P *-H ) F (.H ) P A .H ) P 丄) y (.H )q A .H )q Q 丄)q/u)y(2 晒口§前厂< 00 勺:。 4 坦祖咽鱼磋£紙夜 lll < =0 0 0 0 0 0 0 T 畧 oo v p 二甲 d — d — 甲甲甲 d — v 。 二g g g g g g g d v q 氏 —甲 甲甲甲甲 d — O V B 曲恥 qedelN

寸 61—<10905 30p ^ s £0- S S I 黑理q 。脅 u) 旺=味蛋二

数值分析知识点

第一章绪论(1-4) 一、误差来源及分类 二、误差的基本概念 1.绝对误差及绝对误差限 2.相对误差及相对误差限 3.有效数字 三、数值计算的误差估计 1.函数值的误差估计 2.四则运算的误差估计 四、数值计算的误差分析原则 第二章插值(1.2.4-8) 一、插值问题的提法(定义)、插值条件、插值多项式的存在唯一性 二、拉格朗日插值 1.拉格朗日插值基函数的定义、性质 2.用拉格朗日基函数求拉格朗日多项式 3.拉格朗日插值余项(误差估计) 三、牛顿插值 1.插商的定义、性质 2.插商表的计算 3.学会用插商求牛顿插值多项式 四、等距节点的牛顿插值 1.差分定义、性质及计算(向前、向后和中心) 2.学会用差分求等距节点下的牛顿插值公式 五、学会求低次的hermite插值多项式 六、分段插值 1.分段线性插值 2.分段三次hermite插值 3.样条插值 第三章函数逼近与计算(1-6) 一、函数逼近与计算的提法(定义)、常用两种度量标准(一范数、二范数\平方逼近) 二、基本概念 连续函数空间、最佳一次逼近、最佳平方逼近、内积、内积空间、偏差与最小偏差、偏差点、交错点值、平方误差 三、学会用chebyshev定理求一次最佳一致逼近多项式,并估计误差(最大偏差) 四、学会在给定子空间上通过解方程组求最佳平方逼近,并估计误差(平方误差) 五、正交多项式(两种)定义、性质,并学会用chebyshev多项式性质求特殊函数的(降阶)最佳一次逼近多项式 六、函数按正交多项式展开求最佳平方逼近多项式,并估计误差 七、一般最小二乘法(多项式拟合)求线性拟合问题 第四章数值分析(1-4) 一、数值求积的基本思想及其机械求积公式

数值分析实验报告总结

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

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

数值分析习题汇总

第一章 引论(习题) 2.证明:x 的相对误差约等于x 的相对误差的1/2. 证明 记 x x f = )( ,则 ) ()(* ** x x x x x x x x f E r +-= -= )(21**x E x x x x x x r ≈-?+= . □ 3.设实数a 的t 位β进制浮点机器数表示为)(a fl . 试证明 t b a b a fl -≤ +*=*12 1||),1/()()(βδδ, 其中的记号*表示+、-、?、/ 中一种运算. 证明: 令: ) () ()(b a fl b a fl b a **-*= δ 可估计: 1|)(|-≥*c b a fl β (c 为b a *阶码), 故: 121||--≤ c t c ββδt -=12 1β 于是: )1()()(δ+*=*b a b a fl . □ 4.改变下列表达式使计算结果比较精确: (1) ;1||, 11211<<+--+x x x x 对 (2) ;1,11>>- -+ x x x x x 对 (3) 1||,0,cos 1<<≠-x x x x 对. 解 (1) )21()1(22 x x x ++. (2) ) 11(2x x x x x -++. (3) x x x x x x x cos 1sin )cos 1(sin cos 12+≈+=-. □

6.设937.0=a 关于精确数x 有3位有效数字,估计a 的相对误差. 对于x x f -=1)(,估计)(a f 对于)(x f 的误差和相对误差. 解 a 的相对误差:由于 31021|)(|-?≤ -=a x x E . x a x x E r -=)(, 221018 1 10921)(--?=?≤ x E r . (1Th ) )(a f 对于)(x f 的误差和相对误差. |11||)(|a x f E ---== ()25 .0210 11321??≤ -+---a x x a =3 10- 33 104110 |)(|--?=-≤a f E r . □ 9.序列}{n y 满足递推关系:1101.100-+-=n n n y y y . 取01.0,110 ==y y 及 01.0, 101150=+=-y y ,试分别计算5y ,从而说明该递推公式对于计算是不稳 定的. 解 递推关系: 1101.100-+-=n n n y y y (1) 取初值 10=y , 01.01=y 计算 可得: 110 01.1002 2-?=-y 10001.1-=410-= 6 310-=y , 8 410 -=y , 10 510-=y , … (2) 取初值 5 0101-+=y , 2 110 -=y , 记: n n n y y -=ε, 序列 {}n ε ,满足递推关系,且 5 010--=ε , 01=ε 1101.100-+-=n n n εεε, 于是: 5210-=ε, 531001.100-?=ε, 55241010)01.100(---?=ε, 5 5351002.20010)01.100(--?-?=ε,

数值分析考试复习总结

1 误差 相对误差和绝对误差得概念 例题: 当用数值计算方法求解一个实际的物理运动过程时, 一般要经历哪几个阶段? 在哪些阶段将有哪些误差产生? 答: 实际问题-数学模型-数值方法-计算结果 在这个过程中存在一下几种误差: 建立数学模型过程中产生:模型误差 参数误差 选用数值方法产生:截断误差 计算过程产生:舍入误差 传播误差 6.设937.0=a 关于精确数x 有3位有效数字,估计a 的相对误差. 对于x x f -=1)(,估计)(a f 对于)(x f 的误差和相对误差. 解 a 的相对误差:由于 31021|)(|-?≤-≤a x x E . x a x x E r -=)(, 221018 1 10921)(--?=?≤ x E r . (1Th ) )(a f 对于)(x f 的误差和相对误差. |11||)(|a x f E ---==()25 .0210113 21??≤ -+---a x x a =310- 33 104110|)(|--?=-≤a f E r . □ 2有效数字 基本原则:1 两个很接近的数字不做减法: 2: 不用很小得数做分母(不用很大的数做分子) 例题: 4.改变下列表达式使计算结果比较精确: (1) ;1||,11211<<+--+x x x x 对 (2) ;1,11>>- - +x x x x x 对 (3) 1||,0,cos 1<<≠-x x x x 对. 解 (1) )21()122x x x ++. (2) ) 11(2x x x x x -++. (3) x x x x x x x cos 1sin )cos 1(sin cos 12+≈ +=-. □

数值分析报告

计算方法实验报告 实验:求解线性方程组的两种方法班级:工力13-02 姓名:刘志强 学号:02130857

实验内容 分别用列主元素法和LU 分解法编程求解,并对A 或b 做微小改动后观察结果 1 -1 2 -1 0 6 1 0 1 1 0 4 2 1 3 -4 4 X = -2 0 -1 1 -1 4 5 3 7 8 2 3 1 实验原理 列主元素法 方法说明(以4阶为例): ????? ???????=?????????????????????????n n nn n n n n b b b x x x a a a a a a a a a 21212122221 11211 第1步消元——在增广矩阵(A ,b )第一列中找到绝对值最大的元素,将其所在行与第一行交换,再对(A ,b )做初等行变换使原方程组转化为如下形式: ????? ???????=?????????????????????????*******0***0***0****4321x x x x 第2步消元——在增广矩阵(A ,b )中的第二列中(从第二行开始)找到绝对值最大的元素,将其所在行与第二行交换,再对(A ,b )做初等行变换使原方程组转化为: ????? ???????=?????????????????????????******00**00***0****4321x x x x 第3步消元——在增广矩阵(A ,b )中的第三列中(从第三行开始)找到绝对值最大的元素,将其所在行与第二行交换,再对(A ,b )做初等行变换使原方程组转化为: ????? ???????=?????????????????????????*****000**00***0****4321x x x x 按x 4 → x 3→ x 2→ x 1 的顺序回代求解出方程组的解。

数值分析 matlab 实验4

(1) 解题过程如下: (1)MATLAB中创建复化梯形公式和复化辛普森公式的 M 文件:1)复化梯形公式文件: function s=T_fuhua(f,a,b,n) h=(b-a)/n; s=0; for k=1:(n-1) x=a+h*k; s=s+feval(f,x); end s=h*(feval(f,a)+feval(f,b))/2+h*s; 2)复化辛普森公式文件: function s=S_fuhua(f,a,b,n) h=0; h=(b-a)./(2*n); s1=0; https://www.wendangku.net/doc/b23774782.html, -5- s2=0; for k=1:n-1 x=a+h*2*k; s1=s1+feval(f,x); end for k=1:n x=a+h*(2*k-1); s2=s2+feval(f,x); end

s=h*(feval(f,a)+feval(f,b)+s1*2+s2*4)/3; 在MATLAB中输入: f=inline('x/(4+x^2)');a=0;b=1; %inline 构造内联函数对象 for n=2:10 s(n-1)=T_fuhua(f,a,b,n);s(n-1)=vpa(s(n-1),10); %调用复化梯形公式,生成任意精度的数值 end exact=int('x/(4+x^2)',0,1);exact=vpa(exact,10) %求出积分的精确值 输出结果:exact = .1115717755 s = Columns 1 through 6 0.1088 0.1104 0.1109 0.1111 0.1113 0.1114 Columns 7 through 9 0.1114 0.1114 0.1115 在MATLAB中输入以下函数用以画出计算误差与 n 之间的曲线: r=abs(exact-s); n=2:10; plot(double(n),double(r(n-1))) 得到结果如图所示: (2)在 MATLAB中输入以下程序代码: f=inline('x/(4+x^2)');a=0;b=1;n=9; %inline 构造内联函数对象 t=T_fuhua(f,a,b,n);t=vpa(t,10) s=S_fuhua(f,a,b,n);s=vpa(s,10)

(整理)数值分析计算方法超级总结

工程硕士《数值分析》总复习题(2011年用) [由教材中的习题、例题和历届考试题选编而成,供教师讲解和学生复习用] 一. 解答下列问题: 1)下列所取近似值有多少位有效数字( 注意根据什么? ): a) 对 e = 2.718281828459045…,取* x = 2.71828 b) 数学家祖冲之取 113355 作为π的近似值. c) 经过四舍五入得出的近似值12345,-0.001, 90.55000, 它们的有效 数字位数分别为 位, 位, 位。 2) 简述下名词: a) 截断误差 (不超过60字) b) 舍入误差 (不超过60字) c) 算法数值稳定性 (不超过60字) 3) 试推导( 按定义或利用近似公式 ): 计算3 x 时的相对误差约等于x 的相对 误差的3倍。 4) 计算球体积3 34r V π= 时,为使其相对误差不超过 0.3% ,求半径r 的相对 误差的允许范围。 5) 计算下式 341 8 )1(3)1(7)1(5)1(22345+-+---+---=x x x x x x P )( 时,为了减少乘除法次数, 通常采用什么算法? 将算式加工成什么形式? 6) 递推公式 ?????=-==- ,2,1,1102 10n y y y n n 如果取 * 041.12y y =≈= ( 三位有效数字 ) 作近似计算, 问计算到 10y 时误差为初始误差的多少倍? 这个计算过程数值稳定吗 ? 二. 插值问题: 1) 设函数 )(x f 在五个互异节点 54321,,,,x x x x x 上对应的函数值为 54321,,,,f f f f f ,根据定理,必存在唯一的次数 (A ) 的插值多项式 )(x P ,满足插值条件 ( B ) . 对此,为了构造Lagrange 插值多项式 )(x L ,由5个节点作 ( C ) 个、次数均为 ( D ) 次的插值基函数

数值分析实验报告3

实验报告 实验项目名称数值积分与数值微分实验室数学实验室 所属课程名称数值逼近 实验类型算法设计 实验日期 班级 学号 姓名 成绩

实验概述: 【实验目的及要求】 本次实验的目的是熟练《数值分析》第四章“数值积分与数值微分”的相关内容,掌握复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式以及高斯-勒让德公式。 本次试验要求编写复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式以及高斯-勒让德公式的程序编码,并在MATLAB软件中去实现。 【实验原理】 《数值分析》第四章“数值积分与数值微分”的相关内容,包括:复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式以及高斯-勒让德公式的相应算法和相关性质。 【实验环境】(使用的软硬件) 软件: MATLAB 2012a 硬件: 电脑型号:联想 Lenovo 昭阳E46A笔记本电脑 操作系统:Windows 8 专业版 处理器:Intel(R)Core(TM)i3 CPU M 350 @2.27GHz 2.27GHz 实验内容: 【实验方案设计】 第一步,将书上关于复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式以及高斯-勒让德公式的内容转化成程序语言,用MATLAB实现;第二步,分别用以上求积公式的程序编码求解不同的问题。 【实验过程】(实验步骤、记录、数据、分析) 实验的主要步骤是:首先分析问题,根据分析设计MATLAB程序,利用程序算出问题答案,分析所得答案结果,再得出最后结论。 实验:用不同数值方法计算积分 (1) 取不同的步长h.分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h的函数,并与积分精确值比较两个公式的精度,是否存在一个最小的h,使得精度不能再被改善? (2) 用龙贝格求积计算完成问题(1)。 (3)用勒让德多项式确定零点,再代入计算高斯公式,使其精度达到10-4 (1)在MATLAB的Editor中建立一个M-文件,输入程序代码,实现复合梯形求积公式的程序代码如下:

数值分析试题及答案汇总

数值分析试题及答案汇 总 TTA standardization office【TTA 5AB- TTAK 08- TTA 2C】

数值分析试题 一、填空题(2 0×2′) 1. ?? ????-=? ?????-=32,1223X A 设x =是精确值x *=的近似值,则x 有 2 位有效数字。 2. 若f (x )=x 7-x 3+1,则f [20,21,22,23,24,25,26,27]= 1 , f [20,21,22,23,24,25,26,27,28]= 0 。 3. 设,‖A ‖∞=___5 ____,‖X ‖∞=__ 3_____, ‖AX ‖∞≤_15_ __。 4. 非线性方程f (x )=0的迭代函数x =(x )在有解区间满足 |’(x )| <1 ,则使用该迭代函数 的迭代解法一定是局部收敛的。 5. 区间[a ,b ]上的三次样条插值函数S (x )在[a ,b ]上具有直到 2 阶的连续导数。 6. 当插值节点为等距分布时,若所求节点靠近首节点,应该选用等距节点下牛顿差 商公式的 前插公式 ,若所求节点靠近尾节点,应该选用等距节点下牛顿差商公式的 后插公式 ;如果要估计结果的舍入误差,应该选用插值公式中的 拉格朗日插值公式 。 7. 拉格朗日插值公式中f (x i )的系数a i (x )的特点是:=∑=n i i x a 0)( 1 ;所以当系数 a i (x )满足 a i (x )>1 ,计算时不会放大f (x i )的误差。 8. 要使 20的近似值的相对误差小于%,至少要取 4 位有效数字。 9. 对任意初始向量X (0)及任意向量g ,线性方程组的迭代公式x (k +1)=Bx (k )+g (k =0,1,…) 收敛于方程组的精确解x *的充分必要条件是 (B)<1 。 10. 由下列数据所确定的插值多项式的次数最高是 5 。

数值分析考试复习总结汇总

第一章 1 误差 相对误差和绝对误差得概念 例题: 当用数值计算方法求解一个实际的物理运动过程时, 一般要经历哪几个阶段? 在哪些阶段将有哪些误差产生? 答: 实际问题-数学模型-数值方法-计算结果 在这个过程中存在一下几种误差: 建立数学模型过程中产生:模型误差 参数误差 选用数值方法产生:截断误差 计算过程产生:舍入误差 传播误差 6.设937.0=a 关于精确数x 有3位有效数字,估计a 的相对误差. 对于 x x f -=1)(,估计)(a f 对于)(x f 的误差和相对误差. 解 a 的相对误差:由于 31021|)(|-?≤ -≤a x x E . x a x x E r -=)(, 221018 1 10921)(--?=?≤ x E r . (1Th ) )(a f 对于)(x f 的误差和相对误差. |11||)(|a x f E ---==()25 .0210113 21??≤ -+---a x x a =310- 33104110|)(|--?=-≤a f E r . □ 2有效数字 基本原则:1 两个很接近的数字不做减法: 2: 不用很小得数做分母(不用很大的数做分子)

例题: 4.改变下列表达式使计算结果比较精确: (1) ;1||, 11211<<+--+x x x x 对 (2) ;1,11>>- -+ x x x x x 对 (3) 1||,0,c o s 1<<≠-x x x x 对. 解 (1) )21()122x x x ++. (2) ) 11(2x x x x x -++. (3) x x x x x x x cos 1sin )cos 1(sin cos 12+≈ +=-. □ 第二章 拉格朗日插值公式(即公式(1)) ∑==n i i i n x l y x p 0)()( 插值基函数(因子)可简洁表示为 )()() () ()()(0 i n i n n i j j j i j i x x x x x x x x x l ωω'-= --=∏ ≠= 其中: ()∏∏≠==-='-= n i j j j i i n n j j n x x x x x x 00 )(,)()(ωω. 例1 n=1时,线性插值公式 ) ()()()()(010110101x x x x y x x x x y x P --?+--? =, 例2 n=2时,抛物插值公式 ) )(())(())(())(())(() )(()(1202102210120120102102x x x x x x x x y x x x x x x x x y x x x x x x x x y x P ----? +----? +----? = 牛顿(Newton )插值公式

数值计算(数值分析)试题与答案

++中的待定系数 A f (1)(0)

武汉理工大学研究生课程考试标准答案 用纸 课程名称:数值计算(A)任课教师: 一. 简答题,请简要写出答题过程(每小题5分,共30分) 3.14159265358979的近似值 绝对误差和相对误差分别是多少? 3分)

2分) 2.已知()8532f x x x =+-,求01 83,3, ,3f ????,019 3,3,,3f ????. (5分) 3.确定求积公式 1 0120 ()(0)(1)(0)f x dx A f A f A f '≈++? 中的待定系数,使其代 数精度尽量高,并指明该求积公式所具有的代数精度。 解:要使其代数精度尽可能的高,只需令()1,, , m f x x x =使积分公式对尽可能 大的正整数m 准确成立。由于有三个待定系数,可以满足三个方程,即2m =。 由()1f x =数值积分准确成立得:011A A += 由()f x x =数值积分准确成立得:121/2A A += 由2()f x x =数值积分准确成立得:11/3A = 解得1201/3,1/6,2/3.A A A === (3分) 此时,取3()f x x =积分准确值为1/4,而数值积分为11/31/4,A =≠所以该求

积公式的最高代数精度为2次。 (2分) 4.求矩阵101010202A -?? ??=?? ??-?? 的谱半径。 解 ()()1 01 01 0132 2 I A λλλλλλλ--= -=--- 矩阵A 的特征值为1230,1,3λλλ=== 所以谱半径(){}max 0,1,33A ρ== (5分) 5. 设10099,9998A ?? = ??? 计算A 的条件数()(),2,p cond A P =∞. 解:** 1 9899-98999910099-100A A A A --????=?== ? ?-?? ?? 矩阵A 的较大特征值为198.00505035,较小的特征值为-0.00505035,则 1222 ()198.00505035/0.0050503539206cond A A A -=?==(2分) 1 ()199******** cond A A A -∞∞ ∞ = ?=?= (3分) 二.计算题,请写出主要计算过程(每小题10分,共50分)

数值分析总结

第一章绪论 1.数值运算的误差估计 2.绝对误差、相对误差与有效数字 3.避免误差的相关问题 病态问题与条件数 算法的数值稳定性 数值运算中的若干原则 第二章非线性方程求根1.不动点迭代格式 不动点迭代格式的构造、计算 全局收敛性判断 局部收敛性与收敛阶判断(两个方法)

2.Newton迭代 格式、计算及几何意义 局部收敛性及收敛阶(单、重根)非局部收敛性判断(两个方法)3.Steffensen迭代 格式及计算 (具有)二阶的局部收敛性 4.Newton迭代的变形 求重根的迭代法(三种方法) 避免导数计算的弦割法(两种方法) Newton下山法* 5.二分法 计算 预先估计对分次数

第三章解线性方程组的直接法 1.矩阵三角分解法及其方程组求解 直接三角分解法及其分解的条件 平方根法(Cholesky 分解) 追赶法 列主元三角分解法* 2.Gauss 消去法 Gauss 主元素消去法(列主元素消去法、全主元素消去法) Gauss 顺序消去法 3.方程组的性态与误差分析 向量和矩阵的范数(基础知识) 方程组解的相对误差估计 矩阵的条件数 病态方程组的求解*

第四章解线性代数方程组的迭代法1.迭代法的基本理论 简单迭代法格式的构造、收敛性判断以及方程组的求解 Gauss—Seidel迭代法格式的构造、收敛性判断以及方程组的求解2.三种迭代法的构造、收敛性判断以及方程组的求解Jacobi迭代法

基于Jacobi迭代法的Gauss—Seidel迭代法 逐次超松弛迭代法①掌握简单迭代收敛性判断的方法。 设B为迭代矩阵,如果||B||<1,则用||B||判断迭代的收敛性比用ρ(B)<1更为方便,但此结论仅为充分条件。 如果||B||≥1,判断迭代的收敛性需考察ρ(B)<1是否成立。 如果需证明迭代发散,则需证明ρ(B)≥1。 ②简单迭代法的收敛快慢,依赖于迭代矩阵谱半径的大小。当ρ(B)<1,迭代次数k≥(mln10)/(-lnρ(B)),则迭代矩阵谱半径越小,收敛越快。当ρ(B)=0时,则理论上迭代有限步得到精确解。 对简单迭代法而言,有的对任意初始向量都收敛(通常所说的收敛),有的对部分初始向量收敛,有的对任意初始向量(解向量除外)都不收敛。 ③对于由简单迭代法导出的Gauss-Seidel迭代法:x(k+1)=B1x(k)+B2x(k)+gk=0,1,… 应用上述结论需首先将由简单迭代法导出的Gauss-Seidel迭代格式改写为简单迭代:x(k+1)=(I–B1)?1B2x(k)+(I?B1)?1gk=0,1,…迭代收敛的充要条件为ρ((I?B1)?1B2)<1 若||(I?B1)?1B2||<1则对于任意的初始向量x(0),与简单迭代法相应的Gauss-Seidel 迭代收敛。 设B=B1+B2,若||B||∞<1,或||B||1<1,则对于任意初始向量x(0),与简单迭代法相应的Gauss-Seidel迭代收敛。 ④掌握Jacobi迭代及由Jacobi迭代导出的Gauss-Seidel迭代收敛性的判断方法。 对于Jacobi迭代与Gauss-Seidel迭代的收敛性,首先考察系数矩阵A是否严格对角占优。 对于Gauss-Seidel迭代,其次考察系数矩阵A是否对称正定。 其它判断方法与简单迭代以及由简单迭代导出的Gauss-Seidel迭代之收敛性判断方法相同。

矩阵与数值分析公式总结

第一章 绝对误差: 121 100.x 102 k k n n a a a a a -=±?????-≤?,则称a 为x 的具有n 位有效数字的近似值 相对误差: 如果a 有n 位有效数字,则11 x 1102n a a a --≤ ?;如果11x 1 1021n a a a --≤?+(),则a 至少有n 位有效数字。 近似绝对误差估计式:' ()()()f x f a f a x a -≈- 近似相对误差界为: '()()()()() f a f x f a x a f a f a -≤- N 元函数误差界:1231231(x ,x ,x ,....x )(,,,....)n n n k k k k a f f f a a a a x a x =?? ?-≤- ????∑ 111 2 22111 112max p ,1n i i n i i i i n n p p i p i x x p ==∞≤≤==?? === ? ?? ∞=??=≤<+∞ ??? ∑∑∑向量范数:范数:范数:范数:范数:x x x x x x 11111 21 11max max m ij j n i n ij i m j m n ij m i j F a a a ≤≤=∞≤≤======== ∑∑∑ ∑ (列和范数) (行和范数) (算子范数谱: 范数)A A A A A (A)max i i ρλ=谱半径: (A 的最大特征值)

第二章 ,H H H A A AA A A =正规矩阵:是的共轭转置。 常见的Hermite 阵(A A =H )、实对称矩阵(A A =T )、斜Hermite 阵(A A -=H )、实反对称矩阵(A A -=T )、酉阵(I AA A A ==H H )和正交矩阵(I AA A A ==T T )等均为正规矩阵. 正定的充分必要条件是:A 的各阶顺序主子式都为正。A 的特征值全为正。 T T A A AA E ==正交矩阵:1T A A -=正交矩阵是实数特殊化的酉矩阵,因此总是正规矩阵。 奇异矩阵:对应的行列式等于0的方阵。 1、矩阵的LU 分解或Doolittle 分解 对于n 阶方阵A ,如果存在n 阶单位下三角矩阵L 和n 阶上三角矩阵U ,使得LU A =, 则称其为矩阵A 的LU 分解,也称为.Gauss 消去法对应的矩阵形式即为LU 分解, 其中L 为所有行乘子组成的单位下三角矩阵, U 为Gauss 消去法结束后得到的上三角矩阵. 原方程组b Ax =分解为两个三角形方程 组? ? ?==y Ux b Ly . 2、矩阵LU 分解的的存在和唯一性(各阶顺序主子式均不为零) 如果n 阶矩阵A 的各阶顺序主子式),,2,1(n k k =D 均不为零, 则必有单位下三角矩阵L 和上三角矩阵U ,使得LU A =, 而且L 和U 是唯一存在的. 3、矩阵的Cholesky 分解或平方根法(正定矩阵) 对任意n 阶对称正定矩阵A ,均存在下三角矩阵L 使T LL A =,称其为对称正定矩阵 A 的 Cholesky 分解. 进一步地, 如果规定L 的对角元为正数,则L 是唯一确定的.原方程组b Ax =分解为 两个三角形方程组? ??==y x L b Ly T . 利用矩阵乘法规则和L 的下三角结构可得 2 1 1 12? ?? ? ??-=∑-=j k jk jj jj l a l , jj j k jk ik ij ij l l l a l /1 1???? ??-=∑-=, i=j +1, j +2,…,n , j =1,2,…,n .

相关文档