网站地图 | RSS订阅 老铁博客 - 专业上海SEO上海SEO优化,分享网站优化知识,同时提供上海SEO服务。
你的位置:首页
ASP程序

二分法matlab程序

二分法matlab程序

今天数值计算上机做了一个验证二分法计算非线性方程的实验。

以前没有想过这个问题,今天作业一下感觉这个方法确实不错,随记下来。

首先给出要计算的方程:f(x)=x^2=M

然后编写算法:

MATLAB code:

%其中a,b表示查找根存在的范围,M表示要求解函数的值

function y=f2(a,b,M)

k=0;

eps=0.0000001

while b-a>eps

发布时间:2018年7月15日 | 评论:0 | 浏览: | 标签:二分法matlab程序  

ASP程序

逃离迷宫

逃离迷宫

中文--

题目:给定一个m×n(m行,n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位置,只能走到与它相邻的4个位置中,当然在行走过程中,格洛里亚不能走到迷宫外面去。令人头痛的是,格洛里亚是个没什么方向感的人,因此,她在行走过程中,不能转太多弯了,否则她会晕倒的。我们假定给定的两个位置都是空地,初始时,凯莱所面向的方向未定,她可以选择4个方向的任何一个出发,而不算成一次转弯.gloria能从一个位置走到另外一个位置吗?

发布时间:2018年7月15日 | 评论:0 | 浏览: | 标签:逃离迷宫  

前端脚本

12306 数据库

12306 数据库

12306火车票查询程序,可以多条件组合查询,方便实用-12306

发布时间:2018年7月15日 | 评论:0 | 浏览: | 标签:12306 数据库  

前端脚本

递归算法时间复杂度

递归算法时间复杂度

递归函数时间复杂度分析

 

(1) 递归执行过程
   例子:求N!。
    这是一个简单的"累乘"问题,用递归算法也能解决。
    n! = n * (n - 1)!   n > 1
    0! = 1, 1! = 1      n = 0,1
    因此,递归算法如下:
  
Java代码
fact(int n) { 
    if(n == 0 || n == 1)  
         return 1; 
        else  
             return n * fact(n - 1); 
    } 
    以n=3为例,看运行过程如下:
    fact(3) ----- fact(2) ----- fact(1) ------ fact(2) -----fact(3)
    ------------------------------>  ------------------------------>
                递归                            回溯
  递归算法在运行中不断调用自身降低规模的过程,当规模降为1,即递归到fact(1)时,满足停止条件停止递归,开始回溯(返回调用算法)并计算,从fact(1)=1计算返回到fact(2);计算2*fact(1)=2返回到fact(3);计算3*fact(2)=6,结束递归。
   算法的起始模块也是终止模块。
(2) 递归实现机制
    每一次递归调用,都用一个特殊的数据结构"栈"记录当前算法的执行状态,特别地设置地址栈,用来记录当前算法的执行位置,以备回溯时正常返回。递归模块的形式参数是普通变量,每次递归调用得到的值都是不同的,他们也是由"栈"来存储。
(3) 递归调用的几种形式
    一般递归调用有以下几种形式(其中a1、a2、b1、b2、k1、k2为常数)。
   <1> 直接简单递归调用: f(n) {...a1 * f((n - k1) / b1); ...};
   
   <2> 直接复杂递归调用: f(n) {...a1 * f((n - k1) / b1); a2 * f((n - k2) / b2); ...};
    <3> 间接递归调用:  f(n) {...a1 * f((n - k1) / b1); ...},
                        g(n) {...a2 * f((n - k2) / b2); ...}。
2. 递归算法效率分析方法
   递归算法的分析方法比较多,最常用的便是迭代法。
  迭代法的基本步骤是先将递归算法简化为对应的递归方程,然后通过反复迭代,将递归方程的右端变换成一个级数,最后求级数的和,再估计和的渐进阶。
  <1> 例:n!
       算法的递归方程为: T(n) = T(n - 1) + O(1);
       迭代展开: T(n) = T(n - 1) + O(1)
                       = T(n - 2) + O(1) + O(1)
                       = T(n - 3) + O(1) + O(1) + O(1)
                       = ......
                       = O(1) + ... + O(1) + O(1) + O(1)
                       = n * O(1)
                       = O(n)
      这个例子的时间复杂性是线性的。
<2> 例:如下递归方程:
     
      T(n) = 2T(n/2) + 2, 且假设n=2的k次方。
      T(n) = 2T(n/2) + 2
           = 2(2T(n/2*2) + 2) + 2
           = 4T(n/2*2) + 4 + 2
           = 4(2T(n/2*2*2) + 2) + 4 + 2
           = 2*2*2T(n/2*2*2) + 8 + 4 + 2
           = ...
           = 2的(k-1)次方 * T(n/2的(i-1)次方) + $(i:1~(k-1))2的i次方
           = 2的(k-1)次方 + (2的k次方)  - 2
           = (3/2) * (2的k次方) - 2
           = (3/2) * n - 2
           = O(n)
      这个例子的时间复杂性也是线性的。
<3> 例:如下递归方程:
     
      T(n) = 2T(n/2) + O(n), 且假设n=2的k次方。
      T(n) = 2T(n/2) + O(n)
           = 2T(n/4) + 2O(n/2) + O(n)
           = ...
           = O(n) + O(n) + ... + O(n) + O(n) + O(n)
           = k * O(n)
           = O(k*n)
           = O(nlog2n) //以2为底
    
      一般地,当递归方程为T(n) = aT(n/c) + O(n), T(n)的解为:
      O(n)          (a<c && c>1)
      O(nlog2n)     (a=c && c>1) //以2为底
      O(nlogca)     (a>c && c>1) //n的(logca)次方,以c为底
   上面介绍的3种递归调用形式,比较常用的是第一种情况,第二种形式也有时出现,而第三种形式(间接递归调用)使用的较少,且算法分析
比较复杂。 下面举个第二种形式的递归调用例子。
  <4> 递归方程为:T(n) = T(n/3) + T(2n/3) + n
     为了更好的理解,先画出递归过程相应的递归树:
                            n                        --------> n
                    n/3            2n/3              --------> n
              n/9       2n/9   2n/9     4n/9         --------> n
           ......     ......  ......  .......        ......
                                                     --------
                                                     总共O(nlogn)
     累计递归树各层的非递归项的值,每一层和都等于n,从根到叶的最长路径是:
   
      n --> (2/3)n --> (4/9)n --> (12/27)n --> ... --> 1
     设最长路径为k,则应该有:
     
     (2/3)的k次方 * n = 1
     得到 k = log(2/3)n  // 以(2/3)为底
     于是 T(n) <= (K + 1) * n = n (log(2/3)n + 1)
     即 T(n) = O(nlogn)
    由此例子表明,对于第二种递归形式调用,借助于递归树,用迭代法进行算法分析是简单易行的。

发布时间:2018年7月15日 | 评论:0 | 浏览: | 标签:递归算法时间复杂度  

ASP程序

获取kindeditor的值

获取kindeditor的值

网上找的 方法 如下 适合 4.X以后的版本

两种方法:

1)用KindEditor.instances数组获取。KindEditor.instances[0].html(); KindEditor.instances[1].html();

