哈工大 数学实验 大作业

合集下载

哈工大有限元大作业

哈工大有限元大作业

作业一一.计算程序和结果展示1.程序clearsyms a b c x E lD=E*pi*(b*x+c)^4/64;B(:,:,1)=[-6/l^2+12*x/l^3 4/l-6*x/l^2];B(:,:,2)=[6/l^2-12*x/l^3 ,2/l-6*x/l^2];n=0;for i=1:2for j=1:2n=n+1;f=B(:,:,i)*D*transpose(B(:,:,j));k(:,:,n)=int(f,x,0,l);endendk11=k(:,:,1);k12=k(:,:,2);k21=k(:,:,3);k22=k(:,:,4);K=[k11 k12;k21 k22];K=simple(K);2.结果(1)bx+cK =[ (3*pi*E*(11*b^4*l^4 + 49*b^3*c*l^3 + 84*b^2*c^2*l^2 + 70*b*c^3*l +35*c^4))/(560*l^3), -(pi*E*(19*b^4*l^4 + 84*b^3*c*l^3 + 147*b^2*c^2*l^2 + 140*b*c^3*l + 105*c^4))/(1120*l^2), -(3*pi*E*(11*b^4*l^4 + 49*b^3*c*l^3 + 84*b^2*c^2*l^2 + 70*b*c^3*l + 35*c^4))/(560*l^3), -(pi*E*(47*b^4*l^4 + 210*b^3*c*l^3 + 357*b^2*c^2*l^2 + 280*b*c^3*l + 105*c^4))/(1120*l^2)][ -(pi*E*(19*b^4*l^4 + 84*b^3*c*l^3 + 147*b^2*c^2*l^2 + 140*b*c^3*l +105*c^4))/(1120*l^2), (pi*E*(3*b^4*l^4 + 14*b^3*c*l^3 + 28*b^2*c^2*l^2 +35*b*c^3*l + 35*c^4))/(560*l), (pi*E*(19*b^4*l^4 + 84*b^3*c*l^3 + 147*b^2*c^2*l^2 +140*b*c^3*l + 105*c^4))/(1120*l^2), (pi*E*(13*b^4*l^4 + 56*b^3*c*l^3 +91*b^2*c^2*l^2 + 70*b*c^3*l + 35*c^4))/(1120*l)][ -(3*pi*E*(11*b^4*l^4 + 49*b^3*c*l^3 + 84*b^2*c^2*l^2 + 70*b*c^3*l +35*c^4))/(560*l^3), (pi*E*(19*b^4*l^4 + 84*b^3*c*l^3 + 147*b^2*c^2*l^2 + 140*b*c^3*l +105*c^4))/(1120*l^2), (3*pi*E*(11*b^4*l^4 + 49*b^3*c*l^3 + 84*b^2*c^2*l^2 +70*b*c^3*l + 35*c^4))/(560*l^3), (pi*E*(47*b^4*l^4 + 210*b^3*c*l^3 + 357*b^2*c^2*l^2 + 280*b*c^3*l + 105*c^4))/(1120*l^2)][ -(pi*E*(47*b^4*l^4 + 210*b^3*c*l^3 + 357*b^2*c^2*l^2 + 280*b*c^3*l +105*c^4))/(1120*l^2), (pi*E*(13*b^4*l^4 + 56*b^3*c*l^3 + 91*b^2*c^2*l^2 +70*b*c^3*l + 35*c^4))/(1120*l), (pi*E*(47*b^4*l^4 + 210*b^3*c*l^3 + 357*b^2*c^2*l^2 +280*b*c^3*l + 105*c^4))/(1120*l^2), (pi*E*(17*b^4*l^4 + 77*b^3*c*l^3 +133*b^2*c^2*l^2 + 105*b*c^3*l + 35*c^4))/(560*l)](2)ax^2+bx+c(将程序中D的直径换成“ax^2+bx+c”)K =[ (pi*E*(518*a^4*l^8+2233*a^3*b*l^7+2420*a^3*c*l^6+3630*a^2*b^2*l^6+7920*a^2*b*c*l^5 + 4356*a^2*c^2*l^4 +2640*a*b^3*l^5+8712*a*b^2*c*l^4+9702*a*b*c^2*l^3+3696*a*c^3*l^2 + 726*b^4*l^4 + 3234*b^3*c*l^3 + 5544*b^2*c^2*l^2 + 4620*b*c^3*l +2310*c^4))/(12320*l^3), -(pi*E*(938*a^4*l^8+4004*a^3*b*l^7+4290*a^3*c*l^6+6435*a^2*b^2*l^6+13860*a^2*b*c*l^ 5+7524*a^2*c^2*l^4+4620*a*b^3*l^5+15048*a*b^2*c*l^4+16632*a*b*c^2*l^3+6468*a*c^3*l ^2 +1254*b^4*l^4+5544*b^3*c*l^3+9702*b^2*c^2*l^2+9240*b*c^3*l+6930*c^4))/(73920*l^2), -(pi*E*(518*a^4*l^8 + 2233*a^3*b*l^7 + 2420*a^3*c*l^6 + 3630*a^2*b^2*l^6 +7920*a^2*b*c*l^5 + 4356*a^2*c^2*l^4 + 2640*a*b^3*l^5 + 8712*a*b^2*c*l^4 +9702*a*b*c^2*l^3 + 3696*a*c^3*l^2 + 726*b^4*l^4 + 3234*b^3*c*l^3 + 5544*b^2*c^2*l^2 + 4620*b*c^3*l + 2310*c^4))/(12320*l^3), -(pi*E*(2170*a^4*l^8 + 9394*a^3*b*l^7 +10230*a^3*c*l^6 + 15345*a^2*b^2*l^6 + 33660*a^2*b*c*l^5 + 18612*a^2*c^2*l^4 +11220*a*b^3*l^5 + 37224*a*b^2*c*l^4 + 41580*a*b*c^2*l^3 + 15708*a*c^3*l^2 +3102*b^4*l^4 + 13860*b^3*c*l^3 + 23562*b^2*c^2*l^2 + 18480*b*c^3*l +6930*c^4))/(73920*l^2)][ -(pi*E*(938*a^4*l^8 + 4004*a^3*b*l^7 + 4290*a^3*c*l^6 + 6435*a^2*b^2*l^6 + 13860*a^2*b*c*l^5 + 7524*a^2*c^2*l^4 + 4620*a*b^3*l^5 + 15048*a*b^2*c*l^4 +16632*a*b*c^2*l^3 + 6468*a*c^3*l^2 + 1254*b^4*l^4 + 5544*b^3*c*l^3 + 9702*b^2*c^2*l^2 + 9240*b*c^3*l + 6930*c^4))/(73920*l^2), (pi*E*(434*a^4*l^8 + 1848*a^3*b*l^7 + 1980*a^3*c*l^6 + 2970*a^2*b^2*l^6 + 6435*a^2*b*c*l^5 + 3564*a^2*c^2*l^4 +2145*a*b^3*l^5 + 7128*a*b^2*c*l^4 + 8316*a*b*c^2*l^3 + 3696*a*c^3*l^2 + 594*b^4*l^4 + 2772*b^3*c*l^3 + 5544*b^2*c^2*l^2 + 6930*b*c^3*l + 6930*c^4))/(110880*l),(pi*E*(938*a^4*l^8 + 4004*a^3*b*l^7 + 4290*a^3*c*l^6 + 6435*a^2*b^2*l^6 +13860*a^2*b*c*l^5 + 7524*a^2*c^2*l^4 + 4620*a*b^3*l^5 + 15048*a*b^2*c*l^4 +16632*a*b*c^2*l^3 + 6468*a*c^3*l^2 + 1254*b^4*l^4 + 5544*b^3*c*l^3 + 9702*b^2*c^2*l^2 + 9240*b*c^3*l + 6930*c^4))/(73920*l^2), (pi*E*(1946*a^4*l^8 + 8316*a^3*b*l^7 +8910*a^3*c*l^6 + 13365*a^2*b^2*l^6 + 28710*a^2*b*c*l^5 + 15444*a^2*c^2*l^4 +9570*a*b^3*l^5 + 30888*a*b^2*c*l^4 + 33264*a*b*c^2*l^3 + 12012*a*c^3*l^2 +2574*b^4*l^4 + 11088*b^3*c*l^3 + 18018*b^2*c^2*l^2 + 13860*b*c^3*l +6930*c^4))/(221760*l)][ -(pi*E*(518*a^4*l^8 + 2233*a^3*b*l^7 + 2420*a^3*c*l^6 +3630*a^2*b^2*l^6 + 7920*a^2*b*c*l^5 + 4356*a^2*c^2*l^4 + 2640*a*b^3*l^5 +8712*a*b^2*c*l^4 + 9702*a*b*c^2*l^3 + 3696*a*c^3*l^2 + 726*b^4*l^4 + 3234*b^3*c*l^3 +5544*b^2*c^2*l^2 + 4620*b*c^3*l + 2310*c^4))/(12320*l^3), (pi*E*(938*a^4*l^8 + 4004*a^3*b*l^7 + 4290*a^3*c*l^6 + 6435*a^2*b^2*l^6 + 13860*a^2*b*c*l^5 +7524*a^2*c^2*l^4 + 4620*a*b^3*l^5 + 15048*a*b^2*c*l^4 + 16632*a*b*c^2*l^3 +6468*a*c^3*l^2 + 1254*b^4*l^4 + 5544*b^3*c*l^3 + 9702*b^2*c^2*l^2 + 9240*b*c^3*l + 6930*c^4))/(73920*l^2), (pi*E*(518*a^4*l^8 + 2233*a^3*b*l^7 +2420*a^3*c*l^6 + 3630*a^2*b^2*l^6 + 7920*a^2*b*c*l^5 + 4356*a^2*c^2*l^4 +2640*a*b^3*l^5 + 8712*a*b^2*c*l^4 + 9702*a*b*c^2*l^3 + 3696*a*c^3*l^2 + 726*b^4*l^4 + 3234*b^3*c*l^3 + 5544*b^2*c^2*l^2 + 4620*b*c^3*l + 2310*c^4))/(12320*l^3),(pi*E*(2170*a^4*l^8 + 9394*a^3*b*l^7 + 10230*a^3*c*l^6 + 15345*a^2*b^2*l^6 +33660*a^2*b*c*l^5 + 18612*a^2*c^2*l^4 + 11220*a*b^3*l^5 + 37224*a*b^2*c*l^4 +41580*a*b*c^2*l^3 + 15708*a*c^3*l^2 + 3102*b^4*l^4 + 13860*b^3*c*l^3 +23562*b^2*c^2*l^2 + 18480*b*c^3*l + 6930*c^4))/(73920*l^2)][ -(pi*E*(2170*a^4*l^8 + 9394*a^3*b*l^7 + 10230*a^3*c*l^6 + 15345*a^2*b^2*l^6 +33660*a^2*b*c*l^5 + 18612*a^2*c^2*l^4 + 11220*a*b^3*l^5 + 37224*a*b^2*c*l^4 +41580*a*b*c^2*l^3 + 15708*a*c^3*l^2 + 3102*b^4*l^4 + 13860*b^3*c*l^3 +23562*b^2*c^2*l^2 + 18480*b*c^3*l + 6930*c^4))/(73920*l^2), (pi*E*(1946*a^4*l^8 +8316*a^3*b*l^7 + 8910*a^3*c*l^6 + 13365*a^2*b^2*l^6 + 28710*a^2*b*c*l^5 +15444*a^2*c^2*l^4 + 9570*a*b^3*l^5 + 30888*a*b^2*c*l^4 + 33264*a*b*c^2*l^3 +12012*a*c^3*l^2 + 2574*b^4*l^4 + 11088*b^3*c*l^3 + 18018*b^2*c^2*l^2 + 13860*b*c^3*l + 6930*c^4))/(221760*l), (pi*E*(2170*a^4*l^8 + 9394*a^3*b*l^7 + 10230*a^3*c*l^6 +15345*a^2*b^2*l^6 + 33660*a^2*b*c*l^5 + 18612*a^2*c^2*l^4 + 11220*a*b^3*l^5 +37224*a*b^2*c*l^4 + 41580*a*b*c^2*l^3 + 15708*a*c^3*l^2 + 3102*b^4*l^4 +13860*b^3*c*l^3 + 23562*b^2*c^2*l^2 + 18480*b*c^3*l + 6930*c^4))/(73920*l^2),(pi*E*(2282*a^4*l^8 + 9933*a^3*b*l^7 + 10890*a^3*c*l^6 + 16335*a^2*b^2*l^6 +36135*a^2*b*c*l^5 + 20196*a^2*c^2*l^4 + 12045*a*b^3*l^5 + 40392*a*b^2*c*l^4 +45738*a*b*c^2*l^3 + 17556*a*c^3*l^2 + 3366*b^4*l^4 + 15246*b^3*c*l^3 +26334*b^2*c^2*l^2 + 20790*b*c^3*l + 6930*c^4))/(110880*l)](3)b=0(等截面梁)K =[ (3*pi*E*c^4)/(16*l^3),-(3*pi*E*c^4)/(32*l^2),-(3*pi*E*c^4)/(16*l^3),-(3*pi*E*c^4)/(32*l^2)] [ -(3*pi*E*c^4)/(32*l^2), (pi*E*c^4)/(16*l), (3*pi*E*c^4)/(32*l^2), (pi*E*c^4)/(32*l)][ -(3*pi*E*c^4)/(16*l^3), (3*pi*E*c^4)/(32*l^2), (3*pi*E*c^4)/(16*l^3),(3*pi*E*c^4)/(32*l^2)] [ -(3*pi*E*c^4)/(32*l^2), (pi*E*c^4)/(32*l), (3*pi*E*c^4)/(32*l^2), (pi*E*c^4)/(16*l)]总结:将结果(3)与教材等截面梁刚度矩阵比较,发现表达式一样,侧面证明了程序的正确性。

