AES算法的研究与实现

龙源期刊网 .cn

AES算法的研究与实现

作者:陈彦龙 杨立波

来源:《中国科教创新导刊》20xx年第28期

摘 要:本文主要介绍了AES算法的基本原理及其结构,分析了AES算法的结构特点,并在提高数据吞吐量和运行效率方面对其结构进行优化设计。

关键词:AES 轮变换 密钥扩展 数据加密 数据解密

中图分类号:TP309 文献标识码:A 文章编号:1673-9795(2012)10(a)-0034-02

 

第二篇:数学实验“非线性方程的二分法,迭代法,Aitken迭代法,Steffensen迭代法”实验报告(内含matlab程序代码)

西京学院数学软件实验任务书


                                 实验六实验报告  

一、实验名称:非线性方程的二分法,迭代法,松弛迭代法,Aitken迭代法,Steffensen迭代法。

二、实验目的:进一步熟悉理解掌握最速下降法与共轭梯度法解法思路熟悉非线性方程的二分法,迭代法,松弛迭代法,Aitken迭代法,Steffensen迭代法,提高matlab编程能力。

三、实验要求:非线性方程,应用二分法,迭代法,松弛迭代法,Aitken迭代法,Steffensen迭代法编程求解非线性方程的数值解。

四、实验原理:

1.二分法

设函数在区间上连续,而且,则在区间上至少有一个根。

首先确定有限区间:依据零点定理。设 ,且,则方程 在区间上至少有一个根。如果上恒正或恒负,则此根唯一。

,则为有根区间,否则为有根区间。记新的有根区间为

;对重复上述做法得:

设所求的根为,则,即,由

的近似解。

2.不动点迭代法

对于非线性方程:常常可以化成等价的方程可以选取一个初始近似值,构造迭代序列

如此产生序列。这种迭代方法称为不动点迭代,或Picard 迭代。这个原理看似很容易直观理解,但是却有相当深刻的数学内涵,数学系的学生在泛函分析与微分方程理论等多门专业课程里都会遇到。如果连续,而且,则的一个不动点。因此为方程的一个根。

3.Aitken加速迭代

由初值出发,计算出后,便可在曲线上找到两个点。将这两点所在的直线与直线的交点设为,则点满足:得:,将视为新的初值,重复上述步骤可得,由此产生迭代公式,

4.Steffensen迭代法

该迭代法解方程可以看成是另一种不动点迭代:其中迭代函数为得到迭代公式为:

五、实验内容:

%二分法解非线性方程

function er_fen(f,a,b,esp);

f1=subs(f,a);

f2=subs(f,b);

if f1*f2>0

    disp('该方程在【a,b】上无解!');

elseif f1==0

    root=a;

elseif f2==0

    root=b;

else

    a0=a;

    b0=b;

    A=[];

    while abs((b0-a0)/2)>=esp

        half=(a0+b0)/2;

        fa=subs(f,a0);

        fb=subs(f,b0);

        fhalf=subs(f,half);

        if fhalf==0

            root=half;

            break;

        elseif fa*fhalf<0

            b0=half;

        else

            a0=half;

        end  

        A=[A,half];

    end

    root=(b0+a0)/2;

end

root

A

%不动点迭代(Picard迭代)

function [x,time]=Picard(f,x0,tol)

%结果给出迭代次数

%x0 为迭代初值

%tol 为误差容限

if(nargin==2)

    tol=1.0e-5;

end

wucha=0.5; %设置误差初值

x1=x0; %x1 与x0 为前后两次计算结果

time=0; %用于记录迭代次数

while(wucha>tol)

    x1=subs(f,x0)+x0;

%迭代计算

wucha=abs(x1-x0);

x0=x1; % 更新x0的值在循环中这一句非常重要

time=time+1;

%记下迭代次数

end

x=x1;

%Aitken加速收敛方法

function [gen,time]=Aitken(func,x0,tol)

if(nargin==2)

    tol=1.0e-5;

end

gen=x0;

x(1:2)=[0,0];

t=0; %记录迭代次数

m=0;

x2=x0;

wucha=0.1; %设置误差初值

while(wucha>tol)

    t=t+1; %记下累积一次迭代次数

    x1=x2;

    temp=gen;

    gen=subs(func,temp)+temp;

    x(t)=gen;

    %迭代超过两次使用 Aitken加速

    if(t>2)

        m=m+1;

        x2=x(m)-(x(m+1)-x(m))^2/(x(m+2)-2*x(m+1)+x(m));

        %给出两次迭代误差

        wucha=abs(x2-x1);

    end

end

gen=x2;

%Steffensen加速方法计算非线性方程

function [gen,time]=Steffensen(fun,x0,tol)

%如果缺省误差参数,默认为10 的-5次方

if(nargin==2)

tol=1.0e-5;

end

%设置误差初值

time=0; %记迭代次数

wucha=0.1; %设置前后两次迭代的误差

gen=x0;

while(wucha>tol)

x1=gen;

y=subs(fun,x1)+x1;

z=subs(fun,y)+y;

%加速公式

gen=x1-(y-x1)^2/(z-2*y+x1);

wucha=abs(gen-x1);

time=time+1; %迭代加一次的记录

end

gen; %计算结果

六、实验结果:

>> syms x;er_fen(sin(x),-2,1,1.0e-2)

root =

   -0.0020

A =

   -0.5000    0.2500   -0.1250    0.0625   -0.0313    0.0156  

   -0.0078    0.0039

相关推荐