2)K.create返回的editor对象起不同的名,window.editor1 = K.create(..); window.editor2 = K.create(..)。然后editor1.html(); editor2.html();

发布时间:2018年7月15日 | 评论:0 | 浏览: | 标签:获取kindeditor的值  

前端脚本

国内可访问GPG Keyserver列表

国内可访问GPG Keyserver列表

apt-get update 或者aptitude update出现以下错误:
The following signatures couldn't be verified because the public key is not available: : NO_PUBKEY B5B7720097BB3B58

解决方法:
1,从任何一个key server获得缺失的公钥B5B7720097BB3B58。
gpg --keyserver subkeys.pgp.net --recv-keys B5B7720097BB3B58
2,导入公钥B5B7720097BB3B58。
gpg -a --export B5B7720097BB3B58 | sudo apt-key add -

发布时间:2018年7月15日 | 评论:0 | 浏览: | 标签:keyserver  

前端脚本

tftpd32使用说明

tftpd32使用说明
  1. 下载 tftpd32 工具
    点我下载(tftpd32_v4.5.2绿色版.zip)

发布时间:2018年7月15日 | 评论:0 | 浏览: | 标签:tftpd32使用  

前端脚本

定时器中断实验

定时器中断实验
一、实验目的
1、掌握单片机定时/计数器的使用方法。
2、掌握定时/计数器编程方法。


二、实验设备及软件
1、PC机
2、KEIL51
3、PROTEAUS


三、实验任务
1、循环点亮流水等D1-D2-D3…D8,   延时采用定时器T0定时100ms
2、循环点亮流水等D1-D2-D3…D8,   延时采用定时器T1定时1s


四、仿真电路




