数值计算实验课题目

合集下载

数值计算实验报告

数值计算实验报告

本科实验报告课程名称:计算机数值方法实验项目:方程求根、线性方程组的直接解法、线性方程组的迭代解法、代数插值实验地点:专业班级:学生姓名:指导教师:实验一方程求根}五、实验结果与分析二分法实验结果迭代法实验结果结果分析:本题目求根区间为[1,2],精度满足|x*-x n|<0.5×10-5,故二分法用公式|x*-x n|<(b-a)/ 2n,可求得二分次数并输出每次结果。

对迭代法首先要求建立迭代格式。

迭代格式经计算已输入程序之中,故直接给初值便可利用迭代法求出精度下的解。

六、讨论、心得每次的实验都是对已学过的理论知识的一种实战。

通过本次实验,我将二分法与迭代法的思路清晰化并且将其变成计算机设计语言编写出来,运用到了实际解决问题上感觉很好。

我自认为本次跟其他同学比较的优点在于我在二分法实现的时候首先利用换底公式将需要的二分次输输出,如此便很清晰明了的知道接下来每一步的意思。

迭代法给我的感觉便是高度的便捷简化,仅用几行代码便可以同样解决问题。

相比较二分法来说,我更喜欢迭代的思路。

实验二线性方程组的直接解法for(k=n-2;k>=0;k--){sum=0;for(j=k+1;j<n;j++)sum=sum+a[k][j]*x[j];x[k]=(b[k]-sum)/a[k][k];}for(i=0;i<n;i++)printf("x[%d]=%f ",i,x[i]); printf("\n"); //输出解向量x}五、实验结果与分析结果结果分析:如上图所示,输入线性方程组元数n=3,则会要求输入3*3的系数矩阵A与向量b构成的增广矩阵。

根据算法需要将系数矩阵A消元成上三角矩阵。

随后根据矩阵乘法公式变形做对应的回代。

六、讨论、心得本次实验在编写时候感觉还好,感觉将思路变成了程序设计语言,得以实现题目的要求。

但是在运行以及结果分析的时候,感觉到了本实验的一些不足之处:就是我的实验虽然可以实现不同的元数的线性方程组求解,但是缺少了分析初始条件——主元素不能为零。

数值计算方法课后习题答案

数值计算方法课后习题答案

第一章 绪论(12)1、设0>x ,x 的相对误差为δ,求x ln 的误差。