哈工大测试技术大作业 锯齿波

哈工大测试技术大作业 锯齿波

Harbin Institute of Technology课程大作业说明书课程名称:机械工程测试技术基础设计题目:信号的分析与系统特性院系:班级:设计者:学号:指导教师:设计时间:2013/07/05哈尔滨工业大学目录1 题目:...................................................2 幅频谱和相频谱...........................................3 频率成分分布.............................................3.1 H(s)伯德图.........................................3.1.1 一阶系统伯德图...............................3.1.2二阶系统伯德图...............................4 讨论减小失真的措施.......................................4.1 一阶系统对特定频率影响.............................4.1.1 一阶系统Simulink仿真........................4.2 二阶系统输出响应分析...............................4.2.1 二阶阶系统Simulink仿真 .....................4.2.2 二阶系统响应输出............................. 参考文献...................................................1 题目:写出下列信号中的一种信号的数学表达通式,求取其信号的幅频谱图(单边谱和双边谱)和相频谱图,若将此信号输入给特性为传递函数为)(s H 的系统,试讨论信号参数的取值,使得输出信号的失真小。

哈尔滨工程大学数学上机实验

哈尔滨工程大学数学上机实验

实验报告实验一:函数绘图实验1、实验目的利用数学软件绘制数学函数曲线及曲面,通过实验了解函数图形的绘制方法。

2、实验内容⑴在同一个图形中,绘制双曲线,以及的双曲线2条渐近线。

⑵在同一个图形中,绘制球面与锥面相交的曲面。

⑶自选题目:绘制一个或者多个平面图形、空间曲面图形。

3、程序设计及运行结果(1)>> x=-5:0.1:5;ezplot('x^2-y^2=1');y1=x;y2=-x;hold on;plot(xy1);hold on;plot(xy2);(2) >> x=-5:0.1:5;y=x;z=x;[xyz]=meshgrid(xyz);f1=x.^2+y.^2+z.^2-1;f2=x.^2+y.^2-z;p1=patch(isosurface(xyzf10));set(p1 'FaceColor' 'm');p2=patch(isosurface(xyzf20));set(p2 'FaceColor' 'w');(3)>> x=-5:0.1:5;y=x;z=x;[xyz]=meshgrid(xyz);f1=x.^2+y.^2+z.^2-9;f2=x.^2+y.^2-2*z;p1=patch(isosurface(xyzf10));set(p1 'FaceColor' 'm');p2=patch(isosurface(xyzf20));set(p2 'FaceColor' 'w');4、讨论与分析在本次试验中初步了解了matlab,学会了一些简单绘图,加深了对函数的理解为以后实验作个铺垫,由浅入深的了解matlab.实验二:微积分实验1、实验目的熟悉并了解使用数学软件,进行微积分问题计算的相关数学软件命令,让学生通过实验理解微积分,解决微积分计算上的问题。

哈工大_数学实验报告

哈工大_数学实验报告

数学实验报告实验一Matlab的使用1.上机实验各种数据输入方法:程序语句:a=[1 2 3;4 5 6 ;7,8,9] 程序语句:linspace(1,10,5) 等等…………计算结果:a = 计算结果:ans =1 2 34 5 6 1.0000 3.2500 5.5000 7.7500 10.00007 8 92.(1) (a)方法:(b) 方法:程序语句:程序语句:a=[-3 5 0 8;1 -8 2 -1;0 -5 9 3;-7 0 -4 5]; a=[-3 5 0 8;1 -8 2 -1;0 -5 9 3;-7 0 -4 5];b=[0;2;-1;6]; b=[0;2;-1;6];inv(a)*b a\b计算结果:计算结果:ans = ans =-0.6386 -0.6386-0.4210 -0.4210-0.3529 -0.35290.0237 0.0237(2) 4个矩阵的生成语句:矩阵a 的生成语句:e=eye(3,3); a=[e r;o s]r=rand(3,2); 验证语句:o=zeros(2,3); a^2s=diag([1,2]);%此为一个任取的2X2 矩阵b=[e r+r*s; o s^2]计算结果相同:ans =1.0000 0 0 1.9003 1.45790 1.0000 0 0.4623 2.67390 0 1.0000 1.2137 2.28630 0 0 1.0000 00 0 0 0 4.00003.生成多项式的语句:poly ([2,-3,1+2i,1-2i,0,-6])计算结果:ans = 1 5 -9 -1 72 -180 0 计算x=0.8,-x=-1.2 之值的指令与结果:指令:polyval([1,5,-9,-1,72,-180,0],0.8) 结果:ans= -100.2179指令:polyval([1,5,-9,-1,72,-180,0],-1.2) 结果:ans= 293.29004.求a的指令与结果:指令:a=compan([1,0,-6,3,-8])结果:a =0 6 -3 81 0 0 00 1 0 00 0 1 0求a的特征值的指令与结果:roots(p)的指令与结果为:指令:eig(a) 指令:roots([1,0,-6,3,-8])结果:结果:ans = ans =-2.8374 -2.83742.4692 2.46920.1841 + 1.0526i 0.1841 + 1.0526i0.1841 - 1.0526i 0.1841 - 1.0526i结论:利用友元阵函数a=company(p) 和eig(a) 可以与roots(p)有相同的作用,结果相同。

哈尔滨工程大学数值分析大作业2014-附fortran程序

哈尔滨工程大学数值分析大作业2014-附fortran程序

B班大作业要求:1。

使用统一封皮;2。

上交大作业内容包含:一摘要二数学原理三程序设计(必须对输入变量、输出变量进行说明;编程无语言要求,但程序要求通过)四结果分析和讨论五完成题目的体会与收获3. 提交大作业的时间:本学期最后一次课,或考前答疑;过期不计入成绩;4。

提交方式:打印版一份;或手写大作业,但必须使用A4纸.5。

撰写的程序需打印出来作为附录。

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

本实验通过使用常用的求解方法二分法和Newton 法及改进的Newton 法处理几个题目,分析并总结不同方法处理问题的优缺点.观察迭代次数,收敛速度及初值选取对迭代的影响。

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

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

二 数学原理对于方程f(x )=0,如果f(x )是线性函数,则它的求根是很容易的。

牛顿迭代法实质上是一种线性化方法,其基本思想是将非线性方程f(x )=0逐步归结为某种线性方程来求解。

设已知方程f (x )=0有近似根x k (假定k f'(x )0≠) ,将函数f (x)在点x k 进行泰勒展开,有k k k f(x)f(x )+f'(x )(x-x )+≈⋅⋅⋅于是方程f(x )=0可近似的表示为k k k f(x )+f'(x )(x-x )=0这是个线性方程,记其根为x k+1,则x k+1的计算公式为k+1k ()x =x -'()k k f x f x ,k=0,1,2,…这就是牛顿迭代法或简称牛顿法.三 程序设计(本程序由Fortran 语言编制)(1)对于310x x --=,按照上述数学原理,编制的程序如下program newton implicit nonereal :: x (0:50),fx (0:50),f1x(0:50)!分别为自变量x ,函数f(x)和一阶导数f1(x) integer :: kwrite(*,*) ”x(0)=”read (*,*) x (0) !输入变量:初始值x (0)open (10,file='1。

哈工大实验方法第一次大作业概要

哈工大实验方法第一次大作业概要

哈尔滨工业大学试验方法及数字信号处理分析————第一次大作业数字滤波器设计指导老师:包钢学生姓名:陈方鑫学生学号:15S008043第一部分 作业题目一、设计题目1、杂波信号:()sin(210)sin(280)sin(2200)t x t t t πππ=⨯+*+⨯2、要求:(1)绘出杂波信号波形。

(2)分别用FIR IIR 滤波器设计低通和带通滤波器,保留10Hz ,80Hz 频率。

绘出滤波后波形,并与理想波形比较。

(3)在原信号加上白噪声信号,再比较分析。

第二部分 具体设计内容第一节 卷积滤波器的设计一、低通滤波1、低通滤波器参数计算 (1)FIR 滤波频率响应:212()N j fi t i i N H f f e π∆-=-=∑…………①(2)低通期望频率响应:1;0()0;0,f FH f f f F≤≤=≤≥………②(3)通过①、②计算滤波因子 当0i =时,'2f F t ∆= 当0i ≠时,sin(2)'Fi t f iππ=取'f f =可得近似理想低通滤波器:21N k i k ii N y f x -=-=∑(4)由于题目x (t )的最高频率fmax=200。

基于采样定理,f’>2fmax=400。

本例取f’=5fmax=1000。

故 t=0.001s。

2、设计程序程序参数:1t t;F=低通截止频率;t=0:10^-3:0.5;t1=10^-3;F=20;x=sin(2*pi*10*t)+sin(2*pi*80*t)+sin(2*pi*200*t);x1=sin(2*pi*10*t);f(1)=2*F*t1;i=2;while i<60f(i)=sin(2*pi*F*i*t1)/(pi*i);i=i+1;endfor k=61:440y(k)=0;for i=1:60;y(k)=f(i)*(x(k-i)+x(k+i))+y(k);endendy(length(t))=0;plot(t,x,'r',t,x1,'b',t,y,'k');legend('原图','理想图','滤波图');title('F=20');xlabel('x');ylabel('y');3、结果分析F=15放大图放大图放大图分析:上图展示了FIR 低通滤波的总体情况,并分别对F 取15,20,30值时做了对比研究。

哈工大误差分析大作业

哈工大误差分析大作业

《误差理论与数据处理》小作业姓名:崔晓蒙学号:1110811005班级:1108110班学院:机电工程学院日期:2015年 4月日《误差理论与数据处理》小作业姓名:崔晓蒙学号:1110811005班级:1108110班学院:机电工程学院作业目的:使学生充分了解误差的性质,学会数据处理方法。

通过对测量精度的分析和计算,解决误差的合理分配问题,达到在最经济的条件下,得到最理想的设计和测量结果。

作业内容:自拟一个与误差原理相关的选题要求:1、结合工程实践的实际问题2、理论联系实际3、运用基本理论分析和计算作业要求:1、题目要适当2、基本格式:封页标题(黑体小三居中):字数不超过20字摘要(黑体五号):概述论文的核心内容(宋体五号)作业正文(宋体五号),字数不少于1500字3、作业统一采用A4纸,单面打印,左侧装订4、必须独立完成作业,教师审查后评定成绩占课程总成绩的20%量块测量的极限误差摘要:量块是由两个相互平行的测量面之间的距离来确定其工作长度的高精度量具,其检测条件是:温度20℃;大气压力101.325KPa;水蒸汽压力(湿度)1.333KPa。

而在温度、湿度、大气压等等条件有偏差时候,给测量也会带来一定的误差,本次通过在温度有一定波动的条件下测量量块的长度,求这种测量方法的极限误差和最终的测量结果。

关键词:量块、极限误差、测量结果、温度。

(一)工程案例:长度等于或小于100mm的量块,测量或使用其长度时,量块的轴线可竖直或水平安装。

长度大于100mm的量块,测量或使用其长度时,量块的轴线应水平安装,这时,量块一个较窄的侧面放置在分别距量块两端侧量面各为0.211×L的两个横放的支柱上。

本次在立式光学比较仪上鉴定L0=10mm 的量块。

所用基准量块4 等,其中心长度的实际偏差-0.1μm,检定的极限误差δlim1=±0.2μm。

测量时恒温条件为t=20±2º。

哈工大数值分析报告上机实验报告

哈工大数值分析报告上机实验报告

实验报告一题目: Gauss 列主元消去法摘要:求解线性方程组地方法很多,主要分为直接法和间接法.本实验运用直接法地Guass 消去法,并采用选主元地方法对方程组进行求解.前言:(目地和意义)1. 学习Gauss 消去法地原理.2. 了解列主元地意义.3. 确定什么时候系数阵要选主元数学原理:由于一般线性方程在使用Gauss 消去法求解时,从求解地过程中可以看到,若)1(-k kk a =0,则必须进行行交换,才能使消去过程进行下去.有地时候即使≠-)1(k kk a 0,但是其绝对值非常小,由于机器舍入误差地影响,消去过程也会出现不稳定得现象,导致结果不正确.因此有必要进行列主元技术,以最大可能地消除这种现象.这一技术要寻找行r ,使得)1()1(max ||->-=k ik ki k rk a a 并将第r 行和第k 行地元素进行交换,以使得当前地)1(-k kk a 地数值比0要大地多.这种列主元地消去法地主要步骤如下:1. 消元过程对k =1,2,…,n -1,进行如下步骤.1) 选主元,记ik ki rk a a >=max || 若||rk a 很小,这说明方程地系数矩阵严重病态,给出警告,提示结果可能不对.2) 交换增广阵A 地r ,k 两行地元素.kj rj a a ↔ (j=k,…,n +1)3) 计算消元kk kj ik ij ij a a a a a /-= (i=k+1,…,n ; j =k +1,……,n +1)2. 回代过程对k = n , n -1,…,1,进行如下计算)/(11,∑-=+-=nk j kk j kj n k k a x a a x至此,完成了整个方程组地求解.程序设计:本实验采用Matlab地M文件编写.Gauss消去法源程序:cleara=input('输入系数阵:>>\n')b=input('输入列阵b:>>\n')n=length(b);A=[a b]x=zeros(n,1);%%%函数主体for k=1:n-1;%%%是否进行主元选取if abs(A(k,k))<yipusilong;%事先给定地认为有必要选主元地小数yzhuyuan=1;else yzhuyuan=0;endif yzhuyuan;%%%%选主元t=A(k,k);for r=k+1:n;if abs(A(r,k))>abs(t)p=r;else p=k;endend%%%交换元素if p~=k;for q=k:n+1;s=A(k,q);A(k,q)=A(p,q);A(p,q)=s;endendend%%%判断系数矩阵是否奇异或病态非常严重if abs(A(k,k))< yipusilongdisp(‘矩阵奇异,解可能不正确’)end%%%%计算消元,得三角阵for r=k+1:n;m=A(r,k)/A(k,k);for q=k:n+1;A(r,q)=A(r,q)-A(k,q)*m;endendend%%%%求解xx(n)=A(n,n+1)/A(n,n);for k=n-1:-1:1;s=0;for r=k+1:n;s=s+A(k,r)*x(r);endt=(A(k,n+1)-s)x(k)=(A(k,n+1)-s)/A(k,k)end结果分析和讨论:例:求解方程⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡321643.5072.12-623.4712.31-32108-z y x .求解地结果为:x =[]367257386.0,05088607.0-49105822.0-, 例:求解方程⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡73109104-10172-42-4z y x 求得地结果为:x =[]857142857.1,89285714.0-196428571.0, 结论:采用Gauss 消去法时,如果在消元时对角线上地元素始终较大(假如大于10-5),那么本方法不需要进行列主元计算,计算结果一般就可以达到要求,否则必须进行列主元这一步,以减少机器误差带来地影响,使方法得出地结果正确.实验报告二题目: Rung 现象产生和克服摘要:由于高次多项式插值不收敛,会产生Runge 现象,本实验在给出具体地实例后,采用分段线性插值和三次样条插值地方法有效地克服了这一现象,而且还取地很好地插值效果.前言:(目地和意义)1. 深刻认识多项式插值地缺点.2. 明确插值地不收敛性怎样克服.3. 明确精度与节点和插值方法地关系.数学原理:在给定n+1个节点和相应地函数值以后构造n 次地Lagrange 插值多项式,实验结果表明(见后面地图)这种多项式并不是随着次数地升高对函数地逼近越来越好,这种现象就是Rung 现象.解决Rung 现象地方法通常有分段线性插值、三次样条插值等方法.分段线性插值:设在区间[a, b ]上,给定n+1个插值节点a=x 0<x 1<…<x n =b和相应地函数值y 0,y 1,…,y n ,,求作一个插值函数)(x φ,具有如下性质:1) j j y x =)(φ,j=0,1,…,n .2) )(x φ在每个区间[x i , x j ]上是线性连续函数.则插值函数)(x φ称为区间[a, b ]上对应n 个数据点地分段线性插值函数.三次样条插值:给定区间[a, b ]一个分划⊿:a=x 0<x 1<…<x N =b若函数S(x)满足下列条件:1) S(x)在每个区间[x i , x j ]上是不高于3次地多项式.2) S(x)及其2阶导数在[a, b ]上连续.则称S(x)使关于分划⊿地三次样条函数. 程序设计流程:本实验采用Matlab 地M 文件编写.其中待插值地方程写成function 地方式,如下function y=f(x);y=1/(1+25*x*x );写成如上形式即可,下面给出主程序Lagrange 插值源程序:n=input('将区间分为地等份数输入:\n');s=[-1+2/n*[0:n]];%%%给定地定点,Rf为给定地函数x=-1:0.01:1;f=0;for q=1:n+1;l=1;%求插值基函数for k=1:n+1;if k~=q;l=l.*(x-s(k))./(s(q)-s(k));elsel=l;endendf=f+Rf(s(q))*l;%求插值函数endplot(x,f,'r')%作出插值函数曲线grid onhold on分段线性插值源程序clearn=input('将区间分为地等份数输入:\n');s=[-1+2/n*[0:n]];%%%给定地定点,Rf为给定地函数m=0;hh=0.001;for x=-1:hh:1;ff=0;for k=1:n+1;%%%求插值基函数switch kcase 1if x<=s(2);l=(x-s(2))./(s(1)-s(2));elsel=0;endcase n+1if x>s(n);l=(x-s(n))./(s(n+1)-s(n));elsel=0;endotherwiseif x>=s(k-1)&x<=s(k);l=(x-s(k-1))./(s(k)-s(k-1));else if x>=s(k)&x<=s(k+1);l=(x-s(k+1))./(s(k)-s(k+1));elsel=0;endendendff=ff+Rf(s(k))*l;%%求插值函数值endm=m+1;f(m)=ff;end%%%作出曲线x=-1:hh:1;plot(x,f,'r');grid onhold on三次样条插值源程序:(采用第一边界条件)clearn=input('将区间分为地等份数输入:\n');%%%插值区间a=-1;b=1;hh=0.001;%画图地步长s=[a+(b-a)/n*[0:n]];%%%给定地定点,Rf为给定地函数%%%%第一边界条件Rf"(-1),Rf"(1)v=5000*1/(1+25*a*a)^3-50/(1+25*a*a)^4;for k=1:n;%取出节点间距h(k)=s(k+1)-s(k);endfor k=1:n-1;%求出系数向量lamuda,miula(k)=h(k+1)/(h(k+1)+h(k));miu(k)=1-la(k);end%%%%赋值系数矩阵Afor k=1:n-1;for p=1:n-1;switch pcase kA(k,p)=2;case k-1A(k,p)=miu(p+1);case k+1A(k,p)=la(p-1);otherwiseA(k,p)=0;endendend%%%%求出d阵for k=1:n-1;switch kcase 1d(k)=6*f2c([s(k) s(k+1) s(k+2)])-miu(k)*v;case n-1d(k)=6*f2c([s(k) s(k+1) s(k+2)])-la(k)*v;otherwised(k)=6*f2c([s(k) s(k+1) s(k+2)]);endend%%%%求解M阵M=A\d';M=[v;M;v];%%%%m=0;f=0;for x=a:hh:b;if x==a;p=1;elsep=ceil((x-s(1))/((b-a)/n));endff1=0;ff2=0;ff3=0;ff4=0;m=m+1;ff1=1/h(p)*(s(p+1)-x)^3*M(p)/6;ff2=1/h(p)*(x-s(p))^3*M(p+1)/6;ff3=((Rf(s(p+1))-Rf(s(p)))/h(p)-h(p)*(M(p+1)-M(p))/6)*(x-s(p));ff4=Rf(s(p))-M(p)*h(p)*h(p)/6;f(m)=ff1+ff2+ff3+ff4 ;end%%%作出插值图形x=a:hh:b;plot(x,f,'k')hold ongrid on结果分析和讨论: 本实验采用函数22511)(xx f +=进行数值插值,插值区间为[-1,1],给定节点为 x j =-1+jh ,h=0.1,j =0,…,n .下面分别给出Lagrang e 插值,三次样条插值,线性插值地函数曲线和数据表.图中只标出Lagrang e 插值地十次多项式地曲线,其它曲线没有标出,从数据表中可以看出具体地误差.表中,L10(x)为Lagrang e插值地10次多项式,S10(x),S40(x)分别代表n=10,40地三次样条插值函数,X10(x),X40(x)分别代表n=10,40地线性分段插值函数.x f(x)L10(x)S10(x) S40(x) X10(x) X40(x) -1.00000000000000 0.03846153846154 0.03846153846154 0.03846153846154 0.03846153846154 0.03846153846154 0.03846153846154 -0.95000000000000 0.04244031830239 1.92363114971920 0.04240833151040 0.04244031830239 0.04355203619910 0.04244031830239 -0.90000000000000 0.04705882352941 1.57872099034926 0.04709697585458 0.04705882352941 0.04864253393665 0.04705882352941 -0.85000000000000 0.05245901639344 0.71945912837982 0.05255839923979 0.05245901639344 0.05373303167421 0.05245901639344 -0.80000000000000 0.05882352941176 0.05882352941176 0.05882352941176 0.05882352941176 0.05882352941176 0.05882352941176 -0.75000000000000 0.06639004149378 -0.23146174989674 0.06603986172744 0.06639004149378 0.06911764705882 0.06639004149378 -0.70000000000000 0.07547169811321 -0.22619628906250 0.07482116198866 0.07547169811321 0.07941176470588 0.07547169811321 -0.65000000000000 0.08648648648649 -0.07260420322418 0.08589776360849 0.08648648648649 0.08970588235294 0.08648648648649 -0.60000000000000 0.10000000000000 0.10000000000000 0.10000000000000 0.10000000000000 0.10000000000000 0.10000000000000 -0.55000000000000 0.11678832116788 0.21559187891257 0.11783833017713 0.11678832116788 0.12500000000000 0.11678832116788 -0.50000000000000 0.13793103448276 0.25375545726103 0.14004371555730 0.13793103448276 0.15000000000000 0.13793103448276 -0.45000000000000 0.16494845360825 0.23496854305267 0.16722724315883 0.16494845360825 0.17500000000000 0.16494845360825 -0.40000000000000 0.20000000000000 0.20000000000000 0.20000000000000 0.20000000000000 0.20000000000000 0.20000000000000 -0.35000000000000 0.24615384615385 0.19058046675376 0.24054799403464 0.24615384615385 0.27500000000000 0.24615384615385 -0.30000000000000 0.30769230769231 0.23534659131080 0.29735691695860 0.30769230769231 0.35000000000000 0.30769230769231 -0.25000000000000 0.39024390243902 0.34264123439789 0.38048738140327 0.39024390243902 0.42500000000000 0.39024390243902 -0.20000000000000 0.50000000000000 0.50000000000000 0.50000000000000 0.50000000000000 0.50000000000000 0.50000000000000 -0.15000000000000 0.64000000000000 0.67898957729340 0.65746969368431 0.64000000000000 0.62500000000000 0.64000000000000 -0.10000000000000 0.80000000000000 0.84340742982890 0.82052861660828 0.80000000000000 0.75000000000000 0.80000000000000 -0.05000000000000 0.94117647058824 0.95862704866073 0.94832323122810 0.94117647058824 0.87500000000000 0.941176470588240 1.00000000000000 1.00000000000000 1.00000000000000 1.00000000000000 1.000000000000001.000000000000000.05000000000000 0.94117647058824 0.95862704866073 0.94832323122810 0.94117647058824 0.87500000000000 0.941176470588240.10000000000000 0.80000000000000 0.84340742982890 0.82052861660828 0.80000000000000 0.75000000000000 0.800000000000000.15000000000000 0.64000000000000 0.67898957729340 0.65746969368431 0.64000000000000 0.62500000000000 0.640000000000000.20000000000000 0.50000000000000 0.50000000000000 0.50000000000000 0.50000000000000 0.50000000000000 0.500000000000000.25000000000000 0.39024390243902 0.34264123439789 0.38048738140327 0.39024390243902 0.42500000000000 0.390243902439020.30000000000000 0.30769230769231 0.23534659131080 0.29735691695860 0.30769230769231 0.350000000000000.307692307692310.35000000000000 0.24615384615385 0.19058046675376 0.24054799403464 0.24615384615385 0.27500000000000 0.246153846153850.40000000000000 0.20000000000000 0.20000000000000 0.20000000000000 0.20000000000000 0.20000000000000 0.200000000000000.45000000000000 0.16494845360825 0.23496854305267 0.16722724315883 0.16494845360825 0.17500000000000 0.164948453608250.50000000000000 0.13793103448276 0.25375545726103 0.14004371555730 0.13793103448276 0.15000000000000 0.137931034482760.55000000000000 0.11678832116788 0.21559187891257 0.11783833017713 0.11678832116788 0.12500000000000 0.116788321167880.60000000000000 0.10000000000000 0.10000000000000 0.10000000000000 0.10000000000000 0.10000000000000 0.100000000000000.65000000000000 0.08648648648649 -0.07260420322418 0.08589776360849 0.08648648648649 0.08970588235294 0.086486486486490.70000000000000 0.07547169811321 -0.22619628906250 0.07482116198866 0.07547169811321 0.07941176470588 0.075471698113210.75000000000000 0.06639004149378 -0.23146174989674 0.06603986172744 0.06639004149378 0.06911764705882 0.066390041493780.80000000000000 0.05882352941176 0.05882352941176 0.05882352941176 0.05882352941176 0.05882352941176 0.058823529411760.85000000000000 0.05245901639344 0.71945912837982 0.05255839923979 0.05245901639344 0.05373303167421 0.052459016393440.90000000000000 0.04705882352941 1.57872099034926 0.04709697585458 0.04705882352941 0.04864253393665 0.047058823529410.95000000000000 0.04244031830239 1.92363114971920 0.04240833151040 0.04244031830239 0.04355203619910 0.042440318302391.00000000000000 0.03846153846154 0.03846153846154 0.03846153846154 0.03846153846154 0.03846153846154 0.03846153846154从以上结果可以看到,用三次样条插值和线性分段插值,不会出现多项式插值是出现地Runge现象,插值效果明显提高.进一步说,为了提高插值精度,用三次样条插值和线性分段插值是可以增加插值节点地办法来满足要求,而用多项式插值函数时,节点数地增加必然会使多项式地次数增加,这样会引起数值不稳定,所以说这两种插值要比多项式插值好地多.而且在给定节点数地条件下,三次样条插值地精度要优于线性分段插值,曲线地光滑性也要好一些.实验报告三题目: 多项式最小二乘法摘要:对于具体实验时,通常不是先给出函数地解析式,再进行实验,而是通过实验地观察和测量给出离散地一些点,再来求出具体地函数解析式.又因为测量误差地存在,实际真实地解析式曲线并不一定通过测量给出地所有点.最小二乘法是求解这一问题地很好地方法,本实验运用这一方法实现对给定数据地拟合. 前言:(目地和意义)1. 学习使用最小二成法地原理2. 了解法方程地特性 数学原理:对于给定地测量数据(x i ,f i )(i=1,2,…,n ),设函数分布为∑==mj j j x a x y 0)()(ϕ特别地,取)(x j ϕ为多项式j j x x =)(ϕ (j=0, 1,…,m )则根据最小二乘法原理,可以构造泛函∑∑==-=n i mj i j j i m x a f a a a H 110))((),,,(ϕ令0=∂∂ka H(k=0, 1,…,m ) 则可以得到法方程⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡),(),(),(),(),(),(),(),(),(),(),(),(1010101111000100m m m m m m m m f f f a a a ϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕ求该解方程组,则可以得到解m a a a ,,,10 ,因此可得到数据地最小二乘解∑=≈mj j j x a x f 0)()(ϕ程序设计:本实验采用Matlab 地M 文件编写.其中多项式函数j j x =ϕ写成function 地方式,如下function y=fai(x,j)y=1;for i=1:jy=x.*y;end写成如上形式即可,下面给出主程序.多项式最小二乘法源程序clear%%%给定测量数据点(s,f)s=[3 4 5 6 7 8 9];f=[2.01 2.98 3.50 5.02 5.47 6.02 7.05];%%%计算给定地数据点地数目n=length(f);%%%给定需要拟合地数据地最高次多项式地次数m=10;%%%程序主体for k=0:m;g=zeros(1,m+1);for j=0:m;t=0;for i=1:n;%计算内积(fai(si),fai(si))t=t+fai(s(i),j)*fai(s(i),k);endg(j+1)=t;endA(k+1,:)=g;%法方程地系数矩阵t=0;for i=1:n;%计算内积(f(si),fai(si))t=t+f(i)*fai(s(i),k);endb(k+1,1)=t;enda=A\b%求出多项式系数x=[s(1):0.01:s(n)]';y=0;for i=0:m;y=y+a(i+1)*fai(x,i);endplot(x,y)%作出拟合成地多项式地曲线grid onhold onplot(s,f,'rx') %在上图中标记给定地点结果分析和讨论:例用最小二乘法处理下面地实验数据.并作出)f地近似分布图.(x分别采用一次,二次和五次多项式来拟合数据得到相应地拟合多项式为:y1=-0.38643+0.82750x;y2=-1.03024+1.06893x-0.02012x2;y5=-50.75309+51.53527x-19.65947x2+3.66585x3-0.32886x4+0.01137x5;分别作出它们地曲线图,图中点划线为y1曲线,实线为y2曲线,虚线为y5曲线.’x’为给定地数据点.从图中可以看出并不是多项式次数越高越好,次数高了,曲线越能给定点处和实际吻合,但别地地方就很差了.因此,本例选用一次和两次地多项式拟合应该就可以了.实验报告四题目: Romberg 积分法摘要:对于实际地工程积分问题,很难应用Newton-Leibnitz 公式去求解.因此应用数值方法进行求解积分问题已经有着很广泛地应用,本文基于Romberg 积分法来解决一类积分问题.前言:(目地和意义)1. 理解和掌握Romberg 积分法地原理;2. 学会使用Romberg 积分法;3. 明确Romberg 积分法地收敛速度及应用时容易出现地问题. 数学原理:考虑积分⎰=ba dx x f f I )()(,欲求其近似值,通常有复化地梯形公式、Simpsion公式和Cotes 公式.但是给定一个精度,这些公式达到要求地速度很缓慢.如何提高收敛速度,自然是人们极为关心地课题.为此,记T 1,k 为将区间[a,b ]进行2k 等分地复化地梯形公式计算结果,记T 2,k 为将区间[a,b ]进行2k 等分地复化地Simpsion 公式计算结果,记T 3,k 为将区间[a,b ]进行2k 等分地复化地Cotes 公式计算结果.根据Richardson 外推加速方法,可以得到收敛速度较快地Romberg 积分法.其具体地计算公式为: 1. 准备初值,计算)]()([21,1b f a f ba T +-=2. 按梯形公式地递推关系,计算∑-=-+-+-+-+=1201,11,11))5.0(2(221k i k k k k i ab a f a b T T 3. 按Romberg 积分公式计算加速值1441,11,11,--=----+---m mk m m k m m m k m T T T m=2,…,k4. 精度控制.对给定地精度R ,若R T T m m <--1,11,则终止计算,并取1,m T 为所求结果;否则返回2重复计算,直至满足要求地精度为止. 程序设计:本实验采用Matlab 地M 文件编写.其中待积分地函数写成function 地方式,例如如下function yy=f(x,y); yy=x.^3;写成如上形式即可,下面给出主程序Romberg 积分法源程序%%% Romberg 积分法 clear%%%积分区间 b=3; a=1;%%%精度要求 R=1e-5;%%%应用梯形公式准备初值 T(1,1)=(b-a)*(f(b)+f(a))/2; T(1,2)=T(1,1)/2+(b-a)/2*f((b+a)/2); T(2,1)=(4*T(1,2)-T(1,1))/(4-1); j=2; m=2;%%%主程序体%%%while(abs(T(m,1)-T(m-1,1))>R);%%%精度控制 j=j+1; s=0;for p=1:2^(j-2);s=s+f(a+(2*p-1)*h/(2^(j-1))); endT(1,j)=T(1,j-1)/2+h*s/(2^(j-1)); %%%梯形公式应用 for m=2:j; k=(j-m+1);T(m,k)=((4^(m-1))*T(m-1,k+1)-T(m-1,k))/(4^(m-1)-1); end end%%%给出 Romberg 积分法地函数表 I=T(m,1)结果分析和讨论: 1. 求积分dx x10063.精确解I= 24999676.运行程序得Romberg 积分法地函数表为1.0e+007 *4.70101520000000 3.05022950000000 2.63753307500000 2.49996760000000 2.49996760000000 0 2.49996760000000 0 0由函数表知Romberg 积分给出地结果为2.4999676*10^7,与精确没有误差,精度很高.2. 求积分dx xx⎰10sin . 直接按前面方法进行积分,会发现系统报错,出现了0为除数地现象.出现这种情况地原因就是当x=0时,被积函数分母出现0,如果用一个适当地小数ε(最好不要小于程序给定地最小误差值,但不能小于机器地最大精度)来代替可以避免这个问题.本实验取R =ε,可得函数表为:0.92073548319659 0.93979327500190 0.94451351171417 0.94569085359489 0.94598501993743 0.94614587227034 0.94608692395160 0.94608330088846 0.94608307538495 0 0.94608299406368 0.94608305935092 0.94608306035138 0 0 0.94608306038722 0.94608306036726 0 0 0 0.94608306036718 0 0 0 0故该函数地积分为0.94608306036718,取8位有效数字.3. 求积分dx x ⎰12sin本题地解析解很难给出,但运用Romberg 积分可以很容易给出近似解,函数表为:0.42073549240395 0.33406972582924 0.31597536075922 0.31168023948094 0.31062036680949 0.31035626065456 0.30518113697100 0.30994390573588 0.31024853238818 0.31026707591900 0.31026822526959 0 0.31026142365354 0.31026884083167 0.31026831215439 0.31026830189296 0 0 0.31026895856465 0.31026830376269 0.31026830173008 0 0 0 0.31026830119484 0.31026830172211 0 0 0 0 0.31026830172262 0 0 0 0 0故该函数地积分为0.31026830172262,取8位有效数字.结论:Romberg 积分通常要求被积函数在积分区间上没有奇点.如有奇点,且奇点为第一间断点,那么采用例3地方法,还是能够求出来地,否则,必须采用其它地积分方法.当然,Romberg 积分地收敛速度还是比较快地.。

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

数学实验大作业——抽象群与应用“RSA加密系统”合作人:郭元镇尹庆宇杨瑞飞综述1)RSA 加密算法的历史RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。

RSA取名来自开发他们三者的名字。

RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。

RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。

它易于理解和操作,也很流行。

早在1973年,英国国家通信总局的数学家Clifford Cocks就发现了类似的算法。

但是他的发现被列为绝密,直到1998年才公诸于世。

RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。

RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。

即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题。

2)RSA 加密算法的原理RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。

