鱼塘捕捞周期效益分析

该博客围绕鱼塘展开数学建模。先基于logistic模型计算鱼数量,给出原函数,还介绍用龙格库塔法模拟。接着分析鱼的收益,考虑经营与捕捞成本,以平均收益衡量,研究何时捕鱼及捕多少,通过函数求导找零点确定使收益最大的捕捞周期和捕捞量。

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

1.鱼的数量

假设鱼群按照logistic模型有
f(t,N)=dNdt=r∗N∗(1−N/K)f(t,N)=\frac{dN}{dt}=r*N*(1-N/K)f(t,N)=dtdN=rN(1N/K)
其中N表示鱼数量(或密度),t表示时间,这里假设月为单位,r表示固定增长率,K表示环境容纳量,显然,r,K为常数
在这里我假设r=0.1,K=1940r=0.1,K=1940r=0.1,K=1940(K的单位是吨)
按照数学方法
可以得到原函数
F(t)=N=K1+e−rt−C,其中C=ln(N0K−N0),N0为0时刻的数量F(t)=N=\frac{K}{1+e^{-rt-C}},其中C=ln(\frac{N_0}{K-N_0}),N_0为0时刻的数量 F(t)=N=1+ertCK,C=ln(KN0N0),N00
于是可以定义
f(t)=f(t,F(t))f(t)=f(t,F(t))f(t)=f(t,F(t))

额外内容:龙格库塔法

计算机模拟的时候为了通用性,可以用另外一种龙格库塔法来模拟F
F(t)=RK(fF,x0,y0,h,Nh)F(t)=RK(f_F,x_0,y_0,h,N_h)F(t)=RK(fF,x0,y0,h,Nh)
龙格库塔法要求5个参数,f是一阶微分函数式,即y=F(x)y=F(x)y=F(x),dFdx=fF(x,y)\frac{dF}{dx}=f_F(x,y)dxdF=fF(x,y),x0x_0x0,y0y_0y0为初始点坐标,h为迭代步长,NhN_hNh为迭代次数,它返回最后迭代后的函数值,即F(x0+h∗Nh)F(x_0+h*N_h)F(x0+hNh)的值
所以这里我们取fF=f,x0=0,y0=N0,h=0.01,Nh=thf_F=f,x_0=0,y_0=N_0,h=0.01,N_h=\frac{t}{h}fF=f,x0=0,y0=N0,h=0.01,Nh=ht

2.鱼的收益

对于一个鱼塘有经营成本和捕捞成本。
假设每吨鱼收益为E0=3.2E_0=3.2E0=3.2万,每年经营成本900万,则每月经营成本Cm=900/12C_m=900/12Cm=900/12,一次捕捞成本Cc=100C_{c}=100Cc=100万,
我们设NcN_cNc为捕捞量,tct_ctc为捕捞间隔,单位月
一次捕捞收益S=E0∗Nc−Cc−Cm∗tcS=E_0*N_c-C_c-C_m*t_cS=E0NcCcCmtc
但是我们不是研究一次捕捞的,而是研究多次捕捞,所以我们应该以平均收益来衡量,使得平均收益最大
平均收益S‾=E0∗Nc−Cctc−Cm\overline S=\frac{E_0*N_c-C_c}{t_c}-C_mS=tcE0NcCcCm

这里就有两个研究的问题

什么时候捕鱼
捕多少鱼

如果我们换种想法,其实有{tc=tb−taNc=F(tb)−F(ta)\begin{cases}t_c=t_b-t_a\\ N_c=F(t_b)-F(t_a)\end{cases}{tc=tbtaNc=F(tb)F(ta)
这个等式的含义事实上是把捕捞周期换成F(t)F(t)F(t)上的自变量的间隔,把捕捞行为等价的表达为F(t)F(t)F(t)曲线上的两点之间的“跳跃”行为。
{tb⟶捕捞taF(tb)⟶捕捞F(ta)\begin{cases}t_b \overset{捕捞} \longrightarrow t_a\\ F(t_b) \overset{捕捞} \longrightarrow F(t_a)\end{cases}{tbtaF(tb)F(ta)
反过来在休渔期tct_ctc{ta⟶休渔期tbF(ta)⟶休渔期F(tb)\begin{cases}t_a \overset{休渔期} \longrightarrow t_b\\ F(t_a) \overset{休渔期} \longrightarrow F(t_b)\end{cases}{tatbF(ta)F(tb)
于是有
S‾=E0∗(F(tb)−F(ta))−Cctb−ta−Cm\overline S=\frac{E_0*(F(t_b)-F(t_a))-C_c}{t_b-t_a}-C_mS=tbtaE0(F(tb)F(ta))CcCm
对于这个函数,我们可以发现性质ta&lt;tbt_a&lt;t_bta<tb。为了计算机能够容易的编程,所以不采用二元导数的形式,可以先把tat_ata看作常数,有S‾(t,ta)=E0∗(F(t)−F(ta))−Cct−ta−Cm,t∈(ta,∞)\overline S(t,t_a)=\frac{E_0*(F(t)-F(t_a))-C_c}{t-t_a}-C_m,t \in (t_a,\infty)S(t,ta)=ttaE0(F(t)F(ta))CcCm,t(ta,)
它的导数是这样子的
S‾’(t,ta)=∂S‾∂t=E0∗f(t)t−ta−E0∗(F(t)−F(ta))−Cc(t−ta)2,t∈(ta,∞)\overline S’(t,t_a)=\frac{\partial \overline S}{\partial t}=\frac{E_0*f(t)}{t-t_a}-\frac{E_0*(F(t)-F(t_a))-C_c}{(t-t_a)^2},t \in (t_a,\infty)S(t,ta)=tS=ttaE0f(t)(tta)2E0(F(t)F(ta))Cc,t(ta,)
它的定义域内只有一个零点,只要求出零点就可以得到S‾\overline SS的最大值
设求零点的函数为
xz=Zero(F,x0,x1)x_z=Zero(F,x_0,x_1)xz=Zero(F,x0,x1)
其中F为y=F(x)y=F(x)y=F(x),这里的x0x_0x0,x1x_1x1依据不同的方法会有不同的用途。如果是二分法的话就是区间的端点,如果是牛顿法的话就是迭代的前两项
为了方便,我将其定义为xz=Zero(F)x_z=Zero(F)xz=Zero(F)
x0x_0x0,x1x_1x1根据实际情况定
于是设
tb=Zero(S‾’(t,ta))t_b=Zero(\overline S’(t,t_a))tb=Zero(S(t,ta))
Zero()Zero()Zero()函数内是关于ttt的一个函数,但是在加上Zero()Zero()Zero()后是一个关于tat_ata的一个函数
定义tamaxt_{amax}tamax是使S‾(tb)\overline S(t_b)S(tb)最大的tat_ata值,tbmaxt_{bmax}tbmaxta=tamaxt_a=t_{amax}ta=tamaxtbt_btb的值.
tbmax=Zero(S‾’(t,tamax))t_{bmax}=Zero(\overline S’(t,t_{amax}))tbmax=Zero(S(t,tamax))
{tcmax=tbmax−tamaxNcmax=F(tbmax)−F(tamax)\begin{cases}t_{cmax}=t_{bmax}-t_{amax}\\ N_{cmax}=F(t_{bmax})-F(t_{amax})\end{cases}{tcmax=tbmaxtamaxNcmax=F(tbmax)F(tamax)
就是使S收益最大的一个捕捞周期tcmaxt_{cmax}tcmax和捕捞量NcmaxN_{cmax}Ncmax,捕捞点tbmaxt_{bmax}tbmax

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值