[解]设0*>x 为x 的近似值,则有相对误差为δε=)(*x r ,绝对误差为**)(x x δε=,从而x ln 的误差为δδεε=='=*****1)()(ln )(ln x x x x x , 相对误差为****ln ln )(ln )(ln x x x x rδεε==。

2、设x 的相对误差为2%,求n x 的相对误差。

[解]设*x 为x 的近似值,则有相对误差为%2)(*=x r ε,绝对误差为**%2)(x x =ε,从而nx 的误差为nn x x nxn x x n x x x **1***%2%2)()()()(ln *⋅=='=-=εε,相对误差为%2)()(ln )(ln ***n x x x nr==εε。

3、下列各数都是经过四舍五入得到的近似数,即误差不超过最后一位的半个单位,试指出它们是几位有效数字:1021.1*1=x ,031.0*2=x ,6.385*3=x ,430.56*4=x ,0.17*5⨯=x 。

[解]1021.1*1=x 有5位有效数字;0031.0*2=x 有2位有效数字;6.385*3=x 有4位有效数字;430.56*4=x 有5位有效数字;0.17*5⨯=x 有2位有效数字。

4、利用公式(3.3)求下列各近似值的误差限,其中*4*3*2*1,,,x x x x 均为第3题所给的数。

(1)*4*2*1x x x ++; [解]3334*4*2*11***4*2*1*1005.1102110211021)()()()()(----=⨯=⨯+⨯+⨯=++=⎪⎪⎭⎫ ⎝⎛∂∂=++∑x x x x x f x x x e nk k k εεεε;(2)*3*2*1x x x ;[解]52130996425.010********.2131001708255.01048488.2121059768.01021)031.01021.1(1021)6.3851021.1(1021)6.385031.0()()()()()()()()(3333334*3*2*1*2*3*1*1*3*21***3*2*1*=⨯=⨯+⨯+⨯=⨯⨯+⨯⨯+⨯⨯=++=⎪⎪⎭⎫⎝⎛∂∂=-------=∑x x x x x x x x x x x f x x x e n k k kεεεε;(3)*4*2/x x 。

丁丽娟《数值计算方法》五章课后实验题答案(源程序很详细,且运行无误)

丁丽娟《数值计算方法》五章课后实验题答案(源程序很详细,且运行无误)

丁丽娟《数值计算方法》五章课后实验题答案(源程序都是自己写的,很详细,且保证运行无误)我做的五章数值实验作业题目如下:第二章:1、2、3、4题第三章:1、2题第四章:1、2题第六章:2、3题第八章:1、2题第二章1:(1) 对A进行列主元素三角分解:function [l u]=myfun(A) n=size(A); for k=1:n for i=k:n sum=0; m=k; for j=1:(k-1) sum=sum+A(i,j)*A(j,k); end s(i)=A(i,k)-sum; if abs(s(m))<abs(s(i)) m=i; end end for j=1:n c=A(m,j); A(m,j)=A(k,j); A(k,j)=c; end for j=k:n sum=0; for r=1:(k-1) sum=sum+A(k,r)*A(r,j); end u(k,j)=A(k,j)-sum; A(k,j)=u(k,j); end for i=1:n l(i,i)=1; end for i=(k+1):n sum=0; for r=1:(k-1) sum=sum+A(i,r)*u(r,k); end l(i,k)=(A(i,k)-sum)/u(k,k); A(i,k)=l(i,k); end end 的列主元素三角分解:求A的列主元素三角分解:>>A=[1 1 1 1 1;1 2 3 4 5;1 3 6 10 15;1 4 10 20 35;1 5 15 35 70]; >>[L,U]=myfun(A) 结果:L = 1.0000 0 0 0 0 1.0000 1.0000 0 0 0 1.0000 0.5000 1.0000 0 0 1.0000 0.7500 0.7500 1.0000 0 1.0000 0.2500 0.7500 -1.0000 1.0000 U = 1.0000 1.0000 1.0000 1.0000 1.0000 0 4.0000 14.0000 34.0000 69.0000 0 0 -2.0000 -8.0000 -20.5000 0 0 0 -0.5000 -2.3750 0 0 0 0 -0.2500 (2) 求矩阵的逆矩阵A -1: inv(A) 结果为:ans = 5 -10 10 -5 1 -10 30 -35 19 -4 10 -35 46 -27 6 -5 19 -27 17 -4 1 -4 6 -4 1 (3)检验结果:E=diag([1 1 1 1 1]) A\E ans = 5 -10 10 -5 1 -10 30 -35 19 -4 10 -35 46 -27 6 -5 19 -27 17 -4 1 -4 6 -4 1 2: 程序:程序:function d=myfun(a,b,c,d,n) for i=2:n l(i)=a(i)/b(i-1); a(i)=l(i); u(i)=b(i)-c(i-1)*a(i); b(i)=u(i); y(i)=d(i)-a(i)*d(i-1); d(i)=y(i); end x(n)=d(n)/b(n); d(n)=x(n); for i=(n-1):-1:1 x(i)=(d(i)-c(i)*d(i+1))/b(i); d(i)=x(i); end 求各段电流量程序:求各段电流量程序:for i=2:8 a(i)=-2; end b=[2 5 5 5 5 5 5 5]; c=[-2 -2 -2 -2 -2 -2 -2]; V=220; R=27; d=[V/R 0 0 0 0 0 0 0]; n=8; I=myfun(a,b,c,d,n) 运行程序得:运行程序得:I = 8.1478 4.0737 2.0365 1.0175 0.5073 0.2506 0.1194 0.0477 3:程序:(1)求矩阵A和向量b的matlab程序:function [A b]=myfun(n) for i=1:n X(i)=1+0.1*i; end for i=1:n for j=1:n A(i,j)=X(i)^(j-1); end end for i=1:n b(i)=sum(A(i,:)); end 求n=5时A1,b1及A1的2-条件数程序运行结果如下:条件数程序运行结果如下: n=5;[A1,b1]=myfun(n) A1 = 1.0000 1.1000 1.2100 1.3310 1.4641 1.0000 1.2000 1.4400 1.7280 2.0736 1.0000 1.3000 1.6900 2.1970 2.8561 1.0000 1.4000 1.9600 2.7440 3.8416 1.0000 1.5000 2.2500 3.3750 5.0625 b1 = 6.1051 7.4416 9.0431 10.9456 13.1875 cond2=cond(A1,2)cond2 = 5.3615e+005 条件数程序运行结果如下:求n=10时A2,b2及A2的2-条件数程序运行结果如下:n=10; [A2,b2]=myfun(n) A2 = 1.0000 1.1000 1.2100 1.3310 1.4641 1.6105 1.7716 1.9487 2.1436 2.3579 1.0000 1.2000 1.4400 1.7280 2.0736 2.4883 2.9860 3.5832 4.2998 5.1598 1.0000 1.3000 1.6900 2.1970 2.8561 3.7129 4.8268 6.2749 8.1573 10.6045 1.0000 1.4000 1.9600 2.7440 3.8416 5.3782 7.5295 10.5414 14.7579 20.6610 1.0000 1.5000 2.2500 3.3750 5.0625 7.5938 11.3906 17.0859 25.6289 38.4434 1.0000 1.6000 2.5600 4.0960 6.5536 10.4858 16.7772 26.8435 42.9497 68.7195 1.0000 1.7000 2.8900 4.9130 8.3521 14.1986 24.1376 41.0339 69.7576 118.5879 1.0000 1.8000 3.2400 5.8320 10.4976 18.8957 34.0122 61.2220 110.1996 198.3593 1.0000 1.9000 3.6100 6.8590 13.0321 24.7610 47.0459 89.3872 169.8356 322.6877 1.0000 2.0000 4.0000 8.0000 16.0000 32.0000 64.0000 128.0000 256.0000 512.0000 b2 = 1.0e+003 * 0.0159 0.0260 0.0426 0.0698 0.1133 0.1816 0.2866 0.4451 0.6801 1.0230 cond2=cond(A2,2) cond2 = 8.6823e+011 条件数程序运行结果如下:求n=20时A3,b3及A3的2-条件数程序运行结果如下:n=20; [A3,b3]=myfun(n) A3 = 1.0e+009 * Columns 1 through 10 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 11 through 20 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 0.0001 0.0002 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 0.0001 0.0003 0.0005 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 0.0001 0.0003 0.0006 0.0013 0.0000 0.0000 0.0000 0.0000 0.0001 0.0001 0.0003 0.0007 0.0015 0.0032 0.0000 0.0000 0.0000 0.0001 0.0001 0.0003 0.0006 0.0014 0.0032 0.0075 0.0000 0.0000 0.0000 0.0001 0.0002 0.0005 0.0012 0.0029 0.0070 0.0167 0.0000 0.0000 0.0001 0.0001 0.0004 0.0009 0.0023 0.0058 0.0146 0.0364 0.0000 0.0000 0.0001 0.0002 0.0006 0.0017 0.0044 0.0113 0.0295 0.0766 0.0000 0.0001 0.0002 0.0004 0.0011 0.0030 0.0080 0.0215 0.0581 0.1570 0.0000 0.0001 0.0002 0.0007 0.0018 0.0051 0.0143 0.0400 0.1119 0.3133 0.0000 0.0001 0.0004 0.0010 0.0030 0.0086 0.0250 0.0726 0.2105 0.6103 0.0001 0.0002 0.0005 0.0016 0.0048 0.0143 0.0430 0.1291 0.3874 1.1623 b3 = 1.0e+009 * Columns 1 through 10 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 0.0002 0.0004 0.0010Columns 11 through 20 0.0025 0.0059 0.0132 0.0287 0.0606 0.1246 0.2494 0.4874 0.9316 1.7434 cond2=cond(A3,2) cond2 =3.2395e+022 由上述运行结果可知:它们是病态的,而且随着n的增大,矩阵的病态变得严重。

实验五+MATLAB数值计算(含实验报告)

实验五+MATLAB数值计算(含实验报告)

实验五 MATLAB 数值计算一、实验目的1.掌握求数值导数和数值积分的方法。

2.掌握代数方程数值求解的方法。

3.掌握常微分方程数值求解的方法。

二、实验的设备及条件计算机一台(带有MATLAB7.0以上的软件环境)。

设计提示1.参考本节主要内容,学习并理解相关函数的含义及调用方法。

三、实验内容1.线性系统方程:分别使用左除(\)和求逆(inv )求解下面系统方程的解:⎪⎩⎪⎨⎧=+=+=++377251463c b b a c b a2. 数值积分:使用quad 和trapz 求解⎰-503/dx xe x 的数值积分,并与其解析解9243/5+--e 相比较;3. 请完成教材P154页中实验指导环节的实验内容第2题4. 请完成教材P155页中思考练习的第3题(1),并绘制解在该求解区间(即[0,5])上的图像;。

5、请完成教材P164页实验指导环节的实验内容第5题。

(提示:该函数的符号导数,可以通过函数diff 求得。

首先定义符号变表达式,如求sin(x)的一阶符号导数,可以先定义f=’sin(x)’;df=diff(f);可求得df=cos(x)。

其中df 即为函数f 的一阶符号导数)。

四、实验报告要求(包含预习报告要求和最终报告要求)1.实验名称2.实验目的3.实验设备及条件4.实验内容及要求5.实验程序设计指程序代码。

6.实验结果及结果分析实验结果要求必须客观,现象。

结果分析是对实验结果的理论评判。

7.实验中出现的问题及解决方法8. 思考题的回答五、实验报告的提交方式Word文档,命名方式:实验号_你的学号_姓名例如本次实验:实验一_000000001_张三.doc(信息101提交报告邮箱):E_mail: *******************(网络工程101提交作业邮箱):E_mail: *******************(注意网络班的M是大写的)下一次课前提交,过期不收!六、参考文献参考教材和Matlab帮助文件。

数值计算课后习题答案

数值计算课后习题答案

习 题 一 解 答1.取3.14,3.15,227,355113作为π的近似值,求各自的绝对误差,相对误差和有效数字的位数。

分析:求绝对误差的方法是按定义直接计算。

求相对误差的一般方法是先求出绝对误差再按定义式计算。

注意,不应先求相对误差再求绝对误差。

有效数字位数可以根据定义来求,即先由绝对误差确定近似数的绝对误差不超过那一位的半个单位,再确定有效数的末位是哪一位,进一步确定有效数字和有效数位。

有了定理2后,可以根据定理2更规范地解答。

根据定理2,首先要将数值转化为科学记数形式,然后解答。

解:(1)绝对误差:e(x)=π-3.14=3.14159265…-3.14=0.00159…≈0.0016。

相对误差:3()0.0016()0.51103.14r e x e x x-==≈⨯有效数字:因为π=3.14159265…=0.314159265…×10,3.14=0.314×10,m=1。

而π-3.14=3.14159265…-3.14=0.00159…所以│π-3.14│=0.00159…≤0.005=0.5×10-2=21311101022--⨯=⨯所以,3.14作为π的近似值有3个有效数字。

(2)绝对误差:e(x)=π-3.15=3.14159265…-3.14=-0.008407…≈-0.0085。

相对误差:2()0.0085()0.27103.15r e x e x x--==≈-⨯有效数字:因为π=3.14159265…=0.314159265…×10,3.15=0.315×10,m=1。

而π-3.15=3.14159265…-3.15=-0.008407…所以│π-3.15│=0.008407……≤0.05=0.5×10-1=11211101022--⨯=⨯所以,3.15作为π的近似值有2个有效数字。

(3)绝对误差:22() 3.14159265 3.1428571430.0012644930.00137e x π=-=-=-≈-相对误差:3()0.0013()0.4110227r e x e x x--==≈-⨯有效数字:因为π=3.14159265...=0.314159265 (10)22 3.1428571430.3142857143107==⨯,m=1。

数值计算方法课后实验-李维国

数值计算方法课后实验-李维国

实验3.1 Gauss消去法的数值稳定性实验实验目的:观察和理解高斯消元过程中出现小主元(即|a(k)kk|很小)时引起方程组解数值不稳定性.实验内容:求解方程组Ax=b,其中实验要求:(1)计算矩阵的条件数,判断系数矩阵是良态的还是病态的.(2)用高斯列主元消去法求得L和U及解向量x1,x2 .(3)用不选主元的高斯消去法求得L和U及解向量x1,x2 .(4)观察小主元并分析对计算结果的影响.解:(1)cond(A1)=68.4296cond(A2)=8.9939A1矩阵条件数远大于1,A1矩阵为病态;A2矩阵条件数没有远远大于1,A2矩阵为良态。

(2)高斯列主元消去法:程序如下ClearA1=[0.3*power(10,-15),59.14,3,1;5.291,-6.130,-1,2;11.2,9,5,2;1,2,1,1];b1=[59.17;46.18;1;2];% A1=[1,2,-1,1;1,1,2,-1;3,-1,1,1;2,1,3,-1];%b1=[1;-2;6;-1];A2=[10,-7,0,1;-3,2.0999********,6,2;5,-1,5,-1;0,1,0,2];b2=[8;5.900000000001;5;1];A=A1; b=b1;n=input('n=');for k=1:n-1 [a,b3]=max(A(k:n,k)); A([k k-1+b3],:)=A([k-1+b3 k],:); b([k k-1+b3],:)=b([k-1+b3 k],:); if A(k,k)~=0A(k+1:n,k)=A(k+1:n,k)./A(k,k);A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n); else stop end endA; b; L=tril(A,-1);U=triu(A,0); for i=1:1:n L(i,i)=1;end L; for j=1:n-1 b(j)=b(j)/L(j,j);b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j);end b(n)=b(n)/L(n,n); b; y=b;for j=n:-1:2 y(j)=y(j)/U(j,j); y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j);end y(1)=y(1)/U(1,1);结果如下:方程组一:L1: U1:解向量x1结果如下:方程组二结果如下:L2:U2:解向量x2结果如下:(3)不选主元的分解程序如下:ClearA1=[0.3*power(10,-15),59.14,3,1;5.291,-6.130,-1,2;11.2,9,5,2;1,2,1,1]; b1=[59.17;46.18;1;2];%A1=[6,2,1,-1;2,4,1,0;1,1,4,-1;-1,0,-1,3];%b1=[6;-1;5;-5];A2=[10,-7,0,1;-3,2.0999********,6,2;5,-1,5,-1;0,1,0,2];b2=[ 8;5.900000000001;5;1]; A=A2; b=b2; n=input('n='); for k=1:n-1A(k+1:n,k)= A(k+1:n,k)/A(k,k); A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n); end L=tril(A,-1); U=triu(A,0); for i=1:1:n L(i,i)=1; end L ;for j=1:n-1 b(j)=b(j)/L(j,j);b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j); end b(n)=b(n)/L(n,n); b; y=b;for j=n:-1:2 y(j)=y(j)/U(j,j); y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j); end y(1)=y(1)/U(1,1);方程组一结果:L1: U1:解向量x1结果如下:方程组二结果:L2: U2:解向量x2结果如下:(4) 观察方程在两种不同方法下的结果可知:由于计算机字长是一定的,小主元会造成大数除以小数的结果超出字长,结果发生很大的变化。