RSA的算法涉及三个参数,n、e1、e2。

其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。

e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。

(n及e1),(n及e2)就是密钥对。

RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e1 mod n;B=A^e2 mod n;e1和e2可以互换使用,即:A=B^e2 mod n;B=A^e1 mod n;3)RSA 加密算法的缺点1.产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。

2.安全性, RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价,而且密码学界多数人士倾向于因子分解不是NPC问题。

目前,人们已能分解140多个十进制位的大素数,这就要求使用更长的密钥,速度更慢;另外,目前人们正在积极寻找攻击RSA的方法,如选择密文攻击,一般攻击者是将某一信息作一下伪装(Blind),让拥有私钥的实体签署。

然后,经过计算就可得到它所想要的信息。

实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:( XM )d = Xd *Md mod n前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥。

但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-Way Hash Function对文档作HASH处理,或同时使用不同的签名算法。

除了利用公共模数,人们还尝试一些利用解密指数或φ(n)等等攻击.3.速度太慢,由于RSA 的分组长度太大,为保证安全性,n 至少也要 600 bitx以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。

目前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。

为了速度问题,目前人们广泛使用单,公钥密码结合使用的方法,优缺点互补:单钥密码加密速度快,人们用它来加密较长的文件,然后用RSA来给文件密钥加密,极好的解决了单钥密码的密钥分发问题。

