递归关系求解

简介:

问题

假设:一个反应器中有两类粒子α和β,设每秒钟一个α粒子分裂成3β粒子,而每秒钟一个β粒子分裂成一个α粒子和两个β粒子。假如在t=0时:反应器中有一个α粒子,求t秒时反应器中α粒子和β粒子的数目。

根据关系列出递归关系

a(t) = b(t-1)
b(t) = 3*a(t-1) + 2*b(t-1)

参考程序

复制代码
#include <stdio.h>
#include <stdlib.h>
#define A_size 5 
int aa(int size)   //aa(t)表示t时刻α的个数
{
    if (size == 0)
        return 1;
    else
        return bb(size-1);
}
int bb(int size)   //bb(t)表示t时刻β的个数
{
    if (size == 0)
        return 0;
    else
        return 3 * aa(size-1) + 2 *  bb(size-1);
}
int main()
{
    printf("%d\n", aa(A_size) + bb(A_size));
    return 0;
}
复制代码

结果:243

复制代码
a(t) = b(t-1)
b(t) = 3*a(t-1) + 2b(t-1)
得:
a(t-1)=b(t-2)
b(t) = 3*a(t-1) +2*b(t-1)
      =3* b(t-2) + 2* b(t-1) (t>=2)
根据已知条件知:a(0)=1 a(1)=0   b(0)=0 b(1)=3
复制代码

得到递归关系:b(t) = 2*b(t-1) + 3*b(t-2),这是一个常系数齐次线性方程。为了求解看下解常系数齐次线性方程的一般方法。

解常系数齐次线性方程的一般方法

首先区分

特征方程与特征值

 求解通解的步骤

1.根据递归关系得出特征方程,求解方程得到特征根;

2.表示出通解的一般形式(分为是否有重根);

3.代入初始值得到系数,从而得到通解。

就本题演示一般步骤

1.把递归关系b(n)=2*b(t-1) + 3*b(t-2),表示为特征方程:x2=2x+3,得到特征值-1和3;

2.没有重根,通解表示为b(t) = c1*(-1)n + c2*(3)n;

3.带入初始值,得到c1=-3/4   c= 3/4,

从而得到通解:b(t) = -3/4 *(-1)n + 1/4 *(3)n+1
                      a(t) = -3/4 *(-1)n-1 + 1/4 *(3)n  
(t>=2)

 




本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/3155660.html,如需转载请自行联系原作者


相关文章
素因子分解(递归求解)
素因子分解(递归求解)
131 0
|
1月前
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
48 2
|
4月前
|
算法
【算法】递归总结:循环与递归的区别?递归与深搜的关系?
【算法】递归总结:循环与递归的区别?递归与深搜的关系?
104 0
|
6月前
|
机器学习/深度学习 C语言
|
数据采集 存储 算法
图论:探索节点与关系的数学世界
引言 本文仅仅作为图论的概述,由于种种原因没有进行排版(笔者不太会用这个编辑器),超链接为扩展内容,大家可以点击详细学习。
126 0
|
存储 算法 Python
秒懂算法 | 子集树模型——0-1背包问题的回溯算法及动态规划改进
给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为W。一种物品要么全部装入背包,要么全部不装入背包,不允许部分装入。装入背包的物品的总重量不超过背包的容量。问应如何选择装入背包的物品,使得装入背包中的物品总价值最大?
805 0
秒懂算法 | 子集树模型——0-1背包问题的回溯算法及动态规划改进
|
算法 容器
递归树:借助树来求解递归算法时间复杂度
递归树与时间复杂度分析 我们前面讲过,递归的思想就是,将大问题分解为小问题来求解,然后再将小问题分解为小小问题。这样一层一层地分解,直到问题的数据规模被分解得足够小,不用继续递归分解为止。 如果我们把这个一层一层的分解过程画成图,它其实就是一棵树。我们给这棵树起一个名字,叫作递归树。我这里画了一棵斐波那契数列的递归树,你可以看看。节点里的数字表示数据的规模,一个节点的求解可以分解为左右子节点两个问题的求解。
279 0
递归树:借助树来求解递归算法时间复杂度
|
算法
《算法设计与分析》一一2.3 “分治递归”求解
本节书摘来自华章出版社《算法设计与分析》一 书中的第2章,第2.3节,作者:黄宇 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1902 0