数值计算大作业

数值计算大作业

课程设计课程名称:设计题目:学号:姓名:完成时间:题目一:非线性方程求根 一 摘要非线性方程的解析解通常很难给出,因此非线性方程的数值解就尤为重要。

本实验通过使用常用的求解方法二分法和Newton 法及改进的Newton 法处理几个题目,分析并总结不同方法处理问题的优缺点。

观察迭代次数,收敛速度及初值选取对迭代的影响。

用Newton 法计算下列方程(1) 310x x --= , 初值分别为01x =,00.45x =,00.65x =; (2) 32943892940x x x +-+= 其三个根分别为1,3,98-。

当选择初值02x =时给出结果并分析现象,当6510ε-=⨯,迭代停止。

解:1)采用MATLAB 进行计算;首先定义了Newton 法:function kk=newton(f,df,x0,tol,N)% Newton Method (牛顿法)% The first parameter f is a external function with respect to viable x.(第一个参数也就是本题所用的函数f )% The second parameter df is the first order diffential function of fx.(第二个参数也就是本体所用函数f 的导数方程df ) % x0 is initial iteration point(初值). % tol is the tolerance of the loop (精度).% N is the maximum number of iterations (循环上限). x=x0;f0=eval(f);df0=eval(df); n=0;disp(' [ n xn xn+1 fn+1 ]'); while n<=N x1=x0-f0/df0; x=x1; f1=eval(f); X=[n,x0,x1,f1]; disp(X);if abs(x0-x1)<tolfprintf('The procedure was successful.') kk=X; return else n=n+1; x0=x1;f0=f1;endendif n==N+1fprintf('the method failed after N iterations. '),kk=0;End我们把Newton法存为.m格式的文件;之后我们运行程序:clear;clc;syms xf=x^3-x-1;df=diff(f,x);x=newton(f,df,1,0.0001,50);x会得到一下结果[ n xn xn+1 fn+1 ]0 1.0000 1.5000 0.87501.0000 1.5000 1.0625 -0.86302.0000 1.0625 1.4940 0.8408到第50次迭代时候会出现该问题:47.0000 1.4898 1.0814 -0.816748.0000 1.0814 1.4898 0.816749.0000 1.4898 1.0814 -0.816750.0000 1.0814 1.4898 0.8167the method failed after N iterations.x =0;同样测试x0=0.45、0.65得不出结果,判断出初值离真值太远,所以我们采用牛顿下山法进行计算迭代:我们定义了其中的f函数和df函数,并且分别存为.m格式的文件,其代码如下:f:function y=f(x)y=x^3-x-1;df:function y=df(x)y=3*x^2-1;之后我们定义newton下山法同时也存为.m的程序:function [x,i]=downnewton(f,df,x0,tol)k=0;i=1;disp(' [ n xn xn+1 fn+1 ]'); while(k==0)fx=feval('f',x0);dfx=feval('df',x0);t=0;u=1;while(t==0)dx=-fx/dfx;x1=x0+u*dx;fx1=feval('f',x1);fx0=feval('f',x0);if(abs(fx1)>abs(fx0));u=u/2;elset=1;endendX=[i,x0,x1,fx1];disp(X);if(abs(fx1)<tol)k=1;elsex0=x1;i=i+1;endendx=x1;i=i;end之后带入x0=0.45;downnewton('f','df',0.45,10^(-6))[ n xn xn+1 fn+1 ]1.0000 0.4500 -0.4155 -0.65622.0000 -0.4155 -0.5857 -0.61523.0000 -0.5857 -0.5754 -0.61514.0000 -0.5754 -0.5782 -0.61515.0000 -0.5782 -0.5773 -0.61516.0000 -0.5773 -0.5774 -0.61517.0000 -0.5774 -0.5773 -0.61518.0000 -0.5773 -0.5774 -0.61519.0000 -0.5774 -0.5774 -0.615110.0000 -0.5774 -0.5774 -0.615111.0000 -0.5774 1.3131 -0.049012.0000 1.3131 1.3248 0.000513.0000 1.3248 1.3247 0.0000ans =1.3247带入x0=0.6;downnewton('f','df',0.6,10^(-6))[ n xn xn+1 fn+1 ]1.0000 0.6000 1.1406 -0.65662.0000 1.1406 1.3668 0.18663.0000 1.3668 1.3263 0.00674.0000 1.3263 1.3247 0.00005.0000 1.3247 1.3247 0.0000ans =1.3247带入x0=1;downnewton('f','df',1,10^(-6))[ n xn xn+1 fn+1 ]1.0000 1.0000 1.5000 0.87502.0000 1.5000 1.3478 0.10073.0000 1.3478 1.3252 0.00214.0000 1.3252 1.3247 0.0000ans =1.32472)同样采用Newton下山法:重新定义f、df:f:function y=f(x)y=x^3+94*x^2-389*x+294;df:function y=df(x)y=3*x^2+188*x-389;再带入初值x0=2;downnewton('f','df',2,5*10^(-6))[ n xn xn+1 fn+1 ]1 2 -98 0ans =-98得出x=-98;分析:先画出该函数的图像;x=(-100:.1:100);ezplot('x^3+94*x^2-389*x+294',[-100 100]) 得出该图像如图:-100-80-60-40-20020406080024681012141618x 105xx 3+94 x 2-389 x+294根据牛顿法的几何解释,在x0=2的点做切线,与y 相交,交点的横坐标值为x=-98则结束了该现象。