五、实验源程序
1)T0定时100毫秒:
#include<reg51.h>
#include<intrins.h>
void timer0() interrupt 1
{
     TH0=(65536-50000)/256;
     TL0=(65536-50000)%256;
     P0=_crol_(P0,1);
}
int main()
{
     TMOD=0x01;
     TH0=(65536-50000)/256;
     TL0=(65536-50000)%256;
     EA=1;
     ET0=1;
     TR0=1;
     P0=0xfe;
     while(1);
}

2)T1定时1秒:
#include<reg51.h>
#include<intrins.h>
unsigned int count=0;
void timer0() interrupt 3
{
     TH1=(65536-50000)/256;
     TL1=(65536-50000)%256;
     count++;
}
int main()
{
     TMOD=0x50;
     TH1=(65536-50000)/256;
     TL1=(65536-50000)%256;
     EA=1;
     ET1=1;
     TR1=1;
     P0=0xfe;
     while(1)
     {
          if(count==20)
          {
               count=0;
               P0=_crol_(P0,1);
          }
     }
}


六、思考题:利用8051定时/计数器设计一个计时秒表,计时时间0~15秒,十六进制在一个数码管显示输出。

发布时间:2018年7月15日 | 评论:0 | 浏览: | 标签:定时器实验  

前端脚本

adb push命令的使用

adb push命令的使用

最近刚接触一种工具(命令),什么命令呢?就是adb命令,对这个命令纯属一个小白鼠,什么都不懂,所以只能adb --help 一下参数,然后就尝试着使用。

今天遇到一个问题,需要将某个文件拷到小机上面,小机可以理解为手机或者平板电脑这种类似的机子,机子是跑安卓的。顿时就不知道怎么拷贝了。于是搜索了一番,从此就与adb打上交道了。

首先使用USB连接电脑与小机,然后安装adb相应的驱动,这是第一步,也是必须要做的。

进入doc系统后,敲入adb shell  可以进入linux命令行状态,说明adb可以使用了。

发布时间:2018年7月15日 | 评论:0 | 浏览: | 标签:adbpush  

前端脚本

滑动门技术

