用差分方程对算法进行精确分析

本文通过一个具体的差分方程实例,展示了如何利用数学工具精确分析递归算法的时间复杂度,并提供了一种验证方法。文章包括了公式推导、算法实现及对比验证等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用差分方程对算法进行精确分析
a(n)=A*a(n/2)+C  ,initvalue  a(1)=1 ,a(2)=A+C ,a(4)=A*(A+C)+C
由于以前的积累,可以直接假定a(n)=M*A^{(log n)/(log 2)}+N
(上式可以化简为a(n)=M*n^{(log A)/(log 2)}+N ,与主方法联系起来了)

Go
a(1)=1=M+N
a(2)=A+C=M*A+N

Go
M=1+C/(A-1)
N=-C/(A-1)

(setq  A  2.0)
(setq  C  5.0)
(setq  M  (+  1
              (/  C  (-  A  1))))
(setq  N  (-  0
              (/  C  (-  A  1))))             


(defun pow (num count)
(if (> count 0)
      (* num (pow num (- count 1) ) )
    1
)
)

(defun  expr (n)
(if (eq  n 1)
       1
     (+   (*  (expr  (/  n  2))  A  )
           C)))

 


(defun  formula (num)
(+   (*  M  
         (pow  A 
               (/  (log num)
                   (log  2.0))))
     N))

 

(defun  test (n)
(if (> n 0)
  (progn
       (print (formula n))
       (print  'compare)
       (print (expr n))
       (test  (-  (/ n 2) (mod  n  2))))
  (print 'over)))

(test  64)

 

【有限差分初学者必备】如何根据问题的特点将定解区域作网格剖分;如何把原微分方程离散化为差分方程组以及如何解此代数方程组。此外为了保证计算过程的可行和计算结果的正确,还需从理论上分析差分方程组的性态,包括解的唯一性、存在性和差分格式的相容性、收敛性和稳定性。对于一个微分方程建立的各种差分格式,为了有实用意义,一个基本要求是它们能够任意逼近微分方程,这就是相容性要求。另外,一个差分格式是否有用,最终要看差分方程精确解能否任意逼近微分方程的解,这就是收敛性的概念。此外,还有一个重要的概念必须考虑,即差分格式的稳定性。因为差分格式的计算过程是逐层推进的,在计算第n+1层的近似值时要用到第n层的近似值 ,直到与初始值有关。前面各层若有舍入误差,必然影响到后面各层的值,如果误差的影响越来越大,以致差分格式的精确解的面貌完全被掩盖,这种格式是不稳定的,相反如果误差的传播是可以控制的,就认为格式是稳定的。只有在这种情形,差分格式在实际计算中的近似解才可能任意逼近差分方程精确解。关于差分格式的构造一般有以下3种方法。最常用的方法是数值微分法,比如用差商代替微商等。另一方法叫积分插值法,因为在实际问题中得出的微分方程常常反映物理上的某种守恒原理,一般可以通过积分形式来表示。此外还可以用待定系数法构造一些精度较高的差分格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值