数值计算方法实验1

数值计算方法实验1

学院(系)名称:)()()()(0101112x x x f x f x f x x ---=附录(源程序及运行结果):一.二分法#include<stdio.h>#include<math.h>double f(double x){return x*x-x-1;}void main(){float a=0,b=0,x=1,m,e;int k;while(f(a)*f(b)>0){printf("请输入区间a,b的值。

以及精度e\n");scanf("%f,%f,%f",&a,&b,&e);}k=0;if(f(a)*f(b)==0){if(f(a)==0)printf("使用二分法输出:a=%f,k=%d\n",a,k);elseprintf("使用二分法输出:b=%f,k=%d\n",b,k);}else{while(f(a)*f(b)!=0){m=(a+b)/2;if(fabs(a-b)/2<e){printf("使用二分法输出:m=%f,k=%d\n",m,k);break;}else {if(f(a)*f(m)>0)a=m;else b=m;k=k+1;}}}}运行结果:二.迭代法与牛顿迭代法#include<stdio.h>#include<math.h>double f(double x){return exp(-x);}double f1(double x){return (x*exp(x)-1);}double ff(double x){return (exp(x)+x*exp(x));}void diedaifa(double x0,double e,int N){double x1;int k=1;while(k!=N){x1=f(x0);if(fabs(x1-x0)>=e){k++;if(k==N)printf("迭代失败!\n");x0=x1;}else{printf("使用迭代法输出结果:%lf\n",x1);break;}}}void NDdiedaifa(double x0,double e,int N){int k=1;double x1;while(k!=N){if(ff(x0)==0)printf("公式f(x)奇异!\n");else{x1=x0-f1(x0)/ff(x0);if(fabs(x1-x0)>=e){k++;if(k==N)printf("迭代失败!\n");x0=x1;}else{printf("使用牛顿迭代法输出结果:%lf\n",x1);break;}}}}void main(){double x0,e;int N;printf("请输入初值:");scanf("%lf",&x0);printf("精度:");scanf("%lf",&e);printf("以及判定迭代失败的最大次数N:");scanf("%d",&N);diedaifa(x0,e,N);NDdiedaifa(x0,e,N);}运行结果:四.双点弦截法#include<stdio.h>#include<math.h>double f(double x){return (x*x*x+3*x*x-x-9);}void main(){double x0,x1,x2,e;int N;int k=1;printf("请输入初值x0和x1:");scanf("%lf,%lf",&x0,&x1);printf("精度:");scanf("%lf",&e);printf("以及判定迭代失败的最大次数N:");scanf("%d",&N);while(k!=N){x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0));if(fabs(f(x2))>=e){k++;if(k==N)printf("迭代失败!\n");x0=x1;x1=x2;}else{printf("使用双点弦截法输出结果:%lf\n",x2);break;}}}运行结果:。

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

数值实验课试题本次数值实验课结课作业,请按题目要求内容写一篇文章。

按题目要求人数自由组合,每组所选题目不得相同(有特别注明的题目除外)。

试题如下:1)解线性方程组的Gauss 消去法和列主元Gauss 消去法(2人)/*张思珍,巩艳华*/用C 语言将不选主元和列主元Gauss 消去法编写成通用的子程序,然后用你编写的程序求解下列84阶的方程组⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛141515151576816816816816816848382321x x x x x x 参考书目:1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编2.《数值线性代数》,徐树方、高立、张平文编3.《数值分析简明教程》,王能超编2)解线性方程组的平方根法(4人)/*朱春成、黄锐奇、张重威、章杰*/ 用C 语言将平方根法和改进的平方根法编写成通用的子程序,然后用你编写的程序求解对称正定方程组b Ax =,其中(1)b 随机的选取,系数矩阵为100阶矩阵⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛1011101110111011101110; (2)系数矩阵为40阶的Hilbert 矩阵,即系数矩阵A 的第i 行第j 列元素为11-+=j i a ij ,向量b 的第i 个分量为∑=-+=nj i j i b 111.参考书目:1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编2.《数值线性代数》,徐树方、高立、张平文编3.《数值分析简明教程》,王能超编3)三对角线方程组的追赶法(3人)/*黄佳礼、唐伟、韦锡倍*/用C 语言将三对角线方程组的追赶法法编写成通用的子程序,然后用你编写的程序求解如下84阶三对角线方程组⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛141515151576816816816816816848382321x x x x x x 参考书目:1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编2.《数值分析简明教程》,王能超编4)线性方程组的Jacobi 迭代法(3人)/*周桂宇、杨飞、李文军*/用C 语言将Jacobi 迭代法编写成独立的子程序,并用此求解下列方程组,精确到小数点后5位⎪⎪⎪⎭⎫⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎭⎫ ⎝⎛-1490122111221321x x x 参考书目:1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编2.《数值线性代数》,徐树方、高立、张平文编3.《数值分析简明教程》,王能超编5)线性方程组的Gauss-Seidel 迭代法(3人)/*张玉超、范守平、周红春*/用C 语言将Gauss-Seidel 迭代法编写成独立的子程序,并用此求解下列方程组,精确到小数点后5位⎪⎪⎪⎭⎫⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎭⎫ ⎝⎛--397211111112321x x x 参考书目:1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编2.《数值线性代数》,徐树方、高立、张平文编3.《数值分析简明教程》,王能超编6)解线性方程组的最速下降法法(2人)/*赵育辉、阿热孜古丽*/用C 语言将最速下降法编写成通用的子程序,然后用你编写的程序求解对称正定方程组b Ax =,其中b随机的选取,系数矩阵为100阶矩阵⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛1011101110111011101110参考书目:1.《数值线性代数》,徐树方、高立、张平文编2.《最优化方法及其应用》,郭科、陈聆、魏友华编7)解线性方程组的共轭梯度法(3人)/*刘森林、武继飞、芦佩*/用C 语言将共轭梯度法编写成通用的子程序,然后用你编写的程序求解对称正定方程组b Ax =,其中系数矩阵为40阶的Hilbert 矩阵,即系数矩阵A 的第i 行第j 列元素为参考书目:1.《数值线性代数》,徐树方、高立、张平文编2.《最优化方法及其应用》,郭科、陈聆、魏友华编8)Newton 法求多元二次方程的最优值(3人)/*李馨蕾、杨宏宇、李敏*/ 用C 语言将求解多元二次方程最优值的Newton 法编写成通用的子程序,并用此求解2122212141060)(x x x x x x X f -++--=的极小值,初始点为T X ]00[0=,精度为00001.0=ε. 参考书目:《最优化方法及其应用》,郭科、陈聆、魏友华编9)共轭梯度法法求多元二次方程的最优值(3人)/*张南、佟雪、杨坤*/ 用C 语言将求解多元二次方程最优值的共轭梯度法编写成通用的子程序,并用此求解22214)(x x X f +=的极小值,初始点为T X ]11[0=,精度为00001.0=ε.参考书目:《最优化方法及其应用》,郭科、陈聆、魏友华编10)求多元二次方程的最优值的变尺度法(DFP 法)(4人)/*史建国、黄嘉莹、方芳、李念超*/用你熟悉的计算机语言将DFP 变尺度法编写成通用的子程序,并用此求解2221)6()5(4)(-+-=x x X f的极小值点,初始点为T X ]98[0=,精度为00001.0=ε. 参考书目:《最优化方法及其应用》,郭科、陈聆、魏友华编11)求多元二次方程的最优值的变尺度法(BFGS 法)(4人)/*袁雪华、孙婷婷、郭良、陈乾*/用你熟悉的计算机语言将BFGS 变尺度法编写成通用的子程序,并用此求解2221)6()5(4)(-+-=x x X f的极小值点,初始点为T X ]98[0=,精度为00001.0=ε. 参考书目:《最优化方法及其应用》,郭科、陈聆、魏友华编12)QR 法求解最小二乘问题(4人)/*付为政、董泽尧、黄自鹏、钟荣生 */用C 语言编写利用QR 分解求解线性最小二乘问题的通用子程序,并用此求解一个二次多项式c bt at y ++=2是其在最小二范数意义下拟合下列数据参考书目:《数值线性代数》,徐树方、高立、张平文编 13)矩阵求逆(4人)/*陈巧、汪恒、陈朝、何义连*/利用你已有的理论知识,使用C 语言编写一个求解给定矩阵的逆的通用子程序,并用此求解矩阵⎪⎪⎪⎪⎪⎭⎫⎝⎛=2271.02168.12071.01968.01871.01768.01675.11582.01490.01397.01254.01161.12671.12568.02471.02368.0A 的逆。