下表列出了对同一安全级别所对应的密钥长度。

保密级别对称密钥长度(bit)RSA密钥长度(bit)ECC密钥长度(bit)保密年限80 80 1024 160 2010 112 112 2048 224 2030 128 128 3072 256 2040 192 192 7680 384 2080 256 256 15360 512 21204)针对RSA 加密算法的几种攻击方式针对RSA最流行的攻击一般是基于大数因数分解。

1999年,RSA-155(512 bits)被成功分解,花了五个月时间(约8000 MIPS 年)和224 CPU hours 在一台有3.2G中央内存的Cray C916计算机上完成。

2002年,RSA-158也被成功因数分解。

1.RSA的选择密文攻击RSA在选择密文攻击面前很脆弱。

一般攻击者是将某一信息作一下伪装( Blind),让拥有私钥的实体签署。

然后,经过计算就可得到它所想要的信息。

实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:( XM )^d = X^d *M^d mod n这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥。

但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-Way HashFunction 对文档作HASH处理,或同时使用不同的签名算法。

2.RSA的公共模数攻击若系统中共有一个模数,只是不同的人拥有不同的e和d,系统将是危险的。

最普遍的情况是同一信息用不同的公钥加密,这些公钥共模而且互质,那么该信息无需私钥就可得到恢复。

