对差分方程应用微分方法
假设数列a(n)=x^1/1+x^2/2+...x^n/n
Go
分别微分为
b(n)=1+x+x^2+x^3+...+x^(n-1)
求得b(n)={x^n-1}/{x-1}
对b(n)积分可以得
a(n)=这里有可能是没有办法解出来的,如果能够算出来,那调和级数不就没问题了吗?
在这里假设-1<x<1,这样有可以算大概
Go
b(n)=1/(1-x)
Go
b(n)=-log(1-x)
如下是代码的验证:
(defun pow (num count)
(if (or (> count 1) (eq count 1))
(* num
(pow num
(- count 1) ) )
1))
(defun expr (n x count)
(if (> n count)
0
(+ (expr (+ n 1)
x
count)
(/ (pow x n)
n))))
/*
(defun calc (n x count)
(/ (- (pow x
(+ count 2) )
x)
(- x
1)))
*/
(defun calc (n x count)
(- 0
(log (- 1 x))))
x=0.5
(defun test (count)
(if (> count 0)
(progn
(print (expr 1 0.5 count))
(print 'compare )
(print (calc 1 0.5 count))
(test (- count 1)))
(print 'over)))
(test 100)
通过结果可以观察到,在100以内,两个结果就已经完全一样了。