参考书目:1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编2.《数值线性代数》,徐树方、高立、张平文编3.《数值分析简明教程》,王能超编14)一元非线性方程求根的迭代法(4人)/*周孝金、雍佳飞、史旭吉、罗职权*/用你熟悉的计算机语言将求解一元非线性方程的牛顿法、弦截法和快速弦截法编写成独立的子程序;并分别用此求解下列方程的全部根20102)(23=-++=x xx x f要求精度为0.000001. 参考书目:1.《数值分析简明教程》,王能超编2.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编15)无约束最优化问题的一维搜索法(4人)/*覃伟、班光德、吴本远、韦祥胜*/用你熟悉的计算机语言将无约束最优化问题的一维搜索法(包括对分法、黄金分割法、Newton 切线法、抛物线插值法)编写成独立的子程序;并分别用此求3728)(23+--=x xx x f在区间[]]2,0[,=b a 的最小值点,要求精度为0.0001. 参考书目:《最优化方法及其应用》,郭科、陈聆、魏友华编16)常微分方程数值解的Adams 法(3人)/*莫尚威、杨令宗、高朝家*/ 用C 语言将常微分方程数值解的Adams 法)编写成独立的子程序;并分别用此求⎪⎩⎪⎨⎧=-=1)0(2'y y x y y 的数值解,取步长为1.0=h . 参考书目:《数值分析简明教程》,王能超编17)高震荡函数的数值积分(3人)/*李杨鹏、刁洋、田万忠*/请用你熟悉的计算机语言编写适合高震荡函数的数值积分的独立子程序,并用此求定积分(1)⎰=π5.10115cos xdx I ,(精确值为0666667.0151≈),(2)⎰=π20230sin cos xdx x x I ,(精确值为209672222.089960-≈-π),(3)⎰=π20330cos cos xdx x x I ,(精确值为0);要求精度为0000001.0=ε.注:此题允许两组同学同时选作。

18)复数运算(3人)/*肖有忠、马成虎、马金云*/用C 语言实现复数的加法、减法、乘法、除法、乘幂、n 次方根运算,以及复数指数,复系数多项式的乘积,复矩阵相加、相减、相乘等运算。

