美文网首页
MATLAB:解决美国虫害问题

MATLAB:解决美国虫害问题

作者: Alcazar | 来源:发表于2019-04-22 21:53 被阅读0次

    题目

    1868年,偶然从澳大利亚引入美国的吹绵蚧威胁到甚至会毁灭美国的柑橘业。为对抗这种形势,引进了一种天然的澳大利亚捕食者瓢虫,瓢虫使得吹绵蚧的数量降到一个相对低的水平。当发明了能杀死蚧的杀虫剂DDT后,农民就用DDT希望能进一步降低蚧的数量。但是,事实证明DDT对瓢虫也是致命的,而且利用了这种杀虫剂后的总效果是增加了蚧的数量。令C_n和B_n分别表示n天后吹绵蚧和瓢虫的种群量水平。现有模型:

    C_(n+1)=C_n+k_1 C_n-k_2 B_n C_n,
    B_(n+1)=B_n-k_3 B_n+k_4 B_n C_n.
    

    其中k_i都是正常数。
    (a) 讨论该模型中每个k_i意义。
    (b) 在一个种群不存在时,关于另一个种群的增长的隐含的假设是什么?
    (c) 对系数取值并再试试几个起始值。你的模型预测的长期行为是什么?改变系数。你的实验是否表明模型对系数是敏感的?对起始值是否是敏感的?
    (d) 修改该捕食者一食饵模型使之能反映农民(在常规的基础上)使用杀虫剂以与瓢虫和吹棉蚧当前的数量成比例的杀死率杀死他们的情形。

    合理性假设及符号说明

    一、 合理性假设
    1. 忽略杀虫剂对其他农作物的影响。
    2. 吹绵蚧和瓢虫均没有迁入与迁出。
    3. 可能杀虫剂DDT对瓢虫的毒害效果更显著。
    4. 在一个种群不存在的情况下(天敌、竞争者均不存在),种群增长速度为一开始呈现指数上升趋势,接着到达拐点,随后达到环境承受的上限值。
    二、符号说明
    C_n表示n天后吹绵蚧种群量水平。
    B_n表示n天后瓢虫种群量水平。
    

    模型设计分析

    • 对模型进行数学分析
    简书上书写数学公式较为繁琐,上传图片提供数学解法思维 (但好像无法继续完善模型)

    问题求解

    (a)
    k1 : 表示吹棉蚧的出生率。
    k2 : 表示使用杀虫剂DDT的条件下,瓢虫对吹棉蚧死亡率的影响因子。
    k3:表示瓢虫在没有其他限制条件下的正常死亡率。
    k4: 表示使用杀虫剂DDT的条件下,吹棉蚧对瓢虫出生率的影响因子。
    (b)
    在一个种群不存在的情况下(天敌、竞争者均不存在),种群增长速度为一开始呈现指数上升趋势,接着到达拐点,随后达到环境承受的上限值。
    (c)
    利用MATLAB画出吹棉蚧和瓢虫的散点图和函数关系式如下,由实验数据表明模型对系数敏感,并且对初始值也敏感。

    设定初始值:
    C1 = 400,B1 = 100
    k1 = 0.2,k2 = 0.01,k3 = 0.3, k4 = 0.02
    绘制吹绵蚧和瓢虫关系图
    
    吹绵蚧和瓢虫关系散点图(1)
    改变 k2,k4 的值,令k2 = 0.02, k4 = 0.05
    再次绘制吹绵蚧和瓢虫关系图
    
    吹绵蚧和瓢虫关系散点图(2)
    改变k1、k3 的值,令k1 = 0.25, k3 = 0.5
    绘制吹绵蚧与瓢虫关系图
    
    吹绵蚧和瓢虫关系散点图(3)
    改变初始值,令 C = 200, B1 = 150
    绘制吹绵蚧与瓢虫关系图
    
    吹绵蚧和瓢虫关系散点图(4)
    总结: 模型对参数的敏感性极高,微小变化对结果的影响极大。由此可见,由瓢虫与吹绵蚧所组成的生态系统并不稳定。

    参考文献

    [3] Frank R. Giordano. A First Course in Mathematical Modeling(Fifth Edition)[M].美国:机械工业出版社,2014

    程序及其它说明

    #这里给出的是(1)的 MATLAB 代码
    #图(2)、(3)、(4)的变化代码只改变上述代码的初始赋值,这里就不重复劳动了
    k1=0.2;   
    k2=0.001;  
    k3=0.3;
    k4=0.002;
    b(1)=100;
    c(1)=400;
    x=[];
    y=[];
    for i=1:1:20
        x(1,i)=b(i);
        y(1,i)=c(i);
        c(i+1)=(1+k1)*c(i)-k2*b(i)*c(i);
        b(i+1)=(1-k3)*b(i)+k4*b(i)*c(i);
    end
    t=1:1:20;
    plot(t,x,'r*',t,y,'+')
    
    【感谢您的阅读】 && 【点个赞再走吧】 @_@

    相关文章

      网友评论

          本文标题:MATLAB:解决美国虫害问题

          本文链接:https://www.haomeiwen.com/subject/exrjgqtx.html