滑动门技术

  前些天加了一个设计群,里面一帮人都在嚷嚷要学css,但是不知道从哪里入手,于是我就在群里随便嘀咕了一句"哈哈,我是高手...." 结果引来骂声无数,虽然我心里不服,不过还是承认自己的css功底不够,除了布局/文字/链接这些简单的处理之外,其他的一些行为基本不会.

  其中有个人说"如果你是高手,那你就详细介绍一下css滑动门技术",这句话把我刺激了,于是我连夜从网上搜罗了一些关于css滑动门技术的东西,并且[url=http://www.achome.cn/example/door/door.html]自己做了一个滑动门,事实上在学习css滑动门技术之前,我发现我已经做过很多类似的菜单效果,最有代表性的就是[url=http://web.sogou.com]搜狗网址导航的搜索框,后来这个效果被广泛运用到搜狗的搜索引擎当中,我在这里总结一下一些css滑动门的知识,希望能给大家对css的学习起到一个帮助作用,另外结合javascript,css可以制作出更多炫目的效果.

发布时间:2018年7月15日 | 评论:0 | 浏览: | 标签:滑动门技术  

前端脚本

一步步优化JVM七:其他

一步步优化JVM七:其他

边缘问题

   在某些场景下,按照前面的一步步优化指导无法产生效果。这一节说明一下这些情况。

   一些应用分配了一些少量的非常大的长时间存活的对象。这样的场景需要需要young代的空间比old代更大。

   一些应用会经历很少的对象转移。这样的场景可能需要old代的空间远远大于存活对象的大小,由于old的占用量增长率很小。

   一些应用有小延迟需求,会使用CMS垃圾回收器,而且使用小young代空间(以致于MinorGC时间更短),以及大的old代空间。在这种配置下,对象会快速的从young代移动到old代,替代了高效老化对象。另外,CMS垃圾回收移动后的对象,碎片的可能性通过大的old代空间来解决。

发布时间:2018年7月13日 | 评论:0 | 浏览: | 标签:aggressiveopts  

ASP程序

web漏洞扫描器

web漏洞扫描器

10大Web漏洞扫描程序
url; http://playkid.blog.163.com/blog/static/56287260201210225175595/
2012-11-22 17:17:55


 美国最权威的RSA大会研究显示,Web应用安全已超过所有以前网络层安全(如DDos),逐渐成为最严重、最广泛、危害性最大的安全问题。如华为、RSA、赛门铁克、联想ThinkPad、绿盟、启明星辰、东软、Citrix思杰、安域领创等都开发了自己的Web漏洞扫描程序、
  
  1.Nikto(免费产品)
  Nikto是一款开源的(GPL)网页服务器扫描器,它可以对网页服务器进行全面的多种扫描。扫描项和插件可以自动更新(如果需要),但其软件本身并不经常更新,最新和最危险的可能检测不到。

发布时间:2018年7月13日 | 评论:0 | 浏览: | 标签:web漏洞扫描器  

前端脚本

dialogboxparam

dialogboxparam

int DialogBoxParam(
  HINSTANCE hInstance,  // handle to application instance
  LPCTSTR lpTemplateName,  // identifies dialog box template
  HWND hWndParent,      // handle to owner window
  DLGPROC lpDialogFunc, // pointer to dialog box procedure
  LPARAM dwInitParam    // initialization value
);
 

发布时间:2018年7月13日 | 评论:0 | 浏览: | 标签:dialogboxparam  

前端脚本

遗传算法的应用

遗传算法的应用

遗传算法是一种非常有用的算法,可以用于求解最小值,TSP问题等等 对于算法基本思想,这里就不写了,毕竟到处都有,直接给出一个用遗传算法求解最小值的matlab代码(附有详细注释)

 % 罗森布罗克 ( Rosenbrock ) 函数为f(x1, x2)  = 100(x1^2 - x2)^2 + (1 - x1)^2 ,试用遗传算法计算此函数在区域 内的最大值。

 

clear all

clc

format long;  %设定数据显示格式

%初始化参数

T=100;  %进化代数

N=80;  % 群体规模

pm=0.05; pc=0.8;  %交叉变异概率

umax=2.048; umin=-2.048;  %参数取值范围

L=10;  %单个参数字串长度,总码串长度2L

bval=round(rand(N,2*L));  %初始种群

bestv=-inf;  %最优适应度初值

 

%迭代开始

for ii=1:T

%解码,计算适应度

for i=1:N

        y1=0;y2=0;

        for j=1:1:L

           y1=y1+bval(i,L-j+1)*2^(j-1);

        end

        x1=(umax-umin)*y1/(2^L-1)+umin;

for j=1:1:L

           y2=y2+bval(i,2*L-j+1)*2^(j-1);

        end

        x2=(umax-umin)*y2/(2^L-1)+umin;

        obj(i)=100*(x1*x1-x2).^2+(1-x1).^2; 

        %目标函数值 

        xx(i,:)=[x1,x2];

    end

func=obj;  %目标函数转换为适应度函数

p=func./sum(func);

q=cumsum(p);  %累加,形成部分和序列

[fmax,indmax]=max(func);  %求当代最佳个体

   if fmax>=bestv

      bestv=fmax;  %到目前为止最优适应度值

      bvalxx=bval(indmax,:);  %到目前为止最佳位串

 

      optxx=xx(indmax,:);  %到目前为止最优参数

   end   

   Bfit1(ii)=bestv;   % 存储每代的最优适应度

%%%%遗传操作开始,使用赌轮选择

 for i=1:(N-1)

    r=rand;  tmp=find(r<=q);  newbval(i,:)=bval(tmp(1),:);

 end 

  newbval(N,:)=bvalxx;  %最优保留

  bval=newbval;

%%%%单点交叉

for i=1:2:(N-1)

   cc=rand;

   if cc<pc

       point=ceil(rand*(2*L-1));  %取得一个1到2L-1的整数

       ch=bval(i,:);

       bval(i,point+1:2*L)=bval(i+1,point+1:2*L);

       bval(i+1,point+1:2*L)=ch(1,point+1:2*L);

   end

    

end   

bval(N,:)=bvalxx;  %最优保留

%%%%位点变异

mm=rand(N,2*L)<pm;  %N行2L列随机数,小于pm的元素变成逻辑数1,

%大于pm的元素变成逻辑数0

mm(N,:)=zeros(1,2*L);  %最后一行不变异,强制赋0

bval(mm)=1-bval(mm);  % 矩阵mm中每个逻辑数1指示bval中与其位置相同的

%元素x变为1-x,即0,1互换

end

%输出

plot(Bfit1);  % 绘制最优适应度进化曲线

bestv   %输出最优适应度值

optxx    %输出最优参数

 

发布时间:2018年7月13日 | 评论:0 | 浏览: | 标签:遗传算法的应用  

«1213141516171819202122232425262728293031»