◼
Nonlinear DDS have similiar input as Linear DDS but the computation takes longer to iterate. This produces larger time lags to compute p_n for large values of n.
◼
Nonlinear DDS often don't have a closed form analytic solution so we can't guarantee a shortcut when needing to compute large values of p_n
◼
We can often interpret the nonlinear dds by building it from the difference equation that tells the difference between the current output p_n and the previous output p_(n-1).
◼
Just like we had parameters "a" and "d" for the linear recursion equation, for a nonlinear recursion equation there are also parameters but we might assign different names.
◼
Part of the reason the recusion equation is non-linear is often because these parameters get multiplied by terms that depend on the independent variable which is the previous output p_(n-1).
◼
The Carrying Capacity Logistic Growth Model has two parameters R for Rate of Growth and C for Carrying Capacity
◼
Start by defining the initial condition and the recursion equation
In[]:=
p[0]=40;R=.8;Cap=500;p[n_]:=p[n-1]+R*(1-(p[n-1]/Cap))*p[n-1]
◼
Test an output
In[]:=
p[2]
Out[]=
117.277
◼
Output a table of values for n and p_n. NOTE: Be careful about iterating very far as the nonlinear computation takes more time. You may also choose to save the output with a variable name stored in memory that you can reference without having to recomput the table values every time.
In[]:=
mynonlindds=Table[{n,p[n]},{n,0,13}]
Out[]=
{{0,40},{1,69.44},{2,117.277},{3,189.092},{4,283.157},{5,381.398},{6,453.773},{7,487.336},{8,497.21},{9,499.43},{10,499.885},{11,499.977},{12,499.995},{13,499.999}}
Out[]=
{{0,40},{1,69.44},{2,117.277},{3,189.092},{4,283.157},{5,381.398},{6,453.773},{7,487.336},{8,497.21},{9,499.43},{10,499.885},{11,499.977},{12,499.995},{13,499.999}}
In[]:=
mynonlintab=TableForm[mynonlindds,TableHeadings{None,{"n iterations","p[n] output"}}]
Out[]//TableForm=
n iterations | p[n] output |
0 | 40 |
1 | 69.44 |
2 | 117.277 |
3 | 189.092 |
4 | 283.157 |
5 | 381.398 |
6 | 453.773 |
7 | 487.336 |
8 | 497.21 |
9 | 499.43 |
10 | 499.885 |
11 | 499.977 |
12 | 499.995 |
13 | 499.999 |
◼
Here we plot the table output values, not the tableform command that displayed it in columns.
In[]:=
ListPlot[mynonlindds,PlotLabel"My Carrying Capacity Non-Linear DDS",PlotLabels"population"]
Out[]=
◼
We can build a manipulate interactive tool that allows you to adjust certain parameter values like the carrying capacity, growth rate, and initial conditions.