设P为信息明文,两个加密密钥为e1和e2,公共模数是n,则:C1 = P^e1 mod nC2 = P^e2 mod n密码分析者知道n、e1、e2、C1和C2,就能得到P。

因为e1和e2互质,故用Euclidean算法能找到r和s,满足:r * e1 + s * e2 = 1假设r为负数,需再用Euclidean算法计算C1^(-1),则( C1^(-1) )^(-r) * C2^s = P mod n另外,还有其它几种利用公共模数攻击的方法。

总之,如果知道给定模数的一对e和d,一是有利于攻击者分解模数,一是有利于攻击者计算出其它成对的e’和d’,而无需分解模数。

解决办法只有一个,那就是不要共享模数n。

RSA的小指数攻击。

有一种提高 RSA速度的建议是使公钥e取较小的值,这样会使加密变得易于实现,速度有所提高。

但这样做是不安全的,对付办法就是e和d都取较大的值。

5)本次实验中用到的4种算法1.平方-乘算法在RSA算法中,往往要计算ma mod r的值,由于ma的值可能会很大而产生溢出从而导致错误。

平方-乘算法:将a转换为二进制数b,用bi表示b的第i位值,L为b的二进制位数,则:(0)令c=1,i=L-1(1)计算c=c*c%r(2)若bi=1,则计算c=c*m%r,否则什么也不做(3)i=i-1(4)重复步骤1-3,直至i=0为止,此时c的值即为所求。