19)矩阵的LU 分解(3人)/*田小兵、朱雪梅、祖丽合马*/用你熟悉的计算机语言将矩阵的LU 分解写成通用的子程序,并用此求矩阵⎪⎪⎪⎪⎪⎭⎫ ⎝⎛-11242142612332442 的LU 分解;要求输出矩阵L 、U. 参考书目:1.《数值线性代数》,徐树方、高立、张平文编2.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编 20)矩阵的QR 分解(4人)用C 语言将矩阵的QR 分解写成通用的子程序,并用此求矩阵⎪⎪⎪⎪⎪⎭⎫ ⎝⎛---121011012111的QR 分解;要求输出矩阵Q 、R.注:一共20题,除第17题可以由两组同学选作外,其他每题只能由一组同学选作。

无特别要求的题目,在编写程序时可选择计算机语言为C 语言、Matlab 、C++、java.文章按格式书写:题目使用三号黑体字、一级标题使用四号黑体字,并居中;二级、三级标题用小四号黑体字,左端对齐(不居中)。

文中其他汉字一律采用小四号宋体字,行距采用1.25倍行距。

文章中至少包括以下六部分内容内容 1.算法设计或算法分析 2.算法实现(步骤) 3.源程序代码4.运算结果5.误差分析6.总结。

相关文档
最新文档