东北大学07年(研)数值分析
- 格式:doc
- 大小:227.00 KB
- 文档页数:5
数值分析实验班级 姓名 学号实验环境: MATLAB实验一 解线性方程组的迭代法(1)一、实验题目 对以下方程组分别采用Jacobi 迭代法, Gaaus-Seidel 迭代法求解和SOR 迭代法求解。
(2)线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------------------13682438141202913726422123417911101610352431205362177586832337616244911315120130123122400105635680000121324⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡-2119381346323125 (2)对称正定线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----------------------1924336021411035204111443343104221812334161206538114140231212200420424⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡87654321x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡---4515221123660(3)三对角线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡------------------4100000000141000000001410000000014100000000141000000001410000000014100000000141000000001410000000014⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----5541412621357 二、实验要求(1)应用迭代法求线性方程组, 并与直接法作比较。
期末考试试卷(A 卷)2007学年第二学期 考试科目: 数值分析 考试时间:120 分钟学号 姓名 年级专业一、判断题(每小题2分,共10分)1. 用计算机求1000100011n n=∑时,应按照n 从小到大的顺序相加。
( )2. 为了减少误差, ( )3. 用数值微分公式中求导数值时,步长越小计算就越精确。
( )4. 采用龙格-库塔法求解常微分方程的初值问题时,公式阶数越高,数值解越精确。
( )5. 用迭代法解线性方程组时,迭代能否收敛与初始向量的选择、系数矩阵及其演变方式有关,与常数项无关。
( )二、填空题(每空2分,共36分)1. 已知数a 的有效数为0.01,则它的绝对误差限为________,相对误差限为_________.2. 设1010021,5,1301A x -⎡⎤⎡⎤⎢⎥⎢⎥=-=-⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦则1A =_____,2x =______,Ax ∞=_____.3. 已知53()245,f x x x x =+-则[1,1,0]f -= ,[3,2,1,1,2,3]f ---= .4. 为使求积公式11231()((0)f x dx A f A f A f -≈++⎰的代数精度尽量高,应使1A = ,2A = ,3A = ,此时公式具有 次的代数精度。
5. n 阶方阵A 的谱半径()A ρ与它的任意一种范数A 的关系是 .6. 用迭代法解线性方程组AX B =时,使迭代公式(1)()(0,1,2,)k k X MX N k +=+=产生的向量序列{}()k X 收敛的充分必要条件是 .7. 使用消元法解线性方程组AX B =时,系数矩阵A 可以分解为下三角矩阵L 和上三角矩阵U 的乘积,即.A LU = 若采用高斯消元法解AX B =,其中4221A -⎡⎤=⎢⎥⎣⎦,则L =_______________,U =______________;若使用克劳特消元法解AX B =,则11u =____;若使用平方根方法解AX B =,则11l 与11u 的大小关系为_____(选填:>,<,=,不一定)。
数值分析实验报告课题一 迭代格式的比较一、问题提出设方程f(x3- 3x –1=0 有三个实根 x *1=1.8793 , x *2=-0.34727 ,x *3=-1.53209现采用下面三种不同计算格式,求 f(x)=0的根 x *1 或x *21、 x =213x x + 2、 x = 313-x3、 x = 313+x二、要求1、编制一个程序进行运算,最后打印出每种迭代格式的敛散情况;2、用事后误差估计k k x x -+1〈ε来3、初始值的选取对迭代收敛有何影响;4、分析迭代收敛和发散的原因。
三、目的和意义1、通过实验进一步了解方程求根的算法;2、认识选择计算格式的重要性;3、掌握迭代算法和精度控制;4、明确迭代收敛性与初值选取的关系。
程序代码:#include<iostream> #include<math.h>int k=1,k1=1,k2=1,k3=1; float x1,x2,x3;float one(float x0) {x1=(3*x0+1)/(x0*x0); return(x1); }float two(float x0) {x2=(pow(x0,3)-1)/3; return(x2); }float three(float x0) {x3=pow(3*x0+1,0.33333); return(x3); }main() {float x,x0;printf("输入x0=");scanf("%f",&x);x0=x;x1=one(x0);printf("第一个公式迭代结果: \n");while(fabs(x0-x1)>1e-5){printf("x1=%6.5f\n",x1);x0=x1;x1=one(x0);k1++;}printf("x1=%6.5f \n",x1);printf("k1=%i\n",k1);x0=x;x2=two(x0);printf("第二个公式迭代结果: \n"); while(fabs(x0-x2)>1e-5){printf("x2=%6.5f\n",x2);x0=x2;x2=two(x0);k2++;}printf("k2=%i\n",k2);x0=x;x3=three(x0);printf("第三个公式迭代结果: \n");while(fabs(x0-x3)>1e-5){printf("x3=%6.5f\n",x3);x0=x3;x3=three(x0);k3++;}printf("x3=%6.5f\n",x3);printf("k3=%i\n",k3);scanf("%");}实验结果:四、程序运行结果讨论和分析:对于第一种迭代格式,收敛区间[-8.2 -0.4],在该收敛区间内迭代收敛于-1.53209,只能求得方程的一个根;对于第二种迭代格式,收敛区间[-1.5 1.8],在该收敛区间内迭代收敛于-0.34730,同样只能求得方程的一个根;对于第三种迭代格式,收敛区间[-0.3 +∞),在该收敛区间内迭代收敛于 1.87937,只能求得方程的一个根;由以上结果很容易发现,初值的选取对迭代敛散性有很大影响。
第一周解答:π=0.31415926×10M=1|π-3.141|=0.0005926<1/2 ×10m−n=0.5 ×101−n≤0.5×10−2所以n=3|π-3.142|=0.0004074<1/2 ×10m−n=0.5 ×101−n≤0.5×10−3所以n=4即3.141作为π的近似值具有3位有效数字3.142 有4位解答:√3=1.73205081…=0.173205081…M=1|√3−x|≤0.5×101−n|n=2时0.5×101−n=0.051.73205-x≤0.05x≥1.68205x=1.68205|√3−x|≤0.5×101−n|n=3时0.5×101−n=0.0051.73205-x≤0.005x≥1.72705x=1.72705解答:2256=2128×2128=264×264×2128=232×232×264×2128=216×216×232×264×2128=2×2×22×24×28×216×232×264×2128共计算8次乘法第二周解答:因为在n取一定位数时,1/n过于小导致系统计算为0.因此计算机求和在一定位数以后其余的数字都是0,结果为一常数解答:由于y0=28没有误差,可见误差是由√783引起的,设x=27.982σ=x-√783利用已知的递推算法,y n=y n−1−√783100和实际计算中的递推公式Y n=Y n−1−x/100(Y0=y0)两公式相减,e(Y n)=Y n−y n=Y n−1−y n−1−x−√783100e(Y n)= e(Y n−1)- σ/100此为绝对误差因为σ=x-√783数值恒定不变,因此该递推过程稳定解答:(1)原式=2x2(1−2x)(1−x)(2)e x 在x=0处的泰勒展开式可得: e x =1+x +12!x 2+⋯1n!x 2+R n (x) 所以1−e x x=x+12!x 2+⋯1n!x2x=1+12!x 2+⋯1n!x n−1第三周解答:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡→⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡61-12001-101-1131-11-301-101-11101112-2-211-11消元消元回代得解,;3,2,2321===x x x解答:1. 使用条件:当系数矩阵 A 的各阶顺序主子式非零时,顺序高斯消去法可以顺利进行;而一般只要系数矩阵 A 的行列式非零,列主元高斯消去法就可以顺利进行。
[考研类试卷]2007年工程硕士研究生学位课程(数值分析)真题试卷
1 给定非线性方程e-x-2x=0. 1)判断该方程存在几个实根; 2)用适当的迭代法求出上述方程的根,精确至3位有效数字; 3)验证所用迭代法满足的收敛性条件,说明所用迭代格式是收敛的.
2 用列主元Gauss 消去法解线性方程组
3 给定线性方程组 1)写出Gauss-Seidel迭代格式;2)分析此迭代格式的收敛性
4 设f(x)=x4—3x3+x2-10,x0=1,x1=3,x2=-2,x3=0. 1)求f(x)以x0,x1,x2,x3为节点的3次Lagrange插值多项式L3(x); 2)求f(x)以x0,x1,x2,x3为节点的3次Newton插值多项式N3(x); 3)给出以上插值多项式的插值余项表达式.
5 求方程组的最小二乘解.
6 考虑积分I(f)= 1)写出计算I(f)的Simpson公式S(f); 2)用多项式插值的思想推导出S(f). 3)写出复化梯形公式和复化Simpson公式之间的关系式.
7 给定常微分方程初值问题取正整数n,并记h=(b—a)/
n,x i=a+ih,f i=f(x i,y i),0≤i≤n.证明求解公式y i+1=y i +(55f i-59f i-1+37f i-2-9f i-3)是一个4阶公式,并给出局部截断误差的表达式.
答案见麦多课文库。
实验一:解线性方程组的直接方法1、设线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------------------13682438141202913726422123417911101610352431205362177586832337616244911315120130123122400105635680000121324⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡-2119381346323125x *= (-1, 0, 1, 2, 0, 3, 1, -1, 2 )T2、设对称正定阵系数阵线方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----------------------192433621411035204111443343104221812334161206538114140231212200420424⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡87654321x x x x x x x x = ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡---4515229232060 x * = ( 1, -1, 0, 2, 1, -1, 0, 2 )T3、三对角形线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡------------------41141000000001410000000014100000000141000000001410000000014100000000141000000001410000000014⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x = ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----5541412621357 x *= ( 2, 1, -3, 0, 1, -2, 3, 0, 1, -1 )T分别用Gauss 顺序消去法与Gauss 列主元消去法:平方根法与改进平方根法:追赶法求解,编出算法通用程序用列主元消去法求解方程组一: 流程图如下:源程序:#include < iostream >#include < vector >#include < cmath >using namespace std;class CGAUSSSOLVEEQU{private :vector < vector < double >> m_equset; vector < double > m_answer;int m_n;public :void inputEquSet(double in[],int n); void solveEquSet();void outputAnswer();void change(int m,int m2);} ;void CGAUSSSOLVEEQU::inputEquSet(double in[],int n){vector < double > vtemp;m_n=n;for (int i= 0;i < m_n; i++){m_equset.push_back(vtemp);for (int j= 0;j <= m_n; j++){m_equset[i].push_back(in[i*(m_n+1)+j]);}}}void CGAUSSSOLVEEQU::change(int m,int m2){vector < vector < double >> ::iterator iter;iter = m_equset.begin();vector < vector < double >> ::iterator iter2;iter2 = m_equset.begin();//double}void CGAUSSSOLVEEQU::solveEquSet(){vector < vector < double >> ::iterator iter;iter = m_equset.begin();for (int m= 0;m < m_n - 1 ; ++ m){// 将绝对值最大的主元素移上去for (int i=m;i<m_equset.size();i++){if (fabsl(m_equset[m][m]) < fabsl(m_equset[i][m])) {swap( m_equset[m], m_equset[i]);}}// 进行消元for (int i = m + 1 ;i < m_n; ++ i){double dm;dm = m_equset[i][m] / m_equset[m][m];for (int j = m;j < m_n + 1 ; ++ j){m_equset[i][j] -= dm * m_equset[m][j];}}++ iter;}// 初始化m_answer向量for (int i=0 ;i < m_n; ++ i) m_answer.push_back( 0 );// 求解答案m_answer[m_n - 1 ] = m_equset[m_n - 1 ][m_n] / m_equset[m_n - 1 ][m_n - 1 ];for ( int i = m_n - 2 ;i >= 0 ; -- i){m_answer[i] = m_equset[i][m_n];for ( int j = m_n - 1 ;j > i; -- j)m_answer[i] -= m_answer[j] * m_equset[i][j];m_answer[i] /= m_equset[i][i];}}void CGAUSSSOLVEEQU::outputAnswer(){for (int i= 1;i <= m_n; ++ i){cout << " x( " << i << " )= " << m_answer[i - 1 ] << endl;}}int main(){CGAUSSSOLVEEQU myEqu1;double in1[10*11]={4,2,-3,-1,2,1,0,0,0,0,5,8,6,-5,-3,6,5,0,1,0,0,12,4,2,-2,-1,3,2,-1,0,3,1,3,0,-2,1,5,-1,3,-1,1,9,4,2,-4,2,6,-1,6,7,-3,3,2,3,3,8,6,-8,5,7,17,2,6,-3,5,46,0,2,-1,3,-4,2,5,3,0,1,13,16,10,-11,-9,17,34,2,-1,2,2,38,4,6,2,-7,13,9,2,0,12,4,19,0,0,-1,8,-3,-24,-8,6,3,-1,-21};myEqu1.inputEquSet(in1,10);myEqu1.solveEquSet(); myEqu1.outputAnswer(); cout<<endl; cout<<endl; return 1 ;}实验运行结果:实验心得:通过本次实验,我不仅掌握了模块化程序设计的方法,还了解了求解线性方程组的方法,明确了高斯消去法选主元的必要性。
《数值分析》上机实验报告课题三解线性方程组的迭代法学生姓名:学生系别:学生班级:日期:上机实践报告【运行环境】软件:Windows、Microsoft Visual C++ 6.0PC一台【问题提出】对课题二所列目的和意义的线性方程组,试分别选用Jacobi 迭代法,Gauss-Seidol迭代法和SOR方法计算其解。
【实践要求】1、体会迭代法求解线性方程组,并能与消去法做比较;2、分别对不同精度要求,如ε=10-3,10-4,10-5 由迭代次数体会该迭代法的收敛快慢;3、对方程组2,3使用SOR方法时,选取松弛因子 =0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者;4、给出各种算法的设计程序和计算结果。
【目的意义】1、通过上机计算体会迭代法求解线性方程组的特点,并能和消去法比较;2、运用所学的迭代法算法,解决各类线性方程组,编出算法程序;3、体会上机计算时,终止步骤 < 或k >(予给的迭代次数),对迭代法敛散性的意义;4、体会初始解 x ,松弛因子的选取,对计算结果的影响。
【程序代码】//Jacobi.cpp#include<iostream>#include<cmath>using namespace std;#define N 15//最大迭代次数#define P 10//矩阵的阶数//#define P 8static double a[10][10]={4,2,-3,-1,2,1,0,0,0,0,8,6,-5,-3,6,5,0,1,0,0,4,2,-2,-1,3,2,-1,0,3,1,0,-2,1,5,-1,3,-1,1,9,4,-4,2,6,-1,6,7,-3,3,2,3,8,6,-8,5,7,17,2,6,-3,5,0,2,-1,3,-4,2,5,3,0,1,16,10,-11,-9,17,34,2,-1,2,2,4,6,2,-7,13,9,2,0,12,4,0,0,-1,8,-3,-24,-8,6,3,-1};static double b[10]={5,12,3,2,3,46,13,38,19,-21};static double x_jing[10]={1,-1,0,1,2,0,3,1,-1,2};//精确解static double x0[10]={0,0,0,0,0,0,0,0,0,0};static double x1[10];static int k,i,j;//static double a[8][8]={4,2,-4,0,2,4,0,0,// 2,2,-1,-2,1,3,2,0,// -4,-1,14,1,-8,-3,5,6,// 矩阵B 0,-2,1,6,-1,-4,-3,3,// 2,1,-8,-1,22,4,-10,-3,// 4,3,-3,-4,4,11,1,-4,// 0,2,5,-3,-10,1,14,2,// 0,0,6,3,-3,-4,2,19};//static double b[8]={0,-6,6,23,11,-22,-15,45};//static double x_jing[8]={1,-1,0,2,1,-1,0,2};//static double x0[8]={0,0,0,0,0,0,0,0};//static double x1[8];//static double a[10][10]={4,-1,0,0,0,0,0,0,0,0,// -1,4,-1,0,0,0,0,0,0,0,// 0,-1,4,-1,0,0,0,0,0,0,// 0,0,-1,4,-1,0,0,0,0,0,// 矩阵C 0,0,0,-1,4,-1,0,0,0,0,// 0,0,0,0,-1,4,-1,0,0,0,// 0,0,0,0,0,-1,4,-1,0,0,// 0,0,0,0,0,0,-1,4,-1,0,// 0,0,0,0,0,0,0,-1,4,-1,// 0,0,0,0,0,0,0,0,-1,4};//static double b[10]={7,5,-13,2,6,-12,14,-4,5,-5}; //static double x_jing[10]={2,1,-3,0,1,-2,3,0,1,-1}; //static double x0[10]={0,0,0,0,0,0,0,0,0,0};double Max(int y)//求算该次迭代的误差{double sum,max;for (i=0;i<P;i++){sum=0;for (j=0;j<P;j++)sum+=a[i][j]*x0[j];x1[i]=x0[i]+(b[i]-sum)/a[i][i];}max=fabs(x_jing[0]-x1[0]);for (i=1;i<P;i++){if (fabs(x_jing[i]-x1[i])>max)max=fabs(x_jing[i]-x1[i]);}cout<<"第"<<y<<"次迭代的误差为"<<max<<endl;return max;}void main(){double e[3]={10e-3,10e-4,10e-5};double max;int t;cout<<"请选择精确度:0、10e-3 1、10e-4 2、103-5 ";cin>>t;for (k=0;k<N;k++){max=Max(k);if (max<e[t])//判断精度是否符合要求,若符合则跳出程序,否则继续迭代{ k=k;break;}else{for (i=0;i<P;i++)x0[i]=x1[i];}}if (k<N)//输出结果{cout<<"迭代次数为"<<k<<endl;cout<<"方程组的解为"<<endl;for (i=0;i<P;i++)cout<<" "<<x1[i]<<endl;}else{cout<<"迭代次数超过"<<N<<"迭代终止!"<<endl;cout<<"方程组的解为"<<endl;for (i=0;i<P;i++)cout<<" "<<x1[i]<<endl;}}//Gauss-Seidol.cpp#include<iostream>#include<cmath>using namespace std;#define N 15//最大迭代次数//#define P 10//矩阵的阶数#define P 8//static double a[10][10]={4,2,-3,-1,2,1,0,0,0,0,// 8,6,-5,-3,6,5,0,1,0,0,// 4,2,-2,-1,3,2,-1,0,3,1,// 0,-2,1,5,-1,3,-1,1,9,4,// -4,2,6,-1,6,7,-3,3,2,3,// 8,6,-8,5,7,17,2,6,-3,5,// 0,2,-1,3,-4,2,5,3,0,1,// 16,10,-11,-9,17,34,2,-1,2,2,// 4,6,2,-7,13,9,2,0,12,4,// 0,0,-1,8,-3,-24,-8,6,3,-1};//static double b[10]={5,12,3,2,3,46,13,38,19,-21};//static double x_jing[10]={1,-1,0,1,2,0,3,1,-1,2};//精确解//static double x0[10]={0,0,0,0,0,0,0,0,0,0};//static double x1[10];static int k,i,j;static double a[8][8]={4,2,-4,0,2,4,0,0,2,2,-1,-2,1,3,2,0,-4,-1,14,1,-8,-3,5,6,0,-2,1,6,-1,-4,-3,3,2,1,-8,-1,22,4,-10,-3,4,3,-3,-4,4,11,1,-4,0,2,5,-3,-10,1,14,2,0,0,6,3,-3,-4,2,19};static double b[8]={0,-6,6,23,11,-22,-15,45};static double x_jing[8]={1,-1,0,2,1,-1,0,2};static double x0[8]={0,0,0,0,0,0,0,0};static double x1[8];//static double a[10][10]={4,-1,0,0,0,0,0,0,0,0,// -1,4,-1,0,0,0,0,0,0,0,// 0,-1,4,-1,0,0,0,0,0,0,// 0,0,-1,4,-1,0,0,0,0,0,// 矩阵C 0,0,0,-1,4,-1,0,0,0,0,// 0,0,0,0,-1,4,-1,0,0,0,// 0,0,0,0,0,-1,4,-1,0,0,// 0,0,0,0,0,0,-1,4,-1,0,// 0,0,0,0,0,0,0,-1,4,-1// 0,0,0,0,0,0,0,0,-1,4};//static double b[10]={7,5,-13,2,6,-12,14,-4,5,-5};//static double x_jing[10]={2,1,-3,0,1,-2,3,0,1,-1};//精确解//static double x0[10]={0,0,0,0,0,0,0,0,0,0};double Max(int y)//求算该次迭代的误差{double sum1,sum2,max;for (i=0;i<P;i++){sum1=0;sum2=0;for (j=0;j<=i-1;j++)sum1+=a[i][j]*x1[j];for (j=i+1;j<P;j++)sum2+=a[i][j]*x0[j];x1[i]=(b[i]-sum1-sum2)/a[i][i];}max=fabs(x_jing[0]-x1[0]);for (i=1;i<P;i++){if (fabs(x_jing[i]-x1[i])>max)max=fabs(x_jing[i]-x1[i]);}cout<<"第"<<y<<"次迭代的误差为"<<max<<endl;return max;}void main(){double e[3]={10e-3,10e-4,10e-5};double max;int t;cout<<"请选择精确度:0、10e-3 1、10e-4 2、103-5 ";cin>>t;for (k=0;k<N;k++){max=Max(k);if (max<e[t])//判断精度是否符合要求,若符合则跳出程序,否则继续迭代{ k=k;break;}else{for (i=0;i<P;i++)x0[i]=x1[i];}}if (k<N)//输出结果{cout<<"迭代次数为"<<k<<endl;cout<<"方程组的解为"<<endl;for (i=0;i<P;i++)cout<<" "<<x1[i]<<endl;}else{cout<<"迭代次数超过"<<N<<"迭代终止!"<<endl;cout<<"方程组的解为"<<endl;for (i=0;i<P;i++)cout<<" "<<x1[i]<<endl;}}//SOR.cpp#include<iostream>#include<cmath>using namespace std;#define N 15//最大迭代次数#define P 10//矩阵的阶数//#define P 8//static double a[10][10]={4,2,-3,-1,2,1,0,0,0,0,// 8,6,-5,-3,6,5,0,1,0,0,// 4,2,-2,-1,3,2,-1,0,3,1,// 矩阵A 0,-2,1,5,-1,3,-1,1,9,4,// -4,2,6,-1,6,7,-3,3,2,3,// 8,6,-8,5,7,17,2,6,-3,5,// 0,2,-1,3,-4,2,5,3,0,1,// 16,10,-11,-9,17,34,2,-1,2,2,// 4,6,2,-7,13,9,2,0,12,4,// 0,0,-1,8,-3,-24,-8,6,3,-1};//static double b[10]={5,12,3,2,3,46,13,38,19,-21};//static double x_jing[10]={1,-1,0,1,2,0,3,1,-1,2};//精确解//static double x0[10]={0,0,0,0,0,0,0,0,0,0};static double x1[P];static double sumx[P];static int k,i,j;//static double a[8][8]={4,2,-4,0,2,4,0,0,// 2,2,-1,-2,1,3,2,0,// -4,-1,14,1,-8,-3,5,6,// 矩阵B 0,-2,1,6,-1,-4,-3,3,// 2,1,-8,-1,22,4,-10,-3,// 4,3,-3,-4,4,11,1,-4,// 0,2,5,-3,-10,1,14,2,// 0,0,6,3,-3,-4,2,19};//static double b[8]={0,-6,6,23,11,-22,-15,45};//static double x_jing[8]={1,-1,0,2,1,-1,0,2};//static double x0[8]={0,0,0,0,0,0,0,0};//static double x1[8];static double a[10][10]={4,-1,0,0,0,0,0,0,0,0,-1,4,-1,0,0,0,0,0,0,0,0,-1,4,-1,0,0,0,0,0,0,0,0,-1,4,-1,0,0,0,0,0,0,0,0,-1,4,-1,0,0,0,0,0,0,0,0,-1,4,-1,0,0,0,0,0,0,0,0,-1,4,-1,0,0,0,0,0,0,0,0,-1,4,-1,0,0,0,0,0,0,0,0,-1,4,-1,0,0,0,0,0,0,0,0,-1,4};static double b[10]={7,5,-13,2,6,-12,14,-4,5,-5};static double x_jing[10]={2,1,-3,0,1,-2,3,0,1,-1};//精确解static double x0[10]={0,0,0,0,0,0,0,0,0,0};double Max(double w,double y){double sum1,sum2,max;for (i=0;i<P;i++){sum1=0;sum2=0;for (j=0;j<=i-1;j++)sum1+=a[i][j]*x1[j];for (j=i;j<P;j++)sum2+=a[i][j]*x0[j];sumx[i]=w*(b[i]-sum1-sum2)/a[i][i];x1[i]=x0[i]+sumx[i];}max=fabs(x_jing[0]-x1[0]);for (i=1;i<P;i++){if (fabs(x_jing[i]-x1[i])>max)max=fabs(x_jing[i]-x1[i]);}cout<<"第"<<y<<"次迭代的误差为"<<max<<endl;return max;}void main(){double e[3]={10e-3,10e-4,10e-5};double w[5]={0.8,0.9,1,1.1,1.2};double max;int t,l;cout<<"请选择精确度:0、10e-3 1、10e-4 2、103-5 ";cin>>t;cout<<"请选择松弛因子:0、0.8 1、0.9 2、1 3、1.1 4、1.2 ";cin>>l;for (k=0;k<N;k++){max=Max(w[l],k);if (max<e[t])//判断精度是否符合要求,若符合则跳出程序,否则继续迭代{ k=k;break;}else{for (i=0;i<P;i++)x0[i]=x1[i];}}if (k<N)//输出结果{cout<<"迭代次数为"<<k<<endl;cout<<"方程组的解为"<<endl;for (i=0;i<P;i++)cout<<" "<<x1[i]<<endl;}else{cout<<"迭代次数超过"<<N<<"迭代终止!"<<endl;cout<<"方程组的解为"<<endl;for (i=0;i<P;i++)cout<<" "<<x1[i]<<endl;}}【运行结果】方程A :⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡1-421534100368-24-3-81-012029137-2621-234179-11-1003524-31-23-6217758-6233-761-62911-31-512-301-231-2-2010563-5-6000121-3-2416084-0484⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡-2119381346323125Jacobi 迭代Gauss-Seidol迭代SOR迭代方程B Jacobi迭代Gauss-Seidol迭代SOR迭代方程C ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡554141262135741-000000001-000000041-0000001-41-0000001-41-0000001-41-0000001-41-0000001-41-0000001-41-0000001-400000001-000000001-410987654321x x x x x x x x x xJacobi 迭代Gauss-Seidol迭代(选取了不同的精度)SOR迭代(选取了不同的松弛因子)【结果分析】1、通过实验结果看出(方程C的Gauss-Seidol迭代),取的精度不同,迭代的次数也不同。
东北大学2007年硕士招生专业介绍1.文法学院 (1)030103宪法学与行政法学 (1)030103国际法学 (1)030201政治学理论 (2)030201中外政治制度 (2)030205思想政治教育 (2)030503马克思主义中国化研究 (3)120403 教育经济与管理 (3)020101 政治经济学 (4)010108科学技术哲学 (4)030504国外马克思主义研究 (5)120401行政管理 (5)120404 社会保障 (6)010101 马克思主义哲学 (6)030501马克思主义基本原理 (7)071200科学技术史 (7)010105伦理学 (7)2.理学院 (8)070101基础数学 (8)070102计算数学 (9)070103概率论与数理统计 (9)070104应用数学 (9)070105运筹学与控制论 (10)070201理论物理 (10)070203原子与分子物理 (10)070205凝聚态物理 (11)070207光学 (11)070208无线电物理 (12)070301 无机化学 (12)070302 分析化学 (12)070303有机化学 (13)070304物理化学 (13)070305高分子化学与物理 (13)071012生态学 (14)071101系统理论 (14)080101一般力学与力学基础 (15)080102固体力学 (15)080103流体力学 (15)080501材料物理与化学 (16)081703生物化工 (16)081704应用化学 (16)3.机械工程与自动化学院 (17)080201机械制造及其自动化 (17)080202 机械电子工程 (17)080203机械设计及理论 (18)080204 车辆工程 (18)080704流体机械及工程 (19)080706化工过程机械 (19)4.材料与冶金学院 (20)080502 材料学 (20)080503 材料加工工程 (20)080601 冶金物理化学 (20)080602 钢铁冶金 (21)080603有色金属冶金 (21)080701 工程热物理 (21)080702 热能工程 (22)080705 低温与制冷工程 (23)081701 化学工程 (23)081702 化学工艺 (24)083001环境科学 (24)080402测试计量技术及仪器 (24)080802电力系统及其自动化 (25)080804电力电子与电力传动 (25)080805电工理论与新技术 (26)081001通信与信息系统 (26)081002信号与信息处理 (27)081101控制理论与控制工程 (27)081102 检测技术与自动化装置 (28)081103系统工程 (28)081104模式识别与智能系统 (29)081105导航、制导与控制 (29)081201计算机系统结构 (30)081202计算机软件与理论 (30)081203计算机应用技术 (31)080902电路与系统 (31)6.资源与土木工程学院 (31)080104 工程力学 (31)081401 岩土工程 (32)081402 结构工程 (32)081601 大地测量学与测量工程 (33)081602摄影测量与遥感 (33)081603地图制图学与地理信息工程 (34)081801 矿产普查与勘探 (34)081802 地球探测与信息技术 (34)081901 采矿工程 (35)081902 矿物加工工程 (35)081903 安全技术及工程 (36)083002 环境工程 (36)7.工商管理学院 (36)020204金融学 (36)020205产业经济学 (37)020206国际贸易学 (37)020209 数量经济学 (37)12010 管理科学与工程 (38)120201会计学 (38)120202企业管理 (39)120204技术经济及管理 (39)8.软件学院 (39)081280 软件工程 (39)9.艺术学院 (40)050402 音乐学 (40)050404 设计艺术学 (42)10.外国语学院 (43)050201英语语言文学 (43)050205日语语言文学 (43)050211 外国语言学与应用语言学(英语) (44)050211 外国语言学与应用语言学(日语) (45)11.中荷生物医学工程学院 (45)083100 生物医学工程 (45)2007年东北大学招生专业简介1.文法学院030103宪法学与行政法学培养目标:1、具有坚定正确的政治方向和良好的道德素质;通过本专业的学习,具备坚实的专业基础理论和系统的专门知识,有较宽的相关知识面和严谨的法学思维能力。
数值分析试题 2007.12一、简答下列各题:(每题4分,共20分)1.为了提高计算精度,求方程x 2-72x+1=0的根,应采用何种公式,为什么?2.设⎪⎪⎭⎫ ⎝⎛=2112A ,求)(A ρ和2)(A Cond 。
3.设⎪⎪⎪⎭⎫ ⎝⎛=131122321A ,求A 的LU 分解式。
4.问23221)2(x x x x ++=是不是3R 上的向量范数,为什么? 5.求数值积分公式⎰-≈ba ab a f dx x f ))(()(的截断误差R[ƒ]。
二、解答下列各题:(每题8分,共56分)1.已知线性方程组⎪⎩⎪⎨⎧=-+=-+=-+3532314321321321x x x x x x x x x ,问能用哪些方法求解?为什么?2.解线性方程组b Ax =的Gauss-Seidel 迭代法是否收敛?为什么?其中:⎪⎪⎪⎭⎫ ⎝⎛--=211111112A3.设]2,0[)(4C x f y ∈=,且0)0(,0)2(,2)1(,1)0(='===f f f f ,试求)(x f 的三次插值多项式)(3x H ,并写出余项)()()(33x H x f x R -=。
4.给定离散数据试求形如3bx a y +=的拟合曲线。
5.求区间[0,1]上权函数为x x =)(ρ的正交多项式)(0x p ,)(1x p 和)(2x p 。
6.确定求积系数321,,A A A ,使求积公式:⎰+++-≈31321)532()2()532()(f A f A f A dx x f具有尽可能高的代数精度,并问代数精度是多少?7. 利用2=n 的复化Simpson 公式计算计算定积分 ,并估计误差][f R 。
三、(12分)已知方程0cos 2=-x x , 1.证明此方程有唯一正根α;2.建立一个收敛的迭代格式,使对任意初值]1,0[0∈x 都收敛,说明收敛理由和收敛阶。
3.若取初值00=x ,用此迭代法求精度为510-=ε的近似根,需要迭代多少步? 四、(12分)已知求解常微分方程初值问题:⎩⎨⎧∈=='],[,)(),(b a x a y y x f y α 的差分公式:⎪⎪⎪⎩⎪⎪⎪⎨⎧=++==++=+α0121211)32,32(),()3(4y hk y h x f k y x f k k k h y y n n n n n n 1.证明:此差分公式是二阶方法;2.用此差分公式求解初值问题1)0(,10=-='y y y 时,取步长h=0.25,所得数值解是否稳定,为什么?⎰10sin xdx数值分析试题(参考答案)一、1.应采用公式:1211221)13636(,13636---+==-+=x x x ,避免相近数相减。
2.A 的特征值为3,121==λλ,所以)(A ρ=3;2)(A Cond =3⨯1=1。
3.由⎪⎪⎪⎭⎫ ⎝⎛=131122321A ⎪⎪⎪⎭⎫ ⎝⎛----→2/92/11522321,故⎪⎪⎪⎭⎫⎝⎛---⎪⎪⎪⎭⎫ ⎝⎛-=2/95232112/11121A 。
4.不是,不满足非负性(如0)2,1,0(≠-=T x ,但0=x )。
5.⎰--=ba ab a f dx x f f R ))(()()(),(,2)()())((2b a a b f dx a x f bax ∈-'=-'=⎰ξξξ.二、1.由于系数矩阵各阶顺序主子式都不为零,所以可用顺序Gauss 消元法; 由于系数矩阵行列式不为零,也可以用列主元(全主元)Gauss 消元法; 由于系数矩阵各阶顺序主子式都不为零,所以可用直接三角分解法(LU ). 由于系数矩阵是严格对角占优矩阵,可用J-法,G-S 法和SOR(10≤<ω)法。
2.令021112=--λλλλλλ得:0)12(2=+λλ,所以G-S 迭代矩阵G 的特征值为:2/1,0321-===λλλ,于是12/1)(<=G ρ,所以G-S 迭代法收敛。
3.设002211003)()()()()(y x y x y x y x x H '+++=ψϕϕϕ)(2)(10x x ϕϕ+= 其中,)2)(1)(()(0--+=x x b ax x ϕ)2)(1)(23(4/1--+=x x x)2()(21-=x Cx x ϕ)2(2--=x x所以,)2(2)2)(1)(23(4/1)(23----+=x x x x x x H )2)(25(4/12-++-=x x x 〔或令)2)(()(23-++=x c bx ax x H ,用待定系数法求出。
〕余项为:)2,0(,)2)(1(!4)()()()(2)4(33∈--=-=x x x x x f x H x f x R ξξ 4.取310)(,1)(x x x ==ϕϕ,则有T T T f x )2,0,1,1(,)8,1,0,1()(,)1,1,1,1(10-=-==ϕϕ,正则方程组为⎩⎨⎧=+=+15668284b a b a ,拟合曲线:3322.006.05011503x x y -=+=。
5.区间[0,1]上x x =)(ρ的正交多项式:1)(0=x p ,32),(),()(1010200001-=-=-=⎰⎰x xdxdx x x p p p p x x x p ,)32()3/2()3/2()(12103110322-----=⎰⎰⎰⎰x dxx x dxx x xdx dxx x x p 103562+-=x x 。
6.令公式对f(x)=1,x,x 2精确成立,得2321=++A A A ,4)5/32(2)5/32(321=+++-A A A , 解得:98,95231===A A A3/26)5/32(4)5/32(32212=+++-A A A所以,公式为:)]5/32(5)2(8)5/32(5[91)(31+++-≈⎰f f f dx x ff(x)=x 3时,左=20,右=180/9=20,公式精确成立,f(x)=x 4时,左=242/5,右=2178/5/9=242/5,公式精确成立, f(x)=x 5时,左=364/3,右=1092/9=364/3,公式精确成立, f(x)=x 6时,公式不精确成立,所以,公式的代数精度为5。
7.=++++=≈⎰]1sin 43sin 441sin 421sin 20[sin 121sin 210S xdx 0.459707744000018261.01628801sin 22880)01(|)(|445≈⨯=⨯-≤M f R 三、1.记x x x f cos 2)(-=,由于0sin 2)(>+='x x f ,所以)(x f 是严格单调增函数,又由于01)0(<-=f ,01cos 2)1(>-=f ,所以方程0)(=x f 有唯一正根α,且在区间(0,1)内。
2.将方程改写为:2/cos x x =可建立迭代格式:,...2,1,0,cos 2/11==+k x x k k ,且迭代函数为:x x cos 2/1)(=ϕ。
由于]1,0[,12/1)(1cos 2/10∈<≤≤<x x ϕ ,且]1,0[,121sin sin 21)(∈<≤='x x x ϕ,所以,对任意]1,0[0∈x 此迭代法收敛,又由于)1,0(,0sin 21)(∈≠='αααϕ此迭代法是线性收敛的,即收敛阶为1。
3.128.13)1sin 2/1ln(/2/1)1sin 2/11(10ln ln /||)1(ln501≈-=--≥-L x x L k ε,k =14。
若取L=1/2,可得k ≥16.6096,则取k =17。
四、1.由于+∂∂+∂∂+=++=)(32)32,32(12n nn n n n f yf x f h f hk y h x f k)()9494294(23222222222h O f h yf f h y x f h x f h n n n n n +∂∂+∂∂∂+∂∂+ 所以有:+∂∂+∂∂++=+)(221n n n n n n f y f x f h hf y y )()2(642222223h O f yf f y x f x f h n n n n n +∂∂+∂∂∂+∂∂+ 又由于:)()(!31)(21)()()()(4321h O h x y h x y h x y x y h x y x y n n n n n n +'''+''+'+=+=+ +∂∂+∂∂++=)(22n n n n n f y f x f h hf y )()(!643h O x y h n +'''所以有:)()(311h O y x y n n =-++,此差分公式是二阶方法。
2.对1)0(,10=-='y y y ,由于)320(10,1021n n n hy y k y k --=-=,差分公式为: n n n y h h k k hy y )50101()3(42211+-=++=+ 当h =0.25时,由于|1-10h+50h 2|=1.625>1,所以,所得数值解不稳定。