2.Rabin-Miller算法:数论学家利用费马小定理研究出了多种素数测试方法,目前最快的算法是拉宾米勒测试算法,(现在不是最快,印度的一名老师和他的两个本科生的算法是最快的:印度理工学院计算机科学与工程学系的科学家马宁德拉·阿格拉瓦和他的两位在校本科生尼拉叶·卡雅尔和尼汀·萨克斯特纳)其过程如下:(1)计算奇数M,使得N=(2**r)*M+1(2)选择随机数A<N(3)对于任意i<r,若A**((2**i)*M) MOD N = N-1,则N通过随机数A的测试(4)或者,若A**M MOD N = 1,则N通过随机数A的测试(5)让A取不同的值对N进行5次测试,若全部通过则判定N为素数若N 通过一次测试,则N 不是素数的概率为 25%,若N 通过t 次测试,则N 不是素数的概率为(1/4)的n次幂。

事实上取t 为5 时,N 不是素数的概率为 1/128,N 为素数的概率已经大于99.99%。

3.扩展欧几里德算法欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。

其计算原理依赖于下面的定理:定理:gcd(a,b) = gcd(b,a mod b)设两数为a、b(b<a),用gcd(a,b)表示a,b的最大公约数,r=a mod b 为a除以b以后的余数,辗转相除法即是要证明gcd(a,b)=gcd(b,r)。

第一步:令c=gcd(a,b),则设a=mc,b=nc第二部:根据前提可知r =a-kb=mc-knc=(m-kn)c第三部:根据第二步结果可知c也是r的因数第四步:可以断定m-kn与n互素(否则,可设m-kn=xd,n=yd,(d>1),则m=kn+xd=kyd+xd=(ky+x)d,则a=mc=(ky+x)dc,b=nc=ycd,故a与b最大公约数成为cd,而非c)从而可知gcd(b,r)=c,继而gcd(a,b)=gcd(b,r)。

扩展欧几里德算法是用来在已知a, b求解一组p,q使得p * a+q * b = Gcd(a, b) (解一定存在,根据数论中的相关定理)。

扩展欧几里德常用在求解模线性方程及方程组中。

4. 大数快速求模算法先承认两个公式:ab mod c=((a mod c)(b mod c)) mod c(a+b) mod c=(a mod c+b mod c) mod c然后递推,先算1 mod c,然后10 mod c ,100 mod c。

用数组存一下,递推方法是10^n mod c=((10^(n-1) mod c)*10) mod c再加,让k=0,for a:=1 to l dok:=(k+num[a]*exp10[a]) mod c这样最后k就是结果。

程序运行实例及结果分析初始运行界面自动生成密钥RSA加密RSA解密手动输入密钥输入密钥不符合要求时弹出警告窗口关于帮助对实验结果的看法和意见:实验结果并不很让人满意,只能完成3000-9000之内素数的输入运算过程,对于多位素数的运算进行了尝试但是仍有很多BUG,所以只暂时保留了小数量级的RSA加解密过程展示。

但是基本功能已经完成,只要找到一种适合大素数的运算算法,便可顺利进行大数量级素数的RSA加解密。

参考文献1)陈华,蔡光兴《基于Matlab/GUI的RSA密码演示系统》计算机与现代化2009(7)2)刘卫国《Matlab程序设计与应用》 20063)闫洪亮.牛军涛《实现RSA算法应注意的问题》计算机应用与软件 2008(5) 4)胡卫群《Euclidean算法》南京农专学报 1996(4)5)雒海涛《Matlab GUI教程》 2011合作分工郭元镇: GUI界面编程尹庆宇:资料查找和题目分析研究杨瑞飞:算法设计。

相关文档
最新文档