Analysis of an Integrodifference Model for Biological Invasions With a Quasi-Local Interaction by Sandra M . Merchant B . S c , The University of Northern British Columbia, 2001 A THESIS S U B M I T T E D IN PARTIAL F U L F I L M E N T OF T H E R E Q U I R E M E N T S FOR T H E D E G R E E OF M A S T E R OF SCIENCE in The Faculty of Graduate Studies (Department of Mathematics, Institute of Applied Mathematics) We accept this thesis as conforming to the required standard T H E U N I V E R S I T Y OF BRUTISH C O L U M B I A September 7, 2003 © Sandra M . Merchant, 2003 In presenting this thesis in partial fulfilment of the requirements for an advanced degree at the University of British Columbia, I agree that the Library shall make it freely available for reference and study, f further agree that permission for extensive copying of this thesis for scholarly purposes may be granted by the head of my department or by his or her representatives. It is understood that copying or publication of this thesis for financial gain shall not be allowed without my written permission. Department of Mathematics, Institute of Applied Mathematics The University O f British Columbia Vancouver, Canada Date Abstract 11 Abstract The behaviour of a new model for the spatial spread of biological invasions with non-overlapping synchronous generations and well-defined dispersal and sedentary stages is examined. In this integrodifference model, competition between conspecifics takes the form of a quasi-local interaction, where the strength of competition between two individuals depends on their physical distance from each other. Both the deterministic model and a stochastic analogue are examined by numerically simulating the spread of a localized initial population over several generations. By modelling intraspecific competition with a quasi-local interaction, the shape of the travelling waves changed significantly from that of the classical model with only local competition, creating more variable and complex wavefront shapes than are possible with the classical model. The addition of quasi-local competition was also found to alter several aspects of the initial behaviour of this model, including the invasion speed and spatial structure, although in the deterministic case the asymptotic invasion speed and population density behind the front of the wave agreed with those of the classical model. In the stochastic analogue, however, the rate of spread of the invasion was found to be considerably lower than that of the classical model, both initially and asymptotically. Furthermore, the speed achieved by the stochastic invasions was found to depend on the parameters of the quasi-local interaction kernel. Contents 111 Contents Abstract ii Contents iii List of Figures Acknowledgements 1 Introduction to Invasion Models and Quasi-Local Interactions . . . 1.1 Historical Invasion Models 1.2 Travelling Waves and Invasion Speed 1.3 Quasi-Local Interactions 1.4 Invasion Models Including Quasi-Local Interactions: Open Questions v vii 1 1 4 6 7 2 Methods 2.1 Model System Chosen for Simulations 2.2 Deterministic Simulations 2.3 Stochastic Simulations 11 11 16 18 3 Results 3.1 Deterministic Simulations 3.1.1 Simulations Without a Quasi-Local Interaction 3.1.2 Simulations With a Quasi-Local Interaction 3.2 Stochastic Simulations 3.2.1 Simulations Without a Quasi-Local Interaction 3.2.2 Simulations With a Quasi-Local Interaction 22 22 22 24 31 31 34 4 Discussion and Conclusions 4.1 Summary and Discussion 4.2 Conclusion and Recommendations for Future Work 48 48 50 Contents iv Bibliography 52 A Source Code for Deterministic Simulations 55 B 70 Source Code for Stochastic Simulations List of Figures v List of Figures 3.1 Travelling Waves for the Deterministic Simulation Without a QuasiLocal Interaction 22 3.2 Wavefront Distance from Origin over Time for the Deterministic Simulation Without a Quasi-Local Interaction 23 3.3 Population Density Waves for the First 25 Generations of the Deterministic Simulation With a Quasi-Local Interaction Simulation Invasion Speeds over Time for the Deterministic Simulations Simulation Invasion Speeds vs. Time for the First 30 Generations of the Deterministic Simulations Density Waves at Generation 50 for the Deterministic Simulation With a Quasi-Local Interaction Height of the Wavefront Peak over Time for the Deterministic Simulation With a Quasi-Local Interaction Formation of a Wavefront Peak for the Deterministic Simulation With a Quasi-Local Interaction 3.4 3.5 3.6 3.7 3.8 3.9 Spread of a Single Population for a Stochastic Simulation Without a Quasi-Local Interaction 25 26 27 28 29 30 32 3.10 Travelling Waves for the Stochastic Simulation Without a QuasiLocal Interaction 34 3.11 Difference in Simulation Invasion Speeds from the Theoretical Deterministic Value for the Stochastic Simulation Without QuasiLocal Interactions at Various Mesh Sizes 35 3.12 Initial Invasion Speeds for the Stochastic Simulation With a QuasiLocal Interaction 3.13 Invasion Speed at each Generation for the Stochastic Simulation With a Quasi-Local Interaction 3.14 Average Location of the Furthest Individual from the Origin at each Generation for the Stochastic Simulation With a Quasi-Local Interaction 41 42 43 List of Figures vi 3.15 Average Survival Probability of the Furthest individual from the Origin at Generation 50 for the Stochastic Simulation With a QuasiLocal Interaction 44 3.16 Invasion Speed at Generation 50 for Various Mesh Sizes for the Stochastic Simulation With a Quasi-Local Interaction 3.17 Average Population Density Waves at Generations 100 and 200 for the Stochastic Simulation With a Quasi-Local Interaction . . . 45 46 3.18 Average Population Density Wave at Generation 100 for the Stochastic Simulation with a Quasi-Local Interaction 47 Acknowledgements Vll Acknowledgements I would like to thank my supervisor Michael Doebeli for his continual support throughout this project, as well as the entire Doebeli lab group for their many suggestions on the construction and analysis of these invasion models. In particular, I would like to thank Rik Blok for providing me with several technical suggestions and the source code for drawing Poisson distributed random deviates. I would also like to thank the Zoology 502 class for their review and suggestions on the introductory chapter. Finally, I would like to thank Cameron Rowe for his 24-hour caffeine provision and technical support and for having so much patience with me. Chapter 1. Introduction to Invasion Models and Quasi-Local Interactions Chapter 1 Introduction to Invasion Models and Quasi-Local Interactions Over the past half century the mobility of human societies, and the scale over which we alter our environment, has changed dramatically. One of the consequences of this increased globalization is an increase in the frequency of biological invasions [28]. The introduction of an exotic species to a novel environment often has negative impacts on the persistence of local flora and fauna, resource productivity, and human health. Common textbook examples of these impacts include i) the introduction of the Nile Perch into Lake Victoria in East Africa, resulting in the extinction of many endemic cichlid species [25] ii) the introduction of rabbits to Australia in 1859, causing millions of dollars in lost livestock production each year [25, 28] and iii) the intentional introduction of African bees to South America. The African bees hybridized with local species, producing the infamous "killer bees" that have now killed hundreds of people [25]. Since biological invasions can have such great impacts on humans and our environment, models to predict the rate of spread, density of the population, and shape or pattern of an ecological invasion have been studied since the 1950s. Nonetheless, some key components required for their application, such as a means for incorporating empirically observed dispersal patterns and spatially-explicit density-dependent effects, have remained largely unresolved. This chapter provides a brief review of the development of invasion models over the past 50 years, and illustrates how integrodifference equations and quasi-local interaction theory have been developed to address these two issues and create more versatile and applicable invasion models. 1.1 Historical Invasion Models The traditional way of modelling ecological invasions is through reaction-diffusion equations. The first application of reaction-diffusion equations to ecological invasions was by Skellam in 1951. In his paper, Skellam applied the reaction-diffusion 1 Chapter 1. Introduction to Invasion Models and Quasi-Local Interactions equation developed by Fisher (1937) to model the propagation of an advantageous allele, to the spread of muskrats across Europe [5, 23, 24]. Reaction-diffusion models combine a diffusion term that describes the movement of individuals with a growth term that describes the growth dynamics of a population. For example, the Fisher equation oW _ = r W ( 1 N __ dN 2 ) + f l _ ( U ) combines Brownian random dispersal with logistic population growth. Here N(x,t) is the population density at the point x and at time t, r is the intrinsic rate of population growth, K is the carrying capacity and D is a constant of diffusion [8]. Since Skellam's use of the most simple reaction-diffusion model for a biological invasion, reaction-diffusion invasion models have been modified to include density-dependent mortality (as in the Fisher equation above), heterogeneous environments, allee effects and multi-species interactions, making them quite versatile and well-understood [8]. However, one major limitation of reaction-diffusion models is that they inherently assume that individuals disperse randomly and continuously, resulting in a distribution of dispersal distances (from point of origin and over a fixed amount of time) that is normally-distributed [3]. In contrast, dispersal during actual invasions may take many forms and it soon became desirable to develop models that could incorporate these other dispersal patterns [1, 14, 23]. In an effort to satisfy this need, new model formulations incorporating various dispersal distributions were developed and examined. One such model type, developed by Kendall (1965) and Mollison (1972, 1977) to model the spread of epidemics, is especially effective at incorporating non-random dispersal assumptions, because the dispersal kernel is an explicit part of the model formulation. These models are called spatial contact models [9, 18, 19, 20]. Although Kendall and Mollison's original papers included only continuoustime spatial contact models, both continuous-time and discrete-time spatial contact models are now common in the literature [9, 18, 19, 20]. This paper will focus on discrete-time contact models, also known as integrodifference equations. Like reaction-diffusion equations, integrodifference models have their origins in population genetics [26, 27], and they have only recently been applied to population ecology [11]. In population ecology, integrodifference equations are used to model populations of organisms with non-overlapping synchronous generations and well-defined dispersal and sedentary stages. A typical application of such models is to invasive annual plant populations [1, 6]. A l l movement is assumed to take place during the dispersal stage, and population growth occurs only during 2 Chapter 1. Introduction to Invasion Models and Quasi-Local Interactions 3 the sedentary stage. In integrodifference models, the sedentary/reproductive stage is typically modelled by a standard difference equation N =f(N,) (1.2) l+l such as the general fitness equation introduced by Maynard Smith and Slatkin, *'+' = T W °' 3 ) or the more simple Beverton-Holt stock-recruitment relationship « - =T ^ which is simply the case b = 1 in the Maynard Smith equation [2]. In these equations N, is the population density at time step or generation /, X is the intrinsic rate of growth in the absence of competition, b defines the form and strength of intraspecific competition and a scales the carrying capacity, which in biological terms is the maximum sustainable population density. [2, 4]. As it is currently written, equation (1.2) does not explicitly contain a spatial component, and so it cannot allow for dispersal. In order to address this, we instead consider N, (x) to represent the population density in generation / at the point x in space. Note that x will be a vector if more than one spatial dimension is under consideration. If we assume that the environment is homogeneous and that there is no dispersal, population growth can now be described by the relationship N (x)=f(N (x)). l+i l (1.5) If one wanted to include environmental heterogeneity in this model, one could do so by making the function f depend explicitly on the point in space and time, ie., f(x,t,Ni(x)), but for the purpose of this paper i will assume that resource availability is constant across space and time and so / will be a function of N,(x) alone. Next, to include dispersal in the model, a dispersal kernel, k(x,y), that describes the dispersal pattern of the population is introduced. More precisely, k(x,y) is the probability density function for propagules dispersing from the point y, and so k(x,y)dy is the probability of an individual dispersing from a small neighbourhood of length dy about y to a neighbourhood of equal length about x [6, 11, 12]. The population density at x after dispersal is therefore the integral of the post-reproduction population densities at all points in space multiplied by the Chapter 1. Introduction to Invasion Models and Quasi-Local Interactions 4 probability density function value at each point. The resulting integrodifference equation is N (x) = J k(x,y)f(N (y))dy l+] t (1.6) where the domain of integration is the domain of the probability density function k(x,y). As can be seen in (1.6), the dispersal kernel k(x,y) is an explicit part of this model, and so it is possible to incorporate knowledge of the dispersal pattern of an organism into integrodifference invasion models. However, a few comments are in order regarding the dispersal kernel k(x,y). First, i f we assume that all individuals survive the dispersal process, then all individuals must go somewhere and it is necessarily true that V x, J k(x,y)dy = 1. As well, since k(x,y) is a probability density function Vx,y, k(x,y)>0. Finally, although such dispersal kernels may depend on both the points x and y, it is common to assume that the probability of an individual dispersing from a point x to the point v i s a function only of the distance between them. That is, k(x,y) = k(\x-y |). In keeping with the assumption that the environment is homogeneous, I will also assume this form of dispersal kernel in this paper. We now have the integrodifference equation N (x) = J k(\x-y\)f(N (y))dy, t+l t (1.7) which is the starting point for many invasion models [1, 11, 12, 13, 14, 15, 16,17, 26]. 1.2 Travelling Waves and Invasion Speed There are a number of results from various analyses of integrodifference equations of the form (1.7), perhaps the most well-known, and most ecologically relevant of Chapter 1. Introduction to Invasion Models and Quasi-Local Interactions 5 which relates to the expected rate of spread of a population into a new environment. It is known from Henry Weinberger's (1974, 1984) studies of integrodifference equations in population genetics that if (1.7) satisfies: (i) f'(N) > 0 V7V>0 (ii) f(N) < f(0)N VN > 0, and (iii) jfc(£) = fk(\z\)(&dz exists for some interval of E, about 0 (Note that the 3rd condition is that the moment generating function of k(\z\) must exist, which is equivalent to requiring that k(\z\) have exponentially bounded tails). then there will exist travelling wave solutions to the integrodifference equation (1.7) (see Figure 3.1 for an example of travelling waves) [26, 27]. These travelling waves have minimum wave speed (ie. distance between succesive wavefronts) c* = mm{ -ln[f(0)k(£,)}}l (1-8) Furthermore, if the initial data NQ(X) are compact, then c* is the asymptotic speed of propagation of the population. This means that the spread of the population will have speed tending asymptotically toward c*. This result is relevant to ecological invasion models because most population growth functions without allee effects satisfy conditions (i) and (ii) and many dispersal kernels, Gaussian dispersal kernels in particular, have exponentially bounded tails. As well, founder populations always have bounded spatial support. The asymptotic speed of propagation defined by equation (1.8) has been calculated for a number of dispersal kernel forms. For instance, if the dispersal kernel is a Gaussian NormaliO^j) density function, hereafter abbreviated N(0, Oj), the asymptotic invasion speed is known to be c* = G j\/2ln(f'(0)) [12]. Interestingly, reaction-diffusion models also predict the same constant rate of spread for a population undergoing diffusive dispersal and with the same conditions (i) and (ii) on the growth function [8]. c O f course, not all dispersal kernels have moment generating functions. In such a case, Kot et al. (1996) have outlined two possibilities for the invasion speed: 1. The invasion speed grows polynomially with time: This occurs when the dispersal kernels have "fat tails" or more precisely k(\z\) has finite moments of all orders but no moment generating function. Chapter 1. Introduction to Invasion Models and Quasi-Local Interactions 2. The invasion speed grows exponentially with time: This occurs when the dispersal kernels have extremely fat tails. That is, k(\z\) has moments that are infinite [12]. 1.3 Quasi-Local Interactions Quasi-local interactions, also known as neighbourhood effects, are a recent addition to spatial population and metapopulation theory. Sasaki (1997) provided the first analysis of neighbourhood effects in continuous-space population models, and Doebeli & Killingback (2003) developed the concept for metapopulation/discretespace models [4, 22]. Recall from section 1.1 that integrodifference models are built around an assumed growth function of the form N (x)=f{N,(x)). l+l Here population growth at a point x is assumed to depend only on the population density at that point. This means that only individuals at x have an influence on the growth rate at x, whereas individuals at other coordinates have no impact whatsoever. For many organisms this is not a biologically plausible assumption, since neighbouring individuals can be expected to influence survival and/or reproductive output to some degree. In such a case, rather than as a delta function, the strength of competition between individuals may in fact better be described by a more gradual (usually decreasing) function of the distance between them. That is to say that individuals far from x can be expected to have less strong an impact on the reproductive output or mortality of individuals at x than would nearby conspecifics, but that intermediate degrees of competition are possible. Many processes would be expected to lead to such a dynamic, including: accumulation of waste products, antibiotics directed to conspecific competitors, behavioural interference/harassment of neighbours, or nutrient absorption/foraging by neighbours [4, 22]. Since there are so many ways for quasi-local interactions to exist within a population, we can expect numerous organisms to exhibit them. To take into account these quasi-local interactions in spatial population models, a competition function C(d), assumed to depend on the distance d between two points, is introduced. This function describes the strength of competition between individuals at a distance of d from each other. Although any form of function can be used, as with the dispersal kernel it is common to use standard probability density functions for this competition function, which I will hereafter refer to as the quasi-local interaction kernel. 6 Chapter 1. Introduction to Invasion Models and Quasi-Local Interactions 7 If the quasi-local interaction kernel C(d) is known, we can then consider the at the point x and in generation / to be the effective population density, N ff (x) e tt weighted sum (weighted by the quasi-local interaction kernel) of the population densities at all points in space: = Jc(\x-z\)N,(z)dz, NeffM (1.9) where the domain of integration is the domain of the quasi-local interaction kernel. We can then substitute this effective population density for the actual population density in the density-dependent component of the growth function of any spatial population model, and we would have a spatial model that incorporates intraspecific competition in the form of a quasi-local interaction. For example, in Sasaki's paper (1997) the classical Lotka-Volterra competition equation with diffusion is extended to a neighbourhood competition model using a Gaussian N(0,o) quasilocal interaction kernel, resulting in dN %-=R( ) --—{ at a r x N V2TCO" J (*-y) e~ ^ 2 N(t,y)dy}-N dN 2 + D— OX (1.10) L where D is the diffusion constant, a is the mortality due to unit population density and R(x) is the per capita net growth rate at x [22]. (In this model resource availability varies in space.) With this model, Sasaki demonstrated a number of interesting consequences of adding quasi-local interactions to spatial population models, including how the addition of a quasi-local interaction could allow the pattern of spatial distribution to become strongly clumped when only a negligibly small variation in resource availability is present. In addition, when this model was applied to a population expanding in space, he was able to produce shapes for the travelling waves that were not possible with the basic model, including a quasi-periodic travelling wave with strongly clumped spatial structure stably maintained behind the front of the wave [22]. 1.4 Invasion Models Including Quasi-Local Interactions: Open Questions We could also add a quasi-local interaction to integrodifference models of invasion processes. If we replace N, (y) with the effective population density function Chapter 1. Introduction to Invasion Models and Quasi-Local Interactions 8 (1.9) evaluated at y into the density-dependent growth component of the integrodifference equation (1.7) we have a discrete-time spatial model #,+,(*) = / k{\x- \)f{N,(y),N . (y))dy y eff t (1.11) that describes the invasion of continuous space by a population of organisms that exhibits intraspecific competition in the form of a quasi-local interaction. The dynamics of this model need to be examined so as to determine whether adding quasi-local interactions to integrodifference invasion models can significantly alter the resulting dynamics. That is, do the salient features of such invasion models change when a quasi-local interaction is added? Based on known behaviours of the precursor models, several questions need to be addressed. The properties of this new model that I intend to examine fall into four categories: 1. Invasion Speed To ecologists, the rate of spread of an invading species is often the most critical element of a biological invasion [7, 23]. Since many invasions are undesirable, predictionsof the rate of spread can be valuable when devising containment plans, performing damage assessments, and for forecasting when the invasion will reach a particular location. In addition, the travelling wave solutions and the constant asymptotic speed of propagation for traditional integrodifference models also renders the rate of spread of the invasion a feature of mathematical interest. The primary questions I would like to answer regarding the invasion speed of an integrodifference model including a quasi-local interaction are: • Does the addition of a quasi-local interaction speed up or slow down the invasion initially? • Is the asymptotic invasion speed different from that expected without a neighbourhood effect, and how does the invasion speed achieved relate to Weinberger's formula? 2. Wavefront Shape Although the shape of the wavefront is not often very important from the ecological perspective, particularly because real invasions do not usually create smooth and well-defined wavefronts, the wavefront shape is important mathematically because changes in the shape of the wavefront in the deterministic model can often Chapter 1. Introduction to Invasion Models and Quasi-Local Interactions 9 reflect fundamental changes in the structure of the underlying model. For instance, in diffusion models, making the dispersal component density-dependent has been shown to significantly alter the shape of the wavefront [8]. 1 am therefore interested in examining changes in the shape of the wavefront when a quasi-local interaction is added to an integrodifference invasion model. I will attempt to answer the following questions about the wavefront shape: • Does the addition of a quasi-local interaction alter the shape of the travelling waves? • If so, how does the new wavefront shape depend on the parameters of the quasi-local interaction kernel? 3. Spatial Patterns The spatial pattern of biological invasions can be quite simple or complex, depending on the properties of the invading organism, the distribution of resources through space, and the distribution of interacting species (predators, competitors, pathogens and parasites). Moreover, the spatial pattern formed by an invasion is important to predict and observe because the level of impact the invader will have on the environment, humans, and other species will depend on the density of the invader. Invasion models to date have had relatively little success reproducing the complex spatial patterns formed by some biological invasions, and I am interested in seeing whether the addition of a quasi-local interaction to integrodifference models can produce more complex spatial patterns [16]. I therefore pose the following questions regarding the effect of introducing a quasi-local interaction on the spatial pattern formed: • Do quasi-local interactions alter the spatial patterns formed by the invading population? For instance, is there more or less clumping and is the carrying capacity the same? • If the spatial pattern differs, what are the relationships between the parameters of quasi-local interaction kernels and spatial pattern formation? 4. Comparison with a Stochastic Individual-Based Analogue Although deterministic models such as this are typically used to predict spatial patterns and invasion speeds for ecological invasions, the dynamics observed in the deterministic model are not always present in empirical studies, or even in Chapter 1. Introduction to Invasion Models and Quasi-Local Interactions stochastic and individual-based models. Therefore, this research will also attempt to determine whether a stochastic and individual-based model of this same system would display the same dynamics, and if it responds to the addition of a quasilocal interaction in the same way. In particular: • Is the speed of the invasion the same in the stochastic simulations as for the deterministic simulations? • Is the spatial pattern (carrying capacity and homogeneity) that is formed different when the simulation is stochastic and individual-based? Is the shape of the wavefront the same in the stochastic simulations as in the deterministic simulations? 10 Chapter 2. Methods 11 Chapter 2 Methods To answer the questions posed in the previous section, I decided to principally examine this model by numerical simulations. There are a number of reasons for approaching the problem in this way. First, numerical simulations would allow me to examine all of the properties of interest (invasion speed, wavefront shape, and spatial pattern). Secondly, it would provide me with the opportunity to examine the initial behaviour of the model, as well as approximate the asymptotic behaviour. Third, simulating the population numerically would allow me to examine its behaviour as the parameters of the quasi-local interaction kernel are changed, making it possible to determine how the various features depend on these parameters. Finally, numerical simulations were necessary for constructing and analyzing a stochastic, individual-based analogue to the deterministic system. Two basic types of simulations were constructed: a purely deterministic integrodifference invasion process described by the recursion (1.11), and a stochastic individual-based system that will be described in detail below. I should note that to maximize computational efficiency all simulations were 1-dimensional in space. 2.1 Model System Chosen for Simulations For the numerical simulations, it was necessary to choose a particular functional form for the growth function, the dispersal kernel and the quasi-local interaction kernel. Because of its simplicity and its frequent use in biological models, the growth function I have chosen to use for my simulations is the Beverton-Holt stockrecruitment relationship [2]: W / NN XN,(x) + aN,(x) The parameters of this model are X > 0 which is the intrinsic rate of increase, and a > 0 which scales the carrying capacity (the carrying capacity/equilibrium density is I should note here that although difference equations for population 12 Chapter 2. Methods growth can potentially exhibit complex dynamics, including periodic and chaotic behaviour, there is no complexity in the Beverton-Holt model. Under this model, provided the intrinsic rate of growth X is greater than 1, an isolated population will always grow or shrink monotonically towards the carrying capacity which is a globally stable equilibrium. Correspondingly, classical integrodifference models with the growth component described by the Beverton-Holt model will have very stable dynamics and will not exhibit complexity in spatial pattern formation or the shape of the travelling waves. In addition, the Beverton-Holt function (without a quasi-local interaction) can easily be shown to satisfy the requirements (i) and (ii) for Weinberger's wave speed theorems: Verification of(i): f'(N) > 0 V N > 0. X-{\+aN)-XN-a (\+aN) 2 (1+aN) 2 > 0 VJV>0 Verification of(ii): f[N) < f(0)N V N > 0. 1 + aN (since > 1 => - L - < i 1+aN XN < => (since a > 0) (since X > 0) XN f(N) < XN /(AO < f(0)N (since f(0) If we write the Beverton-Holt growth function in the form f(N (x)) =N (x)-g(N (x))=N (x) t l t l X>0) 1 \+aN,{x) = X) 13 Chapter 2. Methods we can see that the density-dependent component, or in biological terms the per capita growth rate, of this function is g{N,(x)) = Therefore, to add a quasi-local interaction to the Beverton-Holt growth function we would simply replace A^(JC) in this function with the effective population density at x, N ffj{x), and so the form of the growth function that was used in the simulations including a quasi-local interaction is: e AN,(x),N (x))- l+aN ,(x)' eW efL The quasi-local interaction kernel chosen for the simulations was the N(0, c ) function l c C(d) = e '2no c which leads to the following definition of the effective population density: e fM N f = -^=~ r N ' ^ e 2 a I y- d Therefore, the effective population density N ffj{x) at a point x depends on a single parameter a that indicates how rapidly the competitive effect of neighbours falls off with distance. A low value of o would mean that the the impact of neighbours falls of quickly with distance, so only neighbours very nearby really matter. In contrast, a high ovvalue would indicate a more gradual decrease in impact with distance, so neighbours quite far away have nearly as great an effect as neighbours nearby. O f course, it should be noted here that the quasi-local interaction kernel is normalized in order to achieve the same effective population density when all local populations are at carrying capacity, regardless of the value of o . It should also be noted that with this quasi-local interaction kernel the effective population density at a point x in a population that is not at carrying capacity everywhere will differ depending on the value of a . For example, i f e c c c c , . N,(x)=l f 1 i f | x | < 1, 1 0 ' otherwise. 14 Chapter 2. Methods then, 1 f v = -== / e'^dy V27w-i ] o = l c -> N {0) effJ rj = 10 -> N (0) c 2 = -= efLt / = 0.6826 = 0.0796. e'^dy J-\ V271 • 10 It is therefore expected that the behaviour of this model, and hence of the simulations, will vary as the width of the quasi-local interaction kernel, G , is varied. Any dispersal kernel with exponentially bounded tails satisfies condition (iii) for Weinberger's theorem on the asymptotic invasion speed. I chose a N(0,Oj) dispersal kernel for my simulations because it is the most frequently used in invasion models, including reaction-diffusion models. As well, it is easy to show that the N(0, Gd) dispersal kernel c m ~- 1 '2KG 2 d satisfies c o n d i t i o n ( i i i ) . exists for some interval oft, about 0 . Verification of (iii): k(t,) = f^kdz^e^dz %&) = r k{\z\)e^dz J —oo 1 2%Gd i r ^e^dz -+ttf-*?M d e 2%Gd • i -2 £ e r —— / V((*-<&) )+<# ) 2 1 1 e 71 kit,) = which exists for t, G (—°°,°°). e+ e e~" -\f2Gddu 2 irt 2 2 2c e 2%Gd 2%Gd dz - c o n • y/% 15 Chapter 2. Methods From this simple form for k(E), which is just the moment generating function for a N(0,Gd) distribution, we can see that the constant asymptotic speed of propagation itt 1 = ?< ^>o F£ M I + -2 p> for this integrodifference invasion model without a quasi-local interaction is quite easy to determine. If we define then Setting this equal to zero we have that °d giving cj* = "^g"^ as the only positive critical point. We can verify that there is a minimum at cj* by noting that -P-( W 2ln{\) ^ > 0 . = Thus, the asymptotic speed of propagation for this integrodifference system with a N(0,Od) dispersal kernel and without a quasi-local interaction is = c* G y/ln(k) d = o ^2ln{\). d | o ^ln(X) d (2.1) 16 Chapter 2. Methods 2.2 Deterministic Simulations The goal of the deterministic simulations is to simulate as closely as possible the model including a quasi-local interaction (2.2) with the function forms described above for a specified number of generations, as well as to estimate the asymptotic speed of propagation. Therefore, I wrote a C++ computer program to calculate the population densities via this recursion relation for a fixed number of generations and on a fixed grid of spatial coordinates. A copy of the source code for this program can be found in Appendix A . The general flow of the program is quite simple and is described below. Given the following: • JVo(jc): the initial (/ = 0) population densities at all spatial coordinates • n: the total number of generations • Oj: the standard deviation of the dispersal kernel • o": the standard deviation of the quasi-local interaction kernel c • a and X: the parameters for the Beverton-Holt stock-recruitment relationship Then, for each generation t = 0 , 1 , 2 , 3 , . . . , n: for each spatial coordinate x: 1. Calculate the effective population density atx: 2. Calculate the growth/post-reproduction population density atx: f(N {x),N ,{x)) t eff XNt(x) 1 +a/V e//)/ (x) Chapter 2. Methods 17 3. Calculate the population density atx after redistribution/movement: 1 ,00 N (x) = - = ^ _(±Z±£ e l+l M f(N,(z),N {z))dz eW this is the population density at x in generation The composite trapezoidal rule r ~ / f(x)dx^h-J f(a b m j l t+\. h + ih) + -(f(a)+f(b)) : (h — d) h= — to approximate the integral of the function f(x) over the interval [a, b] using the function values at m + 1 equally-spaced points, was used in all cases for the numerical integrations required in steps 1 and 3 [10, 21]. Since this is intended to be a means for examining the features of interest and comparing them to the features of the model excluding the quasi-local interaction, I have also written routines to track the following variables throughout the simulations: • Distance of the wavefront from the origin at each time step: It should be noted that since the dispersal kernel has infinite tails, after the first generation there is always a non-zero population density at every spatial coordinate. The "front" of the invasion is therefore considered to be the point furthest from the origin at which a preset, arbitrary density threshold has been exceeded. In all my simulations this density threshold was set to 0.001. • Invasion Speed for each value of a : Ideally, the speed of the invasion at the end of a simulation is the difference between the location of the wavefront in the final generation, and its location in the previous generation. However, when mesh size is large, this can provide only a very coarse estimate of the invasion speed (for instance only to 1 decimal place for most of my simulations). Therefore, unless otherwise noted, invasion speed at the end of a simulation is therefore calculated as the mean displacement per generation of the invasion wave over the last half of the simulated generations. c Simulations were also run assuming there was no quasi-local interaction, so that I could compare the behaviour to the simulations with a quasi-local interaction. In this case, the program above was modified to have 7V yy,(x) = N (x) in step 1. e t Due to limited time and computing power, it was necessary to limit the scope of the deterministic simulations. The deterministic simulations were run with the following assumptions and limitations: 18 Chapter 2. Methods 1. The parameters X and a in the Beverton-Holt growth function were fixed at X = 2 and a = 1 for most simulations and a retrospective sensitivity analysis was performed to ensure that changing these parameters would not qualitatively alter the nature of any trends observed. 2. The parameter Gj was fixed at 1.0 for most simulations, and later runs with Gj = 0.5,0.75,1.25,1.5,1.75 and 2.0 were conducted to verify that the qualitative behaviour of the model was independent of Gj. 3. A l l simulations were run for a minimum of 200 generations. Some simulations (o = 1,10 and 100) were run for 500 generations in order to examine c the persistence of initial trends. 4. The spatial grid over which the population densities were calculated and the integrations were performed was fixed with a mesh size (spacing between grid points) of 0.1 for most simulations. The effect of changing the mesh size was later examined by running several simulations with a mesh size of 0.01. 5. Only two different initial population density configurations were examined: (A) NQ(X) = 1.2 (greater than carrying capacity density) on [—0.1,0.1] and (B) No(x) = 0.1 (below carrying capacity density) on [—0.1,0.1]. 6. Finally, the simulations were run for 100 equally-spaced values of G , from G = 0.1 to G = 10.0, as well as the extreme case G = 100.0. c c 2.3 c c Stochastic Simulations The deterministic invasion model is somewhat unrealistic in a number of ways. First, only population densities are tracked, and it is assumed that population size is infinite and that population density is a continuous variable. However, most populations occur as discrete individuals and fractions of individuals cannot migrate, be born, or suffer from mortality. Also, the deterministic model incorporates no variation in individual behaviour and fitness. The addition of these factors to other integrodifference models has been shown to greatly alter the dynamics of the population [14, 16]. It is therefore of interest to determine how the effects of quasi-local interactions seen in the deterministic model will translate to a stochastic individual-based model. 19 Chapter 2. Methods To explore this question, I constructed a computer simulation, again written in C++, intended to be the stochastic and individual-based analogue of the deterministic simulations from section 2.2, again for a fixed number of generations and on a fixed grid of spatial coordinates. Note that in this case the grid points of the program correspond in some sense to "bins", with each bin corresponding to a section of the real line and the width of this section determined by the mesh size h. It is also important to note that this discretization of the real line means that distances between individuals are only approximations, with accuracy determined by the mesh size. In particular, individuals that move to only slightly different locations can end up in the same "bin" and therefore be treated as if they were at the exact same spatial coordinate. A copy of the source code for this program can be found in Appendix B. The general flow of the program is described below. Given the following: • NQ(X): the initial (/ = 0) population sizes at all spatial coordinates • n: the total number of generations • 0^: the standard deviation of the dispersal kernel • G : the standard deviation of the quasi-local interaction kernel C • a and X: the parameters for the Beverton-Holt stock-recruitment relationship Then, for each generation t = 0,1,2,3,...,n: for each spatial coordinate/grid point x currently occupied: 1. Calculate the effective population atx: 1 (*-.y) N f/, (x) = h •'VNtiy) • —f=—e V 27t0 e y c 2. Calculate the survival probability at x: 2 2(j2 , h = mesh size Chapter 2. Methods 20 3. Determine how many of the individuals atx survive: - For each individual at x a random number is drawn from a Uniform [0,1] distribution, and compared to the survival probability at x. If it is greater than the survival probability the individual dies, otherwise it survives. 4. Calculate the number of offspring at x: - For each individual still alive at x, a random number is drawn from a Poisson distribution with a mean of X 5. Remove the parents and relocate the offspring: - The number of adults at all spatial coordinates is reset to zero. Then, for each offspring at x, a random number, z, is drawn from a JV(0, ov) distribution and the number of new adults (kept distinct temporarily from the old adults so they do not get zeroed) at x + z (rounded to nearest mesh unit) is incremented by one. For the stochastic simulations 1 have tracked the following variables throughout the simulations: • Location of the furthest individual from the origin: This is used as a proxy for the "front" of the invasion wave. The reasons for choosing the furthest individual as a means to track the invasion wave are two-fold. First, it is extremely convenient computationally as it requires no other knowledge of population size or distribution. Secondly, from an applied perspective, the location of the furthest individual in the population is often seen as the leading edge of the invasion. • Invasion speed for each value of o : c Invasion speed at the end of each stochastic simulation was also calculated as the mean displacement per generation of the invasion wave's "front" over the last half of the simulated generations. • Population size at each time step: To identify whether the quasi-local interaction affects population size. • Locations of all individuals at all time steps: To be used for comparing the average density at various time steps and spatial coordinates. • Whether a particular run/population went extinct before completion: To be used for comparing extinction rates between various simulations. Chapter 2. Methods 21 Since the purpose of the stochastic simulations was only to examine the differences between the deterministic model and its stochastic analogue, the scope of the stochastic simulations was kept quite limited. In particular, the following assumptions and limitations were made in the stochastic simulations I ran: 1. The parameters X and a in the Beverton-Holt growth function were fixed at A. = 2.0 and a = 1.0 for all simulations with a quasi-local interaction. 2. A l l simulations were started with a single individual at the origin. 3. The dispersal kernel standard deviation was fixed at O"^ = 1.0 for all simulations. 4. The performance of the stochastic simulations was found to be sensitive to the mesh size used. I therefore ran the stochastic simulations with mesh sizes of 0.1, 0.05, 0.025 and 0.01. 5. A l l simulations with a mesh size of 0.1 were run for 200 generations. Simulations with a mesh size of 0.05 were run for 100 generations and all other simulations were run for 50 generations only due to processor time limitations. 6. As with the deterministic case, most simulations were run for, 100 equallyspaced values of o , from o = 0.1 to o = 10.0. Due to the high computation time required, however, it was only possible to conduct the mesh size 0.01 runs for o = 0.1,1.1,2.1,3.1,4.1,5.1,6.1,7.1,8.1, and 9.1. c c c c As with the deterministic simulations, I constructed a version of the stochastic simulation without the quasi-local interaction, in this case by replacing the effective population size at x calculated in step 1 with the actual number of individuals at the grid point x. Unfortunately, in the simulations without a quasi-local interaction, using the same parameter values in the growth function as was used for most of the deterministic simulations created a carrying capacity of 1 individual per grid point, resulting in very high mortality whenever two or more individuals dispersed to the same grid point. Consequently a large proportion of the populations eventually went extinct. I therefore also ran the simulations that did not include a quasi-local interaction with an intrinsic growth rate of X = 6.0 and a mesh size of 0.01, as these two changes would greatly increase the population size at any given time, and therefore decrease the probability of extinction due to stochastic factors. 22 Chapter 3. Results Chapter 3 Results 3.1 Deterministic Simulations 3.1.1 Simulations Without a Quasi-Local Interaction The simulations with no quasi-local interaction behaved as predicted, producing a density wave spreading across space, as shown in Figure 3.1. 1.2 i 1 1 1 1 1 1 1 1 x (spatial coordinate) Figure 3.1: Travelling Waves for the Deterministic Simulation Without a QuasiLocal Interaction. These travelling waves are produced by an integrodifference equation with Beverton-Holt local dynamics (a = 1, X = 2), initial condition (B) and a N(0,1) dispersal kernel. The density curves shown are at 5 generation intervals. 23 Chapter 3. Results (a)/= 0-500 (b) 7 = 0 - 2 0 Generation Generation Figure 3.2: Wavefront Distance from Origin over Time for the Deterministic Simulation Without a Quasi-Local Interaction. Produced by the deterministic simulation of the integrodifference equation with Beverton-Holt local dynamics (a = 1, X = 2), initial condition (A) and a 7V(0,1) dispersal kernel. There are a number of features to note about the behaviour of this simulation, and consequently of the underlying model. First, we can see that after only a few generations the population density near the origin reaches the carrying capacity, which is in the Beverton-Holt equation. Once carrying capacity at the origin is reached, the density wave splits into two symmetric waves moving in opposite directions, behind each of which the density remains at carrying capacity thereafter. It is easy to see from Figure 3.1 why these waves are referred to as "travelling waves", since the wavefront shape remains constant through time and is simply translated along the x-axis each generation. We can also see from this figure that, after some initial redistribution, the distance between the density waves at equally spaced time intervals is approximately the same. The distance between two successive density waves is in fact the "asymptotic speed of propagation" referred to in Weinberger's theorem, and can be thought of as the invasion speed in biological invasion models. For the deterministic simulations, the distance between successive waves did indeed converge asymptotically toward a constant value, as can be seen in Figure 3.2 (a). In Figure 3.2 (b), we can also see that the invasion speed is initially faster than the asymptotic invasion speed in these simulations, causing the graph to be slightly concave down. This is due to the initial population density surrounding the origin Chapter 3. Results 24 being dispersed, and immediately causing many nearby grid points to exceed the threshold density limit. The result is that the invasion appears to be spreading more quickly initially and slowing down as it progresses. The asymptotic invasion speed was approached from below for all simulations without a quasi-local interaction, and the speed approached does appear to be the same as that theoretically predicted by the equation (2.1) for each of these simulations. For instance, in the simulation with a = 1, X = 2, initial conditions (A), a 7V(0,1) dispersal kernel and a mesh size of 0.1, after 500 generations the calculated average distance the wavefront moved per time step was within 0.005 units of the value predicted by (2.1). 3.1.2 Simulations With a Quasi-Local Interaction The deterministic simulations that included a quasi-local interaction also produced symmetric density waves expanding out from the origin. Simulations with a standard deviation of the quasi-local interaction kernel that was less than 1.2 times that of the dispersal kernel had a wavefront shape that was qualitatively indistinguishable from that produced by the simulations without a quasi-local interaction. Simulations with o > 1.2 • Gj, however, produced travelling waves with a distinctly different shape, and correspondingly differed in spatial pattern and initial invasion speeds. Instead of the travelling waves shown in Figure 3.1, simulations with parameter values that exceeded this threshold of ^ « 1.2 produced travelling waves with a shape similar to that of the quasi-periodic waves found by Sasaki (1997) [22]. A typical example of such travelling waves is shown in Figure 3.3. Similarly to my threshold, Sasaki (1997) found a more precise threshold of « 1.14 between the ratio of the standard deviation of the quasi-local interaction kernel and of the mean lifetime diffusion distance. If his parameters exceeded this ratio, Sasaki also found that the population expanded through space as a quasi-periodic travelling wave rather than as a simple monotonic wavefront [22]. From Figure 3.3 we can see that as well as the difference in wavefront shape, there are a number of ways in which the behaviour of this model differs from that without a quasi-local interaction. I will address each difference in turn, as well as discuss how the various properties change depending on the width of the quasi-local interaction kernel. c 25 Chapter 3. Results 1.6 I 1 -30 -20 1 r -10 0 10 x (spatial coordinate) 20 30 Figure 3.3: Population Density Waves for the First 25 Generations of the Deterministic Simulation With a Quasi-Local Interaction. Produced by the deterministic simulation of the integrodifference equation with Beverton-Holt local dynamics (a = I, X = 2), initial condition (B), a7V(0,1) dispersal kernel and a 7V(0,5) quasi-local interaction kernel. 1. Invasion Speed For all values of o" , and for both initial conditions, the invasion speed for simulations including a quasi-local interaction still asymptotically approached a constant value. In addition, as shown in Figure 3.4, for all o values and for both initial conditions, the constant invasion speed approached appears to be the same constant as that approached by the deterministic simulations without a quasi-local interaction. Although it does not appear in this figure that the constant approached is exactly equal to that predicted by Weinberger's theorem for the model without the quasilocal interaction, the difference is most likely due to the limitation in precision from using a mesh size of 0.1 and averaging over only 250 wavefront translations. c c We can see in Figure 3.5, however, that for some values of a , o > 1.2 • 0^ in my simulations, the speed of the invasion actually differs considerably from that c c Chapter 3. Results 26 1.18 Figure 3.4: Simulation Invasion Speeds over Time for the Deterministic Simulations. Produced by the deterministic simulation of the integrodifference equation with Beverton-Holt local dynamics (a = 1, X = 2), initial conditions (A), a 7V(0,1) dispersal kernel and a N(0,o ) quasilocal interaction kernel. The simulation invasion speeds are calculated as the average distance between successive wavefronts for the previous 250 generations. c of the simulation with no quasi-local interaction for several generations near the beginning of the invasion. For these values of o the rate at which new territory is invaded is lower than that of simulations with a < 1.2 • Oj or without a quasi-local interaction. The source of this difference in initial invasion speeds for different 0 values is the differential effect of the quasi-local interaction kernel in the initial generations of the invasion. In these initial generations, very little total territory is significantly occupied, and populations with a "wide" quasi-local interaction kernel, ie. a high value of o , benefit from the empty space outside of the invasion wave. The result is that population density increases much more quickly near the origin when o is large than when o is small. For values of 0 > 1.2 • Oj this increased initial growth causes the population density near the origin to overshoot c c C c c c C 27 Chapter 3. Results the carrying capacity, as shown in Figure 3.3, with larger values of o corresponding to a greater degree of overcompensation. This overshooting effect in fact negatively impacts population growth in the tails of the invasion wave, and results in decreased invasion speeds for larger o" values. As we can also see in Figure 3.3, the increased population density near the origin eventually decreases to the expected carrying capacity as the invasion progresses and more territory is occupied, and the invasion speeds for all values of o approach those of the simulation without a quasi-local interaction. 6 c c Figure 3.5: Simulation Invasion Speeds vs. Time for the First 30 Generations of the Deterministic Simulations. Produced by the deterministic simulation of the integrodifference equation with Beverton-Holt local dynamics (a — I, X = 2), initial conditions (B), a N(0,1) dispersal kernel and a 7V(0,o ) quasi-local interaction kernel. Note that for these simulations mesh size was 0.005 and in this figure invasion speed in generation / is calculated as the absolute difference between the location of the wave's "front" in generation / and its location in generation c t-l. 28 Chapter 3. Results 2. Wavefront Shape From Figure 3.3 we can see that the shape of the wavefront for the simulations with the quasi-local interaction with o > 1.2 • ov differs from the shape of the wavefront when no quasi-local interaction is included or when G < 1.2 Oj. Rather than a simple, Gaussian-shape monotonic descent from carrying capacity to zero population density, the density waves produced by these simulations have a damped oscillatory wavefront, which is more clearly seen in Figure 3.6. c C Figure 3.6: Density Waves at Generation 50 for the Deterministic Simulation with a Quasi-Local Interaction. Produced by the deterministic simulation of the integrodifference equation with Beverton-Holt local dynamics (a = 1, X = 2), initial condition (A), a N(0,1) dispersal kernel and a N(0,o ) quasi-local interaction kernel. c Also, the amplitude of the oscillations at the wavefront differs considerably depending on the value of o . As we can see in Figure 3.6, larger values of o result in higher amplitude oscillations at the wavefront. With regards to the long-term behaviour of this model, it should be noted that the oscillations produced by adding a quasi-local interaction to the simulation are c c 29 Chapter 3. Results maintained, after some initial variation, from generation to generation and are not damped in time. The asymptotic height of the wavefront peak depends on the width of the quasi-local interaction kernel, with smaller values of 0 corresponding to lower wavefront peaks. Figure 3.7 illustrates the fact that peak height does settle to a constant value, as well as how the asymptotic peak height depends on C 3.5 o o a o < 1.2 = 2.5 = 5.0 = 7.5 c = 10.0 3 O) CD X 2.5 c c c c c CO CD 0_ 2 CO CD Q E x CO 1.5 1 0.5 100 50 150 200 Generation Figure 3.7: Height of the Wavefront Peak over Time for the Deterministic Simulation With a Quasi-Local Interaction. Produced by the deterministic simulation of the integrodifference equation with Beverton-Holt local dynamics (a = 1, X = 2), initial condition (A), a7V(0,1) dispersal kernel and a 7V(0, o" ) quasi-local interaction kernel. c Heuristically, it is not difficult to understand why this altered wavefront shape appears when o is large relative to c</. If the wavefront shape was the same monotonic decrease as when there is no quasi-local interaction then coordinates near the top edge of wavefront would have an effective population density much lower than the actual density at these coordinates, as shown in Figure 3.8 (a). This decreased effective population density would result in a greater population growth at the coordinates near the top edge of the wavefront. Finally, since o"^ is small c 30 Chapter 3. Results (a) (b) 140 Figure 3.8: Formation of a Wavefront Peak for the Deterministic Simulation With a Quasi-Local Interaction, (a) Actual population density and effective population density at generation 0. (b) Population density near the front of the invasion wave. Produced by the deterministic simulation of the integrodifference equation with Beverton-Holt local dynamics (a = 1, A, = 6), a JV(0,1) dispersal kernel, a JV(0,10) quasi-local interaction kernel, a mesh size of 0.1 and an initial No(x) population density distribution created by the 100th generation of the deterministic simulation without a quasi-local interaction. relative to o the dispersal kernel will only redistribute this additional growth to the relatively local area, resulting in a greater population density in this area at the start of the next generation. Figure 3.8 (b) shows an example of the growth of the wavefront peak in a simulation that was started with an initial density curve created by the 100th generation of the deterministic simulation without a quasilocal interaction. As the wavefront peak forms, the increased population density at this peak causes the effective population density to increase, and after sufficiently many time steps the height of the peak stabilizes in the sense that the decrease in the effective population density from being near the edge is offset by the increased local population density. O f course, the damped oscillations in the wave shape are caused by the quasi-local interaction as well because this spatial coupling causes the effect of this peak of very high density to be felt by neighbouring points, resulting in lower growth at these points. This effect propagates itself down the invasion wave toward the origin, however it is dissipated in part by the dispersal kernel at each generation. It is therefore not surprising that the wavefront peak is higher and the oscillations have a higher amplitude when o is increased. c c 31 Chapter 3. Results 3. Spatial Pattern Since the wavefront shape is oscillatory i f a quasi-local interaction is included, it is apparent that the spatial pattern formed near the "front" of the invasion is a more patchy distribution than when no quasi-local interaction is added, with some areas having higher densities than others. Furthermore, this patchiness depends on the magnitude of o , with a more patchy distribution when rj is large. Additionally, since the wavefront shape was maintained in all simulations, the population density near the front of the wave would always be greater than inside the wave. Since in his model Sasaki (1997) was able to produce a quasi-periodic travelling wave with stably maintained and strongly clumped periodical structure behind the front of the wave, I thought it may be possible that a value of G large enough could produce undamped oscillations in the density wave, and thereby a permanently maintained patchy distribution [22]. However, values of o up to 100 were tested, and all produced oscillations that were spatially damped toward the origin. Therefore, when the simulations were run for enough generations that the wavefront was sufficiently distant, the density at any x-coordinate and for any value of <5 settled to the same constant carrying capacity as in the simulation with no quasi-local interaction. It is possible however that simulations were simply not run for sufficiently many generations, or the ratio between the parameters o and was not sufficiently high to generate a permanently patchy distribution. c c C c C c 3.2 3.2.1 Stochastic Simulations Simulations Without a Quasi-Local Interaction There are two ways in which I examined the stochastic simulations. The first method was to examine the behaviour of single runs of the simulation, since this represents the behaviour of a single invasion event under this model. A n example of a typical single simulation is shown in Figure 3.9. As can be seen in Figure 3.9, the population is spreading across space, and in a manner somewhat similar to the deterministic simulations. Two key differences should be noted. The first and most obvious difference is that only a discrete number of individuals exist at each spatial location, making both the wavefront's shape and location much more difficult to distinguish. Secondly, most spatial coordinates at any time step do not contain the number of individuals predicted by the carrying capacity for the Beverton-Holt equation. As we can see in Figure 3.9, even at grid points/spatial coordinates that are far behind the wavefront and 32 Chapter 3. Results a)/ = 10 -80 -60 c) / = 30 -80 -60 • / = 20 -40 -20 0 20 40 60 80 x (spatial coordinate) -40 -20 0 20 40 x (spatial coordinate) -80 -60 d) t = 40 60 80 -80 -60 -40 -20 0 20 40 x (spatial coordinate) -40 -20 0 20 40 60 80 x (spatial coordinate) Figure 3.9: Spread of a Single Population for a Stochastic Simulation Without a Quasi-Local Interaction. Produced by the stochastic simulation of the integrodifference equation with Beverton-Holt local dynamics (a = 1, X = 6), a/V(0,1) dispersal kernel and a mesh size of 0.01. Chapter 3. Results 33 therefore would be at carrying capacity in the deterministic case had as few as 0 individuals and as many as 17 in a single "bin" (carrying capacity in Figure 3.9 is 5 individuals per grid point). In addition, due to the relatively great degree of variability from simulation to simulation, it is difficult to ascertain whether differences between the deterministic and stochastic simulations are caused by fundamental differences in the invasion process, or if they are merely a reflection of using a non-representative stochastic run in the comparison. Since individual runs of the simulation are so difficult to analyze for similarities and differences in the shape, location and hence speed of the invasion waves, f also examined the average behaviour of a large number of runs of each type of simulation. The density graphs of the averaged population sizes would give a better defined invasion wave and using the mean behaviour of the stochastic process would give a more useful illustration of how the invasion would be expected to progress. Unless indicated otherwise, all average values for the stochastic simulations are the mean of 200 iterations of each stochastic simulation, and extinct populations are excluded from all averages. In fact, when the number of individuals at each spatial coordinate and at each time step is averaged over a large number of simulation runs, the resulting population density distribution looks much more like the deterministic simulations without a quasi-local interaction. As can be seen in Figure 3.10, travelling density waves do appear for the stochastic simulations, and the wavefront shape and spatial pattern created by the stochastic simulations without a quasi-local interaction is in fact the same as that predicted by the deterministic simulations. In addition, the speed of the travelling waves, measured as the mean distance between the furthest individual from the origin in consecutive time steps, does in fact appear to approach a constant value, a result consistent with other stochastic models and simulations [14]. Interestingly, however, the constant value approached for the stochastic simulations is significantly different from that predicted by the invasion speed equation (2.1) and differs considerably also from the speed of the travelling waves in the deterministic simulations without a quasi-local interaction. Specifically, the invasion speed for the stochastic simulations is considerably lower than that predicted for the deterministic model, an attribute of stochastic models long conjectured and borne out in a number of other stochastic simulations [14, 20]. Also, in Figure 3.11 we can see that the difference in the stochastic simulation invasion speed from the deterministic expected value decreases as the mesh size is decreased. This is not surprising because decreasing the mesh size allows for more local populations per unit length, thereby creating both a greater Chapter 3. Results 34 x (spatial coordinate) Figure 3.10: Travelling Waves for the Stochastic Simulation Without a QuasiLocal Interaction. Produced by the stochastic simulation of the integrodifference equation with Beverton-Holt local dynamics (a = 1, X = 6), a 7V(0,1) dispersal kernel and a mesh size of 0.01. The population densities at each time step are calculated as the average of 1000 runs of the simulation (extinct populations are excluded from this average). number of individuals per unit length, and a greater total number of individuals in the population at any time step. Thus, increasing the mesh size brings the stochastic simulation closer in line to the deterministic assumption of infinite population size. 3.2.2 Simulations With a Quasi-Local Interaction As with the stochastic simulations that did not include a quasi-local interaction, I examined both the single run and expected/average behaviour of the stochastic simulations with a quasi-local interaction. In the single runs it was again difficult to find differences in the invasion wave shape because of the large amount of 35 Chapter 3. Results 3 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.I h (mesh size) Figure 3.11: Difference in Simulation Invasion Speeds from the Theoretical Deterministic Value for the Stochastic Simulation Without Quasi-Local Interactions at Various Mesh Sizes. Produced by the stochastic simulation of the integrodifference equation with Beverton-Holt local dynamics (a = 1, X = 6), a N(0,1) dispersal kernel and a mesh size of h. The invasion speed at each mesh size is calculated as the mean distance between furthest individuals in generations 50 to 100. variation in population size at each coordinate, but when a large number of runs were averaged for each value of o , the resolution of the invasion waves improved. When examining this mean behaviour, the stochastic simulations that included a quasi-local interaction were found in many ways to be qualitatively quite similar to the corresponding deterministic simulations, but did differ in some way for each of the features of interest. c 1. Invasion Speed As with the simulations without a quasi-local interaction, the most significant difference in the behaviour of the stochastic simulations with a quasi-local interac- 36 Chapter 3. Results tion from that of the deterministic simulations is that the invasion speeds achieved by the stochastic simulations are significantly less than both those predicted by the equation (2.1) and those achieved in the deterministic simulations. When comparing the initial invasion speeds of stochastic simulations with different values of 0 , the invasion speeds achieved seem to follow a pattern not unlike that for the initial phases of the deterministic simulations. In particular, i f a is greater than 1 the initial invasion speeds achieved decrease as o is increased, just as in the deterministic case. We can see this similarity in initial pattern clearly in Figure 3.12(a) which shows the invasion speeds achieved during the first 30 generations for several values of 0 . For a more detailed view of how the initial invasion speeds change with o" , Figure 3.12(b) shows the relationship between o and the invasion speed for the stochastic simulations after 50 generations. We can also see from Figure 3.12(a), that compared to the deterministic simulations, the differences in invasion speeds at different o" values appear to be much greater in magnitude and to persist for many more generations. In fact, when examining the long term invasion speeds of the stochastic simulations, as in Figure 3.13, I found that these differences in invasion speeds for various o" values were still present even after 200 generations (the maximum number of generations for which the stochastic simulations were run). Furthermore, by examining the location of the wavefront as the invasion progresses across the landscape, as in Figure 3.14, we can see that for each value of o" the rate of spread does still appear to tend toward a constant value, and that for each value of 0" there does indeed appear to be a different constant asymptotic rate of spread. (Note that the slope of the line for each value of a is approximately equal to the invasion speed at that time step). The fact that the stochastic individual-based simulations achieve different asymptotic invasion speeds depending on o" is both a significant and interesting result. It is especially interesting because the deterministic simulations do not show this behaviour. Since the only stage of the stochastic simulation in which the value of o is used is the survival stage, it is apparent that the difference in invasion speed at various 0 values must be a reflection of differential survival rates at different o values. As well, because the individuals very far from the wavefront have a very low probability of dispersing out past the wavefront into new territory, it is probable that the differential invasion speeds are the result of differential survival rates near the edge of the invasion wave. C c c C c c c c c c c c c C c To investigate this possibility, I examined the survival rates at all points along the wavefront, and found that survival rates did indeed differ a significant amount and in the way expected for the various values of o . These differences, however, c Chapter 3. Results 37 Figure 3.12: Initial Invasion Speeds for the Stochastic Simulation With a QuasiLocal Interaction, (a) Invasion speeds for the first 30 generations at various o" values and (b) Invasion speeds after 50 generations for each o value. Produced by the stochastic simulation of the integrodifference equation with Beverton-Holt local dynamics (a = 1, X = 2), a N(0,1) dispersal kernel and a A ^ O , ^ ) quasi-local interaction kernel. For (a) 5000 iterates of each simulation was performed and invasion speed at each generation was calculated as the mean difference in distance between furthest individuals in the current and previous generation. 6 c 38 Chapter 3. Results 1.2 a =1.0 o =5.0 a =10.0 1.1 c o c c 1 T5 0.9 CD CD CL OO o CO > 0.4 0.3 20 40 60 80 100 120 140 160 180 200 Generation Figure 3.13: Invasion Speed at each Generation for the Stochastic Simulation With a Quasi-Local Interaction. The distance travelled by the invasion wave in each generation is calculated as the mean difference in distance between furthest individuals in the current and previous generation. Produced by the stochastic simulation of the integrodifference equation with Beverton-Holt local dynamics (a = 1, X = 2), a N(0,1) dispersal kernel, a mesh size of 0.1 and a N(0, o" ) quasi-local interaction kernel. c were only found in the very tails of the invasion waves, and were most prominent for the individuals furthest from the origin. Figure 3.15 shows the average survival rate for the furthest individual after 50 generations under various o values. As we can see in this figure, the survival rate of the furthest individual follows a pattern very similar to that of the average invasion speed at generation 50 (shown in Figure 3.12(b)), which supports the conjecture that the invasion speed differences are in fact caused by differing survival rates near the wavefront edge. B y examining the quasi-local interaction kernel used to calculate effective population densities, it is possible to see how differential survival for different G values could come about in a finite population, and in particular in the tails of c c 39 Chapter 3. Results 80 0 10 20 30 40 50 60 70 80 90 100 Generation Figure 3.14: Average Location of the Furthest Individual from the Origin at each Generation for the Stochastic Simulation With a Quasi-Local Interaction. Produced by the stochastic simulation of the integrodifference equation with Beverton-Holt local dynamics (a = 1, A. = 2), a N(0,1) dispersal kernel and a7V(0,o ) quasi-local interaction kernel. c the invasion wave, where typically very few individuals are present. As a simple example, consider the following population distribution on a grid of spatial coordinates with a mesh size of h: i f 1 i f x G [-100,100] 0 otherwise. orx=105, Chapter 3. Results 40 0.9 0.85 CO "8 0.8 CO •| 0.75 + =3 + . CO §> 0.7 + + +-H+ + CO i_ CD > < 0.65 0.6 10 5 Or Figure 3.15: Average Survival Probability of the Furthest individual from the Origin at Generation 50 for the Stochastic Simulation With a QuasiLocal Interaction. Produced by the stochastic simulation of the integrodifference equation with Beverton-Holt local dynamics (a = 1, X = 2), a N(0,1) dispersal kernel and a N(0, o ) quasi-local interaction kernel. c then, ov = 0.1 5(105) Or = 1.0 271-0.1 1 1 + 3.99/? 1 JW105) 5(105) ov = 50 1 AV/,,(105) 271 •h 0.715 (if/? = 0.1) •h 1 1+0.399/; 1 7V /,,(105) 0.962 (if A = 0.1) e/ 5(105) « 0.66 (regardless of h). Chapter 3. Results 41 In essence, this simplification shows how individuals that disperse a long distance in front of the remainder of the invasion wave have differing survival rates depending on o , with the same pattern as found in differences in invasion speeds for different 0 values. For very small a values (a < 1), the survival probability of such long distance dispersers increases with a due to the increase in the denominator for the effective population size calculation. For larger 0 values however, the probability of survival for such a long distance disperser decreases with o because the effective population size felt by such an individual increases toward 0.5 as o increases. In biological terms, long distance dispersers are more able to escape the effects of the central population if a is small than if 0" is large. It is important to note that this problem does not occur in the deterministic simulation because such long distance dispersers do not occur. Rather, very low densities are present at all spatial coordinates in the tails of the invasion wave and although these densities have increased growth when 0 is small, this growth is limited by both the small population densities creating it and by the effects of the non-zero population densities at all coordinates surrounding them. Long-distance dispersers will be present in every individual-based stochastic simulation, and so one would expect to always see some difference in invasion speed at different values of o" . However, we might expect that this effect could be decreased by moving closer to the deterministic assumptions of infinite population size. One method of increasing population size while maintaining the same carrying capacity is to decrease the mesh size. To examine whether changing mesh size would in fact diminish the differences in invasion speed observed when 0 values were varied, I conducted the stochastic simulations with a quasi-local interaction for various mesh sizes. Figure 3.16 shows the effect of changing mesh size on the relationship between invasion speed and o . A s can be seen in this figure, although decreasing the mesh size increases invasion speeds for all values of 0 , it did not noticeably alter the trend for 0 > 1 of decreasing invasion speed as o is increased. In retrospect, this could have been expected, since decreasing the mesh size both increases the number of individuals in the tails and decreases the effect they have on their neighbours because of the mesh size multiple h in the quasi-local interaction kernel sum/approximation, resulting in essentially the same difference in survival rates for long distance dispersers at different 0 values. Decreasing the mesh size does have a significant effect on the trend of increasing invasion speed with increasing o values for low 0 . The differences in invasion speeds at low 0 values were diminished considerably when the mesh size was decreased. Again, this response is predictable, since decreasing the mesh size decreases the effect a single individual has on itself by c C c c c C c c c C C c C c C C c C c C C Chapter 3. 42 Results 1.05 w c o -4—' co CD c CD CD o in k_ < •a CD CD Q. 0.95 0.9 0.85 v>s<> x o 0.65 > x 0.75 CO CO CO x 0.8 0.7 c fc=0.1 /z=0.05 /?=0.025 /i=0.01 1 ++ xx c x^xXx + + + ++ + 0.6 0.55 10 Figure 3.16: Invasion Speed at Generation 50 for Various Mesh Sizes for the Stochastic Simulation With a Quasi-Local Interaction. Invasion speeds are calculated as the mean distance between furthest individuals in generations 25 to 50. Produced by the stochastic simulation of the integrodifference equation with Beverton-Holt local dynamics (a = 1, X = 2), a 7V(0,1) dispersal kernel, a mesh size of h and a N(0,o ) quasi-local interaction kernel. c decreasing the multiple h in the effective population size calculation. When o is small, the effective population size for an individual that is a long distance from the remainder of the population is almost solely determined by the individual's effect on itself. Decreasing the mesh size therefore results in a lower effective population size, and better survival, for long distance dispersers. With the evidence that the survival of long distance dispersers varies with o , I must consider the possibility that this different trend in the asymptotic invasion speed for the stochastic simulations is an artifact of my technique used to estimate the location of the "front" of the invasion wave. Since in my stochastic simulations 1 used the furthest individual from the origin at each time step as an indicator of the location of the front of the invasion wave, it is possible that I have been c c Chapter 43 Results (b) o = 8.0 (a) o = 2.0 c c -200 3. -150 -100 -50 0 50 100 150 200 -200 -150 -100 -50 .v (spatial coordinate) 0 50 100 150 200 x (spatial coordinate) Figure 3.17: Average Population Density Waves at Generations 100 and 200 for the Stochastic Simulation With a Quasi-Local Interaction. Produced by the stochastic simulation with Beverton-Holt local dynamics (a = 1, A. = 2), ayV(0,1) dispersal kernel, a mesh size of 0.1 and &N(0,o ) quasi-local interaction kernel. Population densities shown are the average of 200 runs of the stochastic simulation (extinct populations are excluded from this average). c merely tracking the progress of outliers across space. Since these outliers survive differently depending on G I may therefore have detected differences in invasion speed that may not actually be differences representative of the remainder of the invasion wave. For instance, perhaps the tails of the invasion waves are actually stretching over time as these outliers move faster than the remainder of the wave. However, from a simple visual inspection of the invasion waves, there does appear to be a difference in invasion speed that depends on o irrespective of which part of the wave is tracked. For instance, in Figure 3.17 we can clearly see the difference in distance the invasion waves have travelled for the two different values of o . It therefore seems that tracking the furthest individual did provide a reasonable approximation of the entire wave's movement. c c c 2. Wavefront Shape In the single run simulations with a quasi-local interaction, the wavefront shape is quite variable and it is very difficult to find consistent differences between simulations. Only for very large values of o" were significant changes in the single run wavefront shape detected. However, as mentioned above, once they were averaged over a large number of iterations, the shape of the invasion waves for the c Chapter 3. 44 Results stochastic simulations with a quasi-local interaction were quite similar to those produced by the deterministic simulations. A s an example, Figure 3.18 illustrates the peaks of increased density at the front of the invasion waves, as well as the oscillations back toward the origin, that occur when the value of o" is large. c x (spatial coordinate) Figure 3.18: Average Population Density Wave at Generation 100 for the Stochastic Simulation with a Quasi-Local Interaction. Produced by the stochastic simulation of the integrodifference equation with Beverton-Holt local dynamics (a = 1, A. = 2), a iV(0,1) dispersal kernel and a7V(0,10) quasi-local interaction kernel. However, because of the inherent variation in the stochastic simulations, the exact height of the wavefront peaks is very difficult to estimate, although from visual inspection the peaks heights do appear to be approximately the same as those of the corresponding deterministic simulations. As well, the trend of peak height increase as the value of o is increased is also maintained in the stochastic simulations. Finally, for smaller values of a (less than 2.5) the peaks are virtually impossible to distinguish visually from the other variations around carrying capacity, even when a large number of simulations have been averaged. It is therefore too difficult in these stochastic simulations to estimate accurately the value of c c Chapter 3. 45 Results G at which the peaks first appear, or to find the ratio between <5 and o required for peaks to form. c d c 3. Spatial Pattern As with the wavefront shape, the average population density at all spatial coordinates was similar to that of the deterministic simulations, with spatial coordinates sufficiently far behind the wavefront being quite close to the predicted carrying capacity. In addition, although single simulations showed large variations in population sizes both at the wavefront edge and behind the wavefront where the population was at "equilibrium", no distinguishable repeated patterns were formed in single simulations. Some single simulations did have long distance dispersal events that resulted in temporary local patches. However, although it seems likely that the additional spatial coupling created by a quasi-local interaction would affect the formation of local patches, I was not able to identify any trends in the frequency or size of these temporary local patches as G was varied. c Chapter 4. Discussion and Conclusions 46 Chapter 4 Discussion and Conclusions 4.1 Summary and Discussion The primary purpose of this study was to help establish whether adding a quasilocal interaction to integrodifference invasion models significantly alters the speed, wavefront shape, and spatial pattern formed by the invading population. For the particular system examined in this paper, an integrodifference model with a Gaussian dispersal kernel, Beverton-Holt local dynamics, and Gaussian quasi-local interaction kernel, it appears that adding a quasi-local interaction can alter all of these aspects in some way. Since adding a quasi-local interaction to the deterministic version of this particular invasion model did not appear to alter the asymptotic speed of propagation of the travelling waves produced, this study does not show that it is necessary to include quasi-local interactions in deterministic invasion models in order to get accurate predictions of asymptotic invasion speeds. However, the addition of a quasi-local interaction to this model did cause significant changes in the initial rates of growth and spread for the corresponding invasion, which suggests that it may be beneficial to include quasi-local interactions in invasion models that are used to study initial behaviour. Furthermore, since the initial growth and spread of the invasion was found to depend on the standard deviation of the quasi-local interaction kernel in this system, adding quasi-local interactions to deterministic invasion models could allow them to express a larger range of initial behaviour that can be tuned by varying the parameters of the quasi-local interaction kernel, without affecting the asymptotic invasion speed. In this sense, quasi-local interactions could provide a valuable tool for models that focus on the speed of a biological invasion through time. In this study, the most dramatic difference caused by the addition of a quasilocal interaction to the integrodifference invasion model was in the shape of the travelling wave. The addition of a quasi-local interaction with a sufficiently large standard deviation relative to that of the dispersal kernel (o > 1.2 • 0 ^ ) caused the wavefront shape to shift from a simple Gaussian wavefront to a damped osc Chapter 4. Discussion and Conclusions 47 dilatory wavefront. The new wavefront form consists of a peak of high density (above carrying capacity) at the front followed by spatially damped oscillations (oscillating around carrying capacity) behind the front. In addition, by varying the standard deviation of the quasi-local interaction the amplitude of these oscillations is varied. Since the addition of a quasi-local interaction to this invasion model greatly broadens the range of possible travelling wave shapes, it is probable that they would also broaden the wave shapes in other invasion models as well. Therefore, quasi-local interactions should be considered as a possible component of invasion models that focus on wavefront shape. Finally, aside from the changes that arise from the different wavefront shapes, the addition of a quasi-local interaction to this invasion model was not found to alter the spatial pattern formed by the invading population. It is therefore still unknown whether the addition of a quasi-local interaction to integrodifference invasion models can increase the complexity of spatial patterns and whether is would be profitable to add quasi-local interactions to invasion models that focus on modelling the complex spatial patterns formed by biological invasions. A secondary goal of this study was to establish whether a more realistic stochastic and individual-based model of this system differed significantly from the deterministic model in the invasion speeds achieved, and the wavefront shapes and spatial patterns formed. The simulations of the analogous individual-based stochastic process revealed a number of interesting differences from the behaviour of the deterministic system. With regards to the wavefront shape and the spatial pattern formed, there were certainly differences between the results of single runs and the deterministic simulations. However, no consistent significant differences were noted in the single simulations, and when averaged over a large number of simulations the shape of the invasion wave and the carrying capacity achieved were nearly identical to those of the deterministic simulations for all stages of the invasion and for all values of G and without a quasi-local interaction. The most dramatic difference in behaviour was seen when examining the invasion speeds of the stochastic simulations, and how the invasion speed was affected by the addition of a quasi-local interaction. First, the invasion speeds achieved by the stochastic simulations even without a quasi-local interaction were significantly lower than those achieved for the corresponding deterministic simulations, a difference in stochastic invasion models that has long been conjectured and received much support from numerical studies [14, 20]. As well, as the population size was increased by the reduction of the mesh size, thereby approaching the deterministic model which assumes infinite population size, the invasion speeds of the stochastic simulations increased substantially. This result is akin to one found in c Chapter 4. Discussion and Conclusions 48 the analysis of a stochastic nonlinear integrodifference invasion model by Lewis (2000a), who found similar increases in invasion speed by decreasing the radius of the local neighbourhoods in his model [14]. Finally, a result that was not expected was that the invasion speeds achieved, both initial and asymptotic, for the stochastic simulations depended on the standard deviation o of the quasi-local interaction kernel. In contrast, the asymptotic invasion speeds for the deterministic simulations were found to be the same for all values of o as well as for the simulations without a quasi-local interaction. In addition, the dependence of the asymptotic invasion speed on a in the stochastic simulations did not diminish as the mesh size was decreased, implying a fundamental difference in the function of the quasi-local interaction in the deterministic and stochastic models. This example serves to emphasize that stochastic models do not always behave as their deterministic analogues do, and although it may not be beneficial to add a quasilocal interaction to a deterministic model, it can produce interesting results in stochastic ones. c c c 4.2 Conclusion and Recommendations for Future Work The addition of a quasi-local interaction to this simple integrodifference invasion model has been shown to produce interesting changes in some of the features of most interest to both theoretical and applied ecologists. Most significantly, this study has shown how the addition of a quasi-local interaction can produce more complex wavefront shapes in classical integrodifference invasion models, as well as alter both the spatial pattern and invasion speed of the invasion in the initial stages. With regards to stochastic models, this study has provided added evidence that stochastic and individual-based invasions proceed at significantly slower speeds than their deterministic analogues. A s well, and perhaps more importantly, this study has demonstrated that the invasion speed achieved by such a stochastic model can be affected, both initially and asymptotically, by the addition of a quasi-local interaction. These results show that quasi-local interactions provide a valuable means for adding spatial coupling to invasion models, and thereby to create more complex behaviour. Judging by the ability of this specific type of quasi-local interaction kernel to broaden the possible behaviours of this specific integrodifference model, this suggests that quasi-local interaction theory may have the potential to greatly enrich the range of behaviours available in other types of Chapter 4. Discussion and Conclusions 49 invasion models as well, and the field of biological invasion theory in general. O f course, this study has only considered the effects and importance of including a specific type of quasi-local interaction into an integrodifference model with a single functional form for the dispersal kernel and for the local growth dynamics. Future work should examine the effects of introducing quasi-local interactions to invasion models with other functional forms for the dispersal kernel and growth function, as well as different forms for the quasi-local interaction kernel. In addition, as this study considered only a 1-dimensional biological invasion, it would be very interesting to examine how the results found in this study translate to the 2 and 3-dimensional cases. As well, analytical analysis of integrodifference equations that include a quasi-local interaction should be undergone to determine the conditions under which such an invasion would have an asymptotically constant rate of spread, and how Weinberger's formula for the value of this constant would be changed by such an addition. More generally, introducing quasi-local interactions to invasion models with multi-species interactions, for instance with predator-prey dynamics, host-parasitoid relationships, or interspecific competition could be very rewarding. Since this study considered only the addition of quasi-local interaction via intraspecific competition and to a single-species invasion model, I cannot speculate how the dynamics of multi-species models would change with the addition of a quasi-local interaction. However, as few biological invasions actually occur with no interspecies interactions, and quasi-local interactions can be expected to occur for a broad range of species, the examination of multi-species invasion models that include a quasi-local interaction is a logical next step in this research. Bibliography 50 Bibliography [1] M . Andersen. Properties of some density-dependent integrodifference equation population models. Mathematical Biosciences, 104:135-157, 1991. [2] R. J. H . Beverton and S. J. Holt. On the Dynamics of Exploited Fish Populations, volume 19(2) of Fish Investigations. Ministry of Agriculture, Fish and Food, 1957. [3] J. Van den Bosch, A . J. Metz, and O. Diekmann. The velocity of spatial population expansion. J. of Mathematical Biology, 28:529-565, 1990. [4] M . Doebeli and T. Killingback. Metapopulation dynamics with quasi-local competition. Theoretical Population Biology, in press, 2003. [5] R. A . Fisher. The wave of advance of an advantageous gene. Annals of Eugenics, 7:355-369, 1937. [6] D . P. Hardin, P. Takac, and G . F. Webb. Dispersion population models discrete in time and continuous in space. J. of Mathematical Biology, 28:1-20, 1990. [7] R. Hengeveld. Dynamics of Biological Invasions. Chapman and Hall Ltd., London, 1989. [8] E . E . Holmes, M . A . Lewis, J. E . Banks, and R. R. Veit. Partial differential equations in ecology: Spatial interactions and population dynamics. Ecology, 75:17-29, 1994. [9] D . G . Kendall. Mathematical Models of the Spread of Infection, in: Mathematics and Computer Science in Biology and Medicine. Medical Research Council, 1965. [10] D . Kincaid and W. Cheney. Numerical Analysis. Brooks/Cole Publishing Co., Pacific Grove, second edition, 1996. Bibliography 51 [11] M . Kot. Discrete-time travelling waves: Ecological examples. J. of Mathematical Biology, 30:413^136, 1992. [12] M . Kot, M . A . Lewis, and P. van den Driessche. Dispersal data and the spread of invading organisms. Ecology, 77:2027-2042, 1996. [13] M . Kot and W. M . Schaffer. Discrete-time growth-dispersal models. Mathematical Biosciences, 80:109-136, 1986. [14] M . A . Lewis. Spread rate for a nonlinear stochastic invasion. J. of Mathematical Biology, 41:430-454, 2000. [15] M . A . Lewis and P. Kareiva. Allee dynamics and the spread of invading organisms. Theoretical Population Biology, 43:141-158, 1993. [16] M . A . Lewis and S. Pacala. Modeling and analysis of stochastic invasion processes. J. of Mathematical Biology, 41:387^429, 2000. [17] R. Lui. Existence and stability of travelling wave solutions of a nonlinear integral operator. J. of Mathematical Biology, 16:199-220, 1983. [18] D . Mollison. Possible velocities for a simple epidemic. Advances in Applied Probability, 4:233-257, 1972. [19] D . Mollison. The rate of spatial propagation of simple epidemics. Proceedings of the Sixth Berkeley Symposium, 3:579-614, 1972. [20] D . Mollison. Spatial contact models for ecological and epidemic spread. J. of Royal Statistical Society, Series B, 39:283-326, 1977. [21] W. H . Press. Numerical Recipes in C++: The Art of Scientific Computing. Cambridge University Press, Cambridge, second edition, 2002. [22] A . Sasaki. Clumped distribution by neighbourhood competition. J. of Theoretical Biology, 186:415-430,1997. [23] N . Shigesada and K . Kawasaki. Biological Invasions: Theory and Practice. Oxford Series in Ecology and Evolution. Oxford University Press, Oxford, 1996. [24] J . G . Skellam. Random dispersal in theoretical populations. Biometrika, 38:196-218, 1951. Bibliography 52 [25] C. Starr and R. Taggart. Biology: The Unity and Diversity of Life. Wadsworth Publishing Co., Toronto, seventh edition, 1995. [26] H . R Weinberger. Asymptotic Behavior of a Model in Population Genetics. Number 648 in Lecture Notes in Mathematics. Ed. J. M . Chadam, 1978. [27] H . F. Weinberger. Long-Time Behavior of a Class of Biological Models. Ed. W. E . Fitzgibbon. Pitman, London, 1984. [28] P. C. L . White and G. Newton-Cross. An Introduced Disease in an Invasive Host: The Ecology and Economics of Rabbit Calcivirus Disease (RCD) in Rabbits in Australia. Eds. C. Perrings, M . Williamson and S. Dalmazzone. Edward Elgar Publishing Inc., Cheltenham, 2000. Appendix A. Source Code for Deterministic Simulations 53 Appendix A Source Code for Deterministic Simulations /* This is the deterministic version of the invasion model including quasi-local interactions. Starting from a hard coded i n i t i a l population density distribution, the program iterates the integrodifference equation with a N(0,sigma-d) dispersal kernel and a N(0, sigma-c) quasi-local interaction kernel for a specified number of generations and on a fixed grid of spatial coordinates with a specified spacing "mesh-size" between grid points. The program does this for a specified range of values for sigma-c. The population density at each coordinate at the start of each generation is output to the f i l e "wave_graph_sigma_ disp_sigma-d_sigmacomp_sigma-c_generations_number-ofgenerations_mesh_mesh-size.dat" The maximum population density in each generation is output to the f i l e "density_limit_sigma_disp_sigma-d_sigmacomp_ sigma-c_generations_number-ofgenerations_mesh_mesh-size.dat" At each generation, the generation number and the rightmost coordinate to have exceeded the preset density threshold of 0.001 are output to the f i l e "maxdistance_determ.dat" For each value of sigma-c, the current sigma-c value and the calculated invasion speed achieved by the simulation (calculated as the average distance between successive wavefronts for the non-discarded points in the f i l e "maxdistance_determ.dat") are output to the f i l e "invasion_speed_sigma_disp_sigma-d_generations_number-of- 54 Appendix A. Source Code for Deterministic Simulations generations_mesh_mesh-size.dat" tinclude tinclude tinclude tinclude tinclude <iostream> <math.h> <fstream> <stdlib.h> <string> using namespace void */ std; initialize_density_array(); //zeros the entries in the density array, and places the //appropriate values in the grid points where the i n i t i a l //population density is non-zero v o i d output_density_array() //outputs the pop_density ; array to the screen. d o u b l e effect_of_neighbour ( i n t y_grid_no, d o u b l e x, d o u b l e y) ; //This function calculates the strength of competition //experienced at the point x from neighbours at the point //y. y_grid_no is the grid point number (and hence the //array index) corresponding to y d o u b l e e f f e c t i v e _ p o p ( i n t x_grid__no, d o u b l e x ) ; //This function determines the e f f e c t i v e population density //experienced by an i n d i v i d u a l at a point x. x_grid_no is //the grid point number corresponding to x d o u b l e growth_function ( i n t g r i d _ n o , d o u b l e x ) ; //This is the function that describes the growth stage //the l i f e c y c l e . The Beverton-Holt stock-recruitment / / r e l a t i o n s h i p is assumed to govern the growth stage. of d o u b l e d i s p e r s a l _ p r o b a b i l i t y ( d o u b l e x, d o u b l e y ) ; //This //from function determines the p r o b a b i l i t y of a point x to the point y dispersing d o u b l e grow_and_disperse ( i n t grid_no, d o u b l e x, d o u b l e y) ; //This is merely the product of the growth_function Appendix A. Source Code for Deterministic Simulations //evaluated at y and the d i s p e r s a l _ p r o b a b i l i t y //evaluated at (x,y). grid_no is the grid point //corresponding to the point y d o u b l e integrate (double 55 function number (*func) ( i n t g r i d _ n o , d o u b l e x, d o u b l e y ) , d o u b l e x) ; //This function integrates the function func over the / / e n t i r e mesh using the trapezoidal rule. Note this assumes //that x is fixed and we are i n t e g r a t i n g over y d o u b l e f ind_invasion__limit ( d o u b l e density_threshold) ; //finds the rightmost x-coordinate //'density_threshold is exceeded double at which the average_wave_movement(); //using the file "maxdistance_determ.dat" as input, this //function returns the average distance the invasion wave //has t r a v e l l e d per generation. To eliminate initial //behaviour, a number the data points at the beginning of //the file are discarded (the number is set by the discard //variable). c o n s t d o u b l e mesh_size = 0 . 1 ; //Spacing between grid points (ie. mesh coarseness) c o n s t d o u b l e max_expected_distance = 100.0; //Beyond this x-coordinate all population densities are //assumed to be zero and are ignored. For all simulations / / t h i s was set to at least twice the predicted invasion //speed m u l t i p l i e d by the number of generations. const i n t no_grid_points = int(max_expected_distance/mesh_size)+1; //the number of grid points to be tracked. For most runs //due to symmetry only the right-hand wave was tracked. c o n s t d o u b l e lambda = 2 . 0 ; / / i n t r i n s i c rate of growth in the Beverton-Holt equation in the Beverton-Holt equation c o n s t d o u b l e a = 1.0; //scales carrying capacity c o n s t d o u b l e sigma_disp = 1.0; //the value //dispersal of the parameter kernel c o n s t d o u b l e p i = 3.141592654; sigma_d in the gaussian Appendix A. Source Code for Deterministic Simulations c o n s t i n t g e n e r a t i o n s =50; //the total number of generations for the simulation to be //run. c o n s t i n t d i s c a r d = 25; //The number of the first generations to discard when //calculating the invasion speed, (usually set to half of //"generations") c o n s t d o u b l e sigma_comp_min = 0 . 1 ; //the minimum value to be used for the standard deviation //of the gaussian quasi-local interaction kernel c o n s t d o u b l e sigma_comp_max = 0.1; //the maximum value for the standard deviation of the //quasi-local interaction kernel c o n s t d o u b l e sigma_comp_increment = 0 . 1 ; //the spacing between consecutive values of the standard //deviation of the quasi-local interaction kernel d o u b l e sigma_comp; //will contain the current value of the quasi-local //interaction kernel standard deviation d o u b l e pop_density[no_grid_points][4]; //The first column will contain all of the population //densities N(x) in the current time step. The second //column will contain the effective population Neff(x) at //the grid point. The third column will contain the growth //portion (f(N(x)) for each grid point. The fourth column //will contain the next year's density at the corresponding //grid point ofstream density_graph_stream; / / o u t p u t f i l e stream for the population density graphs ofstream i n v a s i o n _ l i m i t _ s t r e a m ; //output f i l e stream for the location of the invasion front //at each time step ofstream d e n s i t y _ l i m i t _ s t r e a m ; / / o u t p u t f i l e stream for the maximum density at each time //step ofstream invasion_speed_stream; //output fiel stream for the invasion speed at each //sigma_comp value 56 57 Appendix A. Source Code for Deterministic Simulations int main() { s t r i n g density_graph_stream_name; //the name for the population density graphs file. s t r i n g density_limit_stream_name; //the name for the maximum density file s t r i n g invasion_speed_stream_name; //the name for the invasion speed file s t r i n g i s s n l = "invasion_speed_sigma_disp_"; //first constant part of invasion speed file name s t r i n g i s s n 2 = "_generations_"; //second constant part of invasion speed file name s t r i n g i s s n 3 = "_mesh_"; //third constant part of invasion speed file name s t r i n g dat_ext = " . d a t " ; //file name extension (same for all output files) sigma_comp = sigma_comp_min; //initialize the sigma_comp variable //value c h a r buffer_sigma_disp[20] ; //temporary buffers for constructing c h a r buffer_generations[20] ; c h a r buffer_mesh_size[20]; c h a r buffer_sigma_comp[20] ; gcvt (sigma_disp, 6,buf f er__sigma_disp) ; //assigns the above char arrays the gcvt(generations,6,buffer_generations); gcvt(mesh_size,6,buffer_mesh_size); invasion_speed_stream_name to file the minimum names appropriate values = i s s n l + buffer_sigma_disp + issn2 + buffer_generations + issn3 + buffer_mesh_size + d a t _ e x t ; invasion_speed_stream.open(invasion_speed_stream_name.c_str()); //creates and opens the file for invasion speed stream while(sigma_comp<=sigma_comp_max+0.01) Appendix A. Source Code for Deterministic Simulations 58 //outer loop. Iterates over all values of sigma_comp //from sigma_comp_min to sigma_comp_max by incrementing //sigma_comp by sigma_comp_increment each time { d o u b l e x_coord = 0 . 0 ; //variable to keep track of the x-coordinate //corresponding to a grid point d o u b l e invasion_limit = 0.0; //the current location of the wave front d o u b l e invasion_speed = 0.0; //the invasion speed achieved by the current //sigma_comp value d o u b l e max_density = 0 . 0 ; //variable for the maximum density achieved in //current generation the gcvt(sigma_comp,6,buffer_sigma_comp); s t r i n g dgsnl = "wave_graph_sigma_disp_"; //first constant part of density graph file name s t r i n g dgsn2 = "_sigmacomp_"; //second constant part of density graph, maximum //density, and density limit file names string dlsnl = "density_limit_sigma_disp_"; //first constant part of density limit file name density_graph_stream_name = dgsnl + buffer_sigma_disp + dgsn2 + buffer_sigma_comp + issn2 + buffer_generations + i s s n 3 + buffer_mesh_size + dat_ext; density_graph_stream.open(density_graph_stream_name.c_str()); //creates and opens the file for the density graph //stream density_limit_stream_name = d l s n l + buffer_sigma_disp + dgsn2 + buffer_sigma_comp + issn2 + buffer_generations + i s s n 3 + buffer_mesh_size + dat_ext; Appendix A. Source Code for Deterministic Simulations 59 density_limit_stream.open(density_limit_stream_name.c_str() ) ; //creates and opens the file for the density limit //stream invasion_limit_strearn.open("maxdistance_determ.dat"); //creates and opens the file for the invasion limit //stream initialize_density_array(); //initializes the pop_density matrix output_density_array() ; //sends the starting densities to the density graph //file for (int i=0; //this loop i<generations; i++) iterates the //specified (so for number i=current of generations generation) { max_density = 0 . 0 ; //resets max_density invasion_limit = //determines //the rightmost threshold invasion_limit_stream << i n v a s i o n _ l i m i t //send j=0; each coordinate of wavefront point to exceed calculates all grid so the regression file j++) (each array). at to 0.001 j<no_grid_points; grid loop //density generation << i << " " of //pop_density //This each << e n d l ; location for(int //for zero fabs(find_invasion_limit(0.001)); the density to row j= in the current effective grid point population points { x_coord = //finds //this mesh_size*j; the grid x-coordinate point. corresponding to 60 Appendix A. Source Code for Deterministic Simulations pop^densitytj][1] = effective_pop(j, x_coord); //calculates the effective population density //at this grid point } f o r ( i n t j=0; j < n o _ g r i d _ p o i n t s ; j++) //for each grid point (j =current grid point) //This loop calculates the next generation's //population density at all grid points and //determines the maximum population density this //generation i x_coord = m e s h _ s i z e * j ; //finds the corresponding x-coordinate p o p _ d e n s i t y [ j ] [3] = integrate(grow_and_disperse, x_coord); //calculates the new population density //and places the value in column 3 if(pop_density[j][0] at x > max_density) { max_density = p o p _ d e n s i t y [ j ] [ 0 ] ; } //if this //greater //previous //variable grid point's population density is than the maximum density at all grid points, then the max_density is updated to this pop. density } f o r ( i n t j=0; j < n o _ g r i d _ p o i n t s ; j++) //for each grid point (j=current grid point) //This loop copies the next generation's //population densities in column 3 into column 0 { pop_density[j][0] = pop_density[j][3]; } output_density_array(); //output to the density graph file Appendix A. Source Code for Deterministic Simulations d e n s i t y _ l i m i t _ s t r e a m << i << " " << max_density << e n d l ; //output to the maximum density file } //end generations loop invasion_speed = average_wave_movement(); //calculates the invasion speed for //value this sigma_comp invasion_speed_stream << sigma_comp << " " << invasion_speed << e n d l ; //output to the invasion speed file sigma_comp = sigma_comp + sigma_comp_increment; //increment sigma_comp density_graph_stream.close() ; //close files with sigma_comp invasion_limit_stream.close() ; density_limit_stream.close() ; } //end sigma_comp specific file loop invasion_speed_stream.close() ; //close the invasion speed file r e t u r n 0; } void { initialize_density_array() for(int //zeros { i=0; i < n o _ g r i d _ p o i n t s ; i++) all entries of the pop_density pop_density[i][0] pop_density[i][1] pop_density[i][2] pop_density[i][3] = = = = 0.0 0.0 0.0 0.0 array names 61 Appendix A. Source Code for Deterministic Simulations 62 } //now assign any non-zero population //for the initial conditions pop_density[0][0] = 0 . 1 ; pop_density[1][0] = 0.1; densities desired } void output_density_array() { d o u b l e x_coord = 0 . 0 ; //variable for the x-coordinate //point corresponding to a grid f o r ( i n t i=0; i < n o _ g r i d _ p o i n t s ; i++) //for each grid point (i=current grid point) //outputs the correponding x-coordinate and population //density at the x-coordinate to the density graph file { x_coord = m e s h _ s i z e * i ; //calculates the corresponding x-coordinate density_graph_stream << x_coord << " << p o p _ d e n s i t y [ i ] [ 0 ] << e n d l ; density_graph_stream << endl << e n d l ; //carriage returns for spacing in output file } d o u b l e ef f e c t i v e _ p o p ( i n t x_grid_no, d o u b l e x) { d o u b l e pop_effect = 0 . 0 ; pop_effect = i n t e g r a t e ( e f f e c t _ o f _ n e i g h b o u r , //integrates the effect_of_neighbour //for this fixed x. return } pop_effect; x) ; function over y 63 Appendix A. Source Code for Deterministic Simulations d o u b l e effect_of_neighbour ( i n t y_grid_no, d o u b l e x, d o u b l e y) { d o u b l e effect = 0.0; i f ( y _ g r i d _ n o >=0) //because only one side of the x-axis is explicitly //tracked in the pop_density array, two cases must be //considered. First, if the y-value is non-negative, //then the effect at x of neighbours at y can be //calculated using the population density at y { effect = (1/(sigma_comp*sqrt(2*pi)))*exp( -(pow((x-y),2.0))/(2*sigma_comp*sigma_comp)) *pop_density[y_grid_no][0]; //this is //gaussian the population probability density density at y weighted by a } else //otherwisethe y-value is negative and not explicitly //tracked in the population density array, so the //population density at -y is used in the calculation { effect } return = (1/(sigma_comp*sqrt(2*pi)))*exp( - (pow((x-y),2.0))/(2*sigma_comp*sigma_comp)) *pop_density[-y_grid_no][0]; effect; } d o u b l e growth_function ( i n t x_grid_no, d o u b l e x_coord) { d o u b l e f_N_x = 0.0; i f (x_grid_no>=0) //again, must consider 2 cases. First if x is //non-negative then we can use the value in the //population density array to calculate growth at { x 64 Appendix A. Source Code for Deterministic Simulations f_N_x = lambda*pop_density[x_grid_no][0]/ (l+a*pop_density[x_grid_no][1]) ; //this is just the Beverton is negative Holt growth equation } else //otherwise x //density at -x in so the we use the population calculation { f_N_x = l a m b d a * p o p _ d e n s i t y [ - x _ g r i d _ n o ] [ 0 ] / (l+a*pop_density[-x_grid_no][1]); } return f_N_x; } d o u b l e d i s p e r s a l _ p r o b ( d o u b l e x, d o u b l e y) { d o u b l e p r o b a b i l i t y = 0.0; probability = //this is (1/(sqrt(pi*2)*sigma_disp))*exp( -pow((x-y),2.0)/(2*sigma_disp*sigma_disp)); just //probability the value density of the function N(0,sigma_disp) evaluated at (x-y) r e t u r n probability; } d o u b l e g r o w _ a n d _ d i s p e r s e ( i n t y_grid_no, d o u b l e x, d o u b l e y) { d o u b l e product = g r o w t h _ f u n c t i o n ( y _ g r i d _ n o , y ) * dispersal_prob(x, y ) ; //simply //at the y //this and is product the the of the probability function growth of that function dispersal must be evaluated from y integrated //generation return product; } d o u b l e integrate (double (*func) ( i n t y_grid_no, d o u b l e x, to x. each 65 Appendix A. Source Code for Deterministic Simulations d o u b l e y ) , d o u b l e x) { d o u b l e i n t e g r a l = 0.0; d o u b l e y = -no_grid_points*mesh_size; //start y at the leftmost grid point f o r ( i n t k=-no_grid_points + 1; k < n o _ g r i d _ p o i n t s - l ; k++) //this loop runs //endpoints. over This is the entire the mesh composite except the trapezoidal rule. { y = y + mesh_size; //moves over one grid point each iteration i n t e g r a l = i n t e g r a l + mesh_size*func(k,x,y); } i n t e g r a l = i n t e g r a l +l/2*mesh_size*(func(no_grid_points1,x,y+mesh_size) + f u n c ( 0 , x , m e s h _ s i z e * (-no_grid_points))); //for composite //of the trapezoidal first and last rule grid need to add only 1/2 points r e t u r n integral; } double f ind_invasion_limit (double density_threshold) { f o r ( i n t k = n o _ g r i d _ p o i n t s - l ; k >=0; k—) //runs over all grid points, starting at the right end { if(pop_density[k][0] > density_threshold) r e t u r n mesh_size* (k) ; //if the density threshold /'/x-coordinate //and the for function is this grid is exited exceeded, point is the returned } return 0.0; //if no //an x-coordinate coordinate exceeds of 0 the threshold, this returns Appendix A. Source Code for Deterministic Simulations 66 } double average_wave_movement() { i n t number_of_points = 1000; //the maximum number of data points expected //must be greater or equal to the number of d o u b l e xcoords[number_of_points]; //the array of the x-values d o u b l e ycoords[number_of_points]; //the array of the corresponding y-values i f s t r e a m in_stream; //the input file stream f o r ( i n t j=0; j<number_of_points; j++) //runs over the arrays xcoords and ycoords //initializes them generations and { xcoords[j] = 0.0; ycoords[j] = 0.0; } in_stream.open("maxdistance_determ.dat"); //assigns the input stream to and opens the input file i n t c o u n t e r l = 0; //tracks the number of data points //in from the input file w h i l e (!in_stream.eof()) //this loop places the input data //the xcoord and ycoord arrays that have been from the file read into { in_stream >> x c o o r d s [ c o u n t e r l ] ; //xcoords[counterl] = next; in_stream >> y c o o r d s [ c o u n t e r l ] ; //ycoords[counterl] = next; counterl++; //note that this increments counterl one too many Appendix A. Source Code for Deterministic Simulations //times, which is why I use counterl-1 below, //note also that there are two blank lines at the //end of the input file, and so this loop proceeds //for one iteration too many } d o u b l e sum_y = 0 . 0 ; for(int j=discard;j<counterl-l;j++) //This loop runs over the data values for generations //that are not desired to be discarded and sums the //differences in the location of the invasion front { sum_y = sum_y + y c o o r d s [ j ] - y c o o r d s [ j - 1 ] ; } in_stream.close() ; r e t u r n (sum_y/double(counterl-l-discard) ) ; //returns the average distance between successive //wavefront locations for the non-discarded generations 67 Appendix B. Source Code for Stochastic Simulations 68 Appendix B Source Code for Stochastic Simulations /* This is the stochastic version of the integrodifference invasion model including quasi-local interactions. Starting from a hard coded initial population densitydistribution, the program follows the following sequence for each generation. 1) the effective population density at each point is calculated (according to the quasi-local N(0,sigma-c) interaction kernel) 2) each individual is determined to either survive or die (based on the density dependent component of the Beverton-Holt stock recruitment equation) 3) each survivor produces offspring (Poisson distributed random deviates with a mean of lambda) and 4) offspring move a distance drawn from a N(0,1) distribution. The population exists on a fixed grid of spatial coordinates with a specified spacing "mesh-size" between adjacent grid points. The process is repeated for the desired number of "iterations" and for a specified range of values for sigma-c The average number of individuals at each coordinate start of each generation is output to the file "density_wave_sigma_comp_sigma-c_gens_number-ofgenerations_mesh_mesh-size.dat" For each generation, the generation number and the location of the furthest individual from the origin output to the file "maxdistance.dat" at the average are For each generation, the generation number and the average cumulative population size (the sum of all surviving individuals) is output to the file "popsize_sigma_comp_ Appendix B. Source Code for Stochastic Simulations 69 sigma-c_gens_number-of-generation_mesh_mesh-size.dat" For each value of sigma-c, the current sigma-c value and the calculated average invasion speed achieved by the simulations for that sigma-c value (calculated as the mean of the differences in the average location of the farthest individual in successive generations for the nondiscarded points in the file "maxdistance_determ.dat") are output to the file "invasion_speed_avg_gens_number-ofgenerations_mesh_mesh-size.dat" The random number generator used and the routines for drawing Poisson deviates were provided to me by Rik Blok (2001). The source code for these routines is in the file "deviate.c" and was compiled into the executable. This source code will not be provided here but is available upon request (email: merchant@math.ubc.ca) */ tinclude tinclude tinclude tinclude tinclude tinclude //header //deviate finclude <iostream> <stdlib.h> <time.h> <math.h> <fstream> "deviate.h" for random number generator routines <string> and Poisson using namespace std; c o n s t d o u b l e mesh_size = 0 . 1 ; //Spacing between grid points (ie. mesh coarseness) c o n s t d o u b l e max_dist = 275.0; //Beyond this x-coordinate all population densities are //assumed to be zero and are ignored. For all simulations //this was set to at least 1.25 times the predicted //invasion speed multiplied by the number of generations. c o n s t i n t number_of__bins = i n t (2*max_dist/mesh_size) + 1; //the number of grid points to be tracked. Appendix B. Source Code for Stochastic Simulations c o n s t d o u b l e a=1.0; //scales carrying capacity in the Beverton-Holt equation c o n s t d o u b l e lambda = 2 . 0 ; //intrinsic rate of growth in the Beverton-Holt equation c o n s t d o u b l e sigma_disp = 1.0; //the value of the parameter sigma_d in the gaussian //dispersal kernel (set to 1.0 for all simulations) c o n s t d o u b l e p i = 3.141592654; c o n s t i n t d i s c a r d = 100; //The number of the first generations to discard when //calculating the invasion speed, (usually set to half of //"generations") c o n s t i n t number_iterations=200; //the number of times simulations are run for each set of //parameter values (used to examine the mean behaviour) c o n s t i n t maximum_generations = 200; //the total number of generations for each simulation. c o n s t d o u b l e sigma_comp_min=0.1; //the minimum value to be used for the standard deviation //of the gaussian quasi-local interaction kernel c o n s t d o u b l e sigma_comp_max=0 . 5; //the maximum value for the standard deviation of the //quasi-local interaction kernel c o n s t d o u b l e sigma_comp_increment = 0 . 1 ; //the spacing between consecutive values of the standard //deviation of the quasi-local interaction kernel ofstream //output ofstream //output ofstream //output ofstream //output ofstream //output //value maxdistance_stream; stream for the farthest distance per generation invasion_speed_avg_stream; stream for the average invasion speed density_wave_stream; stream for the average density graphs popsize_stream; stream for the population size per generation no_fails_stream; stream for the number of extinctions per sigma-c v o i d i n i t i a l i z e _ m a t r i x ( d o u b l e m a t r i x [ ] [ n u m b e r _ o f _ b i n s ] , i n t rows); 70 Appendix B. Source Code for Stochastic Simulations //initializes //columns //entries) 71 the 2-D array matrix that has number-of-bins and "rows" number of rows (0.0 is placed in all v o i d i n i t i a l i z e _ m a t r i x ( d o u b l e matrix[number_of_bins]) ; //initializes the 1-D array matrix that has number-of-bins //rows (0.0 is placed in all entries) v o i d c a l c u l a t e _ x _ c o o r d s ( d o u b l e matrix[][number_of_bins]); //determines the corresponding x-coordinate for each //point/bin number and places it in the first row of //array "matrix" grid the v o i d o u t p u t _ l o c a t i o n _ s c r e e n ( d o u b l e matrix[][number_of_bins], i n t rows); //outputs the entire array "matrix" with "number-of-bins" //columns and "rows" number of rows to the screen v o i d i n i t i a l _ f i l l ( d o u b l e matrix[][number_of_bins]); //places the desired initial local population //corresponding entries of the array "matrix" sizes in the (hard-coded) v o i d c a l c u l a t e _ N e f f ( d o u b l e m a t r i x [] [number_of_bins], d o u b l e sigma_value); //calculates the effective population size at each grid //point/bin number v o i d determine_survivors(double matrix[][number_of_bins]); //determines the number of survivors at each grid //number point/bin v o i d c a l c u l a t e _ o f f s p r i n g ( d o u b l e matrix[][number_of_bins])• //determines the total number of offspring produced //grid point/bin number at v o i d move_off s p r i n g ( d o u b l e m a t r i x l [ ] [number_of_bins ] , d o u b l e matrix2[number_of_bins]); //moves the number of offspring at each coordinate in //matrixl, they are placed at their new location/grid //in matrix2 each point Appendix B. Source Code for Stochastic Simulations 72 v o i d copy_matrix ( d o u b l e m a t r i x l [ ] [number_of_bins ] , d o u b l e matrix2[number_of_bins], i n t row_to_copy); //copies the "row-to-copy" of matrix2 over the same row of //matrixl (they must have "number-of-bins" columns) d o u b l e GaussDev ( d o u b l e mean, d o u b l e s t d ) ; //returns a Normal(mean, std) deviate d o u b l e maxdistance ( d o u b l e m a t r i x [ ] [ n u m b e r _ o f _ b i n s ] ) ; //finds the distance from the origin of the furthest //individual in the array "matrix" d o u b l e average_wave_movement(); //calculates the average distance //the file "maxdistance.dat". int between the y-values main() { string //these string string string density_wave_file_name; strings will be used for popsize_file_name; invasion_speed_file_name; number_of_fails_file_name; the file names s t r i n g density_name_part_one = "density_wave_sigma_comp_"; //first constant part of density wave file name s t r i n g popsize_name_part_one = "popsize_sigma_comp_"; //first constant part of pop size file name s t r i n g invasion_name_part_one = "invasion_speed_avg"; //first constant part of invasion speed file name s t r i n g fails_name_part_one = "number_of_fails"; //first constant part of number of fails file name s t r i n g name_part_two = "_gens_"; //second constant part of file names s t r i n g name_part_three = "_mesh_"; //third constant part of file names s t r i n g file_name_extension = " . d a t " ; of Appendix B. Source Code for Stochastic Simulations //file name extension (same for all output 73 files) c h a r buffer_sigma_comp[20] ; //temporary holders of variables //creating file names c h a r buffer_gens[20]; c h a r buffer_mesh[20] ; as char gcvt(maximum_generations,6, b u f f e r _ g e n s ) ; //place the appropriate values in the gcvt (mesh_size, 6,buf f er_m'esh) ; arrays char for arrays invasion_speed_file_name = invasion_name_part_one + name_part_two + buffer_gens + name_part_three + buffer_mesh + file_name_extension; invasion_speed_avg_stream.open(invasion_speed_file_name.c_str()); //creates and opens the invasion speed file number_of_fails_file_name = fails_name_part_one + name_part_two + buffer_gens + name_part_three + buffer_mesh + file_name_extension; no_fails_stream.open(number_of_fails_file_name.c_str()); //creates and opens the number of extinctions file d o u b l e sigma_comp = sigma_comp_min; //sets sigma-comp to the minimum value desired d o u b l e maxdist_matrix[maximum_generations]; //This array will contain the average distance //travelled by the wave in each generation d o u b l e density_wave_matrix[maximum_generations][number_of_bins]; //This array will contain the average density in each //bin number at each generation Note: this array is //extremely large. For simulations with a large number //of generations, I actually only keep track of every //fifth or tenth generation double location[6][number_of_bins]; 74 Appendix B. Source Code for Stochastic Simulations //the //row //row //row //row //row array contains the following information 0 = x-value corresponding to each grid point 1 = number of individuals in the bin 2 = effective population density at x 3 = survival probability of individuals at x 4 = number of survivors at x //row 5 = number of double total offspring produced at holds the new population sizes after offspring have moved at x temploc[number_of_bins]; //Temporarily //grid point SetDevSeed(-l); / / s e e d the random number each generator while(sigma_comp<=sigma_comp_max+0.01) //this outer loop runs over all the //sigma-comp desired. the variable //incremented at the end each time values of sigma-comp is { c h a r buffer_sigma_comp[20]; //temporary char array for the sigma-comp //for making file names gcvt(sigma_comp,6,buffer_sigma_comp); variable density_wave_file_name = density_name_part_one + buffer_sigma_comp + name_part_two + buffer_gens + name_part_three + buffer_mesh + file_name_extension; popsize_file_name = popsize_name_part_one + buffer_sigma_comp + name_part_two + buffer_gens + name_part_three + buffer_mesh + file_name_extension; / / c r e a t e s t h e d e n s i t y wave and population size //names for this sigma-comp value double population[maximum_generations]; file Appendix B. Source Code for Stochastic Simulations 75 //this array will contain the average total //population size at each generation i n t number_of_fails = 0; //variable for the number of extinctions f o r ( i n t n=0;n<maximum_generations;n++) //initializes the population array population[n]=0.0; i n i t i a l i z e _ m a t r i x ( d e n s i t y _ w a v e _ m a t r i x , maximum_generations); //initializes the density-wave-matrix array f o r ( i n t n=0; n<maximum_generations; n++) //initializes the average distance array maxdist_matrix[n] = 0 . 0 ; density_wave_stream.open(density_wave_file_name.c_str()); popsize_stream.open(popsize_file_name.c_str()); //opens the density wave and population size files f o r ( i n t n=0; n<number_iterations; n++) //this loop runs the stochastic simulation the //desired number of iterations (because it is //stochastic a large number of runs are conducted //and averaged { d o u b l e inv_speed_this_run = 0.0; //variable to track how quickly each individual //run expands maxdistance_stream.open("maxdistance.dat") ; //opens the file for the location of the //farthest individual i n i t i a l i z e _ m a t r i x ( l o c a t i o n , 6); //zeros the location matrix calculate_x_coords(location) ; //determines the corresponding x-coordinate for //each grid point in the location array initial_fill(location); //inputs the hard-coded initial population sizes Appendix B. Source Code for Stochastic Simulations for(int 76 k=0;k<maximum_generations;k++) //generations loop. k = current generation { f o r ( i n t p=0; p< number_of_bins; p++) //this loop tallies up the total population //for this generation (note, the population //array is not zeroed each iteration, and //is divided by the number of non-extinct //populations at the end of the sigma-comp //loop for each sigma-comp value to give the //average population size in each generation { population[k] = population[k] + location[1][p]; } c a l c u l a t e _ N e f f ( l o c a t i o n , sigma_comp); //calculates the effective population //density at all grid points determine_survivors(location) ; //calculates the number of survivors (ie. //applies mortality) for all grid points calculate_offspring(location); //calculates the number of offspring //produced at each grid point initialize_matrix(temploc); //zeroes the temploc array move_offspring(location, temploc); //determines the new spatial coordinates //all offspring and places each at the //appropriate grid point in the temploc //array of maxdist_matrix[k] = m a x d i s t a n c e ( l o c a t i o n ) + maxdist_matrix[k]; //determines the location of the farthest //individual from the origin and adds this Appendix B. Source Code for Stochastic Simulations 77 //value to the maxdist array value for this //generation (note, the maxdist array is //averaged over non-extinct populations //after all iterations are complete for this //sigma-comp value) maxdistance_stream << k << " " << m a x d i s t a n c e ( l o c a t i o n ) ; //sends the generation number and the //distance from the origin of the farthest //individual to the "maxdistance.dat" file c o p y _ m a t r i x ( l o c a t i o n , temploc, 1 ) ; //overwrites the individuals in the //location array with the offspring in //temploc array (parents all die after //reproduction) the f o r ( i n t p=0; p<number_of_bins; p++) //adds the current population size at each //grid point to the density wave matrix { density_wave_matrix[k][p] = density_wave_matrix[k][p] + location[1][p];' } } //end of generations loop i n v _ s p e e d _ t h i s _ r u n = average_wave_movement(); //determines the average wave speed this //iteration i f ( i n v _ s p e e d _ t h i s _ r u n < 0.01) //if there is virtually no movement in the //non-discarded generations the population //assumed to have gone extinct numbe r_o f_fa i1s++; maxdistance_stream.close ( ) ; //closes the maxdistance.dat } file is Appendix B. Source Code for Stochastic Simulations maxdistance_stream.open("maxdistance.dat"); //reopens the maxdistance.dat file //clearing it) 78 (thereby f o r ( i n t n=0; n<maximum_generations; n++) //for each generation (n=current generation) //loop averages the location of the farthest //individual, the population size, and the //population density at each grid point this { maxdist_matrix[n] = m a x d i s t _ m a t r i x [ n ] / double(number_iterations-number_of_fails); maxdistance_stream << n << " " << maxdist_matrix[n] << e n d l ; //averages the location of farthest individual //and outputs the generation and location to //the maxdistance.dat file population[n] = population[n]/ double(number_iterations-number_of_fails); popsize_stream << n << " " << p o p u l a t i o n [ n ] << e n d l ; //averages the population //generation and outputs //population size file size in each it to the average f o r ( i n t p=0; p<number_of_bins; p++) //calculates the average population density in //this generation at each grid point and outputs //to the density wave file { density_wave_matrix[n][p] = density_wave_matrix[n][p]/ (number_iterations-number_of_fails); density_wave_stream << l o c a t i o n [ 0 ] [ p ] << " " << density_wave_matrix[n][p] << e n d l ; Appendix B. Source Code for Stochastic Simulations 79 } density_wave_stream << e n d l << e n d l ; //just for formatting in density wave file invasion_speed_avg_stream << sigma_comp << " " << average_wave_movement() << e n d l ; //outputs the average distance between the average //location of farthest individuals in consecutive //generations to the invasion speed file n o _ f a i l s _ s t r e a m << sigma_comp << " " << number_of_fails << e n d l ; //outputs the total number of extinctions //sigma-comp value sigma_comp=sigma_comp+sigma_comp_increment; //increments sigma-comp by the desired maxdistance_stream.close() ; //closes the files that are density_wave_stream.close() ; popsize_stream.close(); for this increment sigma-comp specific } invasion_speed_avg_stream.close(); no_fails_stream.close() ; //closes non-sigma-comp specific output files r e t u r n 0; } v o i d i n i t i a l i z e _ m a t r i x ( d o u b l e m a t r i x [] [number_of_bins], i n t rows) { f o r ( i n t i=0; i<rows; i++) //runs over all entries //their values equal to { in the zero array "matrix" and sets Appendix B. Source Code for Stochastic Simulations for(int 80 j=0;j<number_of_bins;j++) { m a t r i x [ i ] [j] = 0 . 0 ; } } } v o i d initialize_matrix(double matrix[number_of_bins]) { f o r ( i n t i=0; i<number_of_bins; i++) //runs over all entries in the array //their values equal to zero matrix[i] = 0.0; "matrix" and sets } v o i d c a l c u l a t e _ x _ c o o r d s ( d o u b l e matrix[][number_of_bins]) { f o r ( i n t i=0;i<number_of_bins;i++) //determines the x-coordinate corresponding to each //grid point in the array "matrix" by calculating how //far it must be from the left end of the grid { m a t r i x [ 0 ] [ i ] = -max_dist + m e s h _ s i z e * i ; } } v o i d output_location_screen(double matrix[][number_of_bins], i n t rows) { f o r ( i n t i=0; i<number_of_bins; i++) //runs over all entries in the array "matrix" and //outputs them to the screen. output is in standard //math matrix format { f o r ( i n t j=0; j<rows; j++) { } cout << m a t r i x [ j ] [ i ] cout << e n d l ; } << " " ; Appendix B. Source Code for Stochastic Simulations 81 } v o i d i n i t i a l _ f i l l ( d o u b l e m a t r i x [] [number_of_bins]) { matrix[1][number_of_bins/2]=1; //places one //to individual at the grid point corresponding x=0 } v o i d c a l c u l a t e _ N e f f ( d o u b l e m a t r i x [] [number_of_bins], d o u b l e sigma) { double effect; f o r ( i n t i=0; i<number_of_biris; i ++) //this effective //at loop each calculates grid the population density point { if(matrix[1][i] > 0.0) //if no there is //effective { one alive population effect at this density grid is point set to the 0.0 = 0.0; f o r ( i n t j=0; j<number_of_bins; //this sums loop //(weighted by //kernel) of up the all //essentially j++) weighted effect quasi-local interaction individuals this //approximation the of on is performing the integral the grid a riemann sum form { effect=effeet + matrix[1][j]*exp(-(pow(matrix[0][j] -matrix[0][i],2.0)/(2*sigma*sigma))); } effect = //multiplies //approximate //effective mesh_size*(effect)/(sqrt(2*pi)*sigma); by the width riemann density matrix[2][i] = effect; as of each bin sum and normalizes in the integral to the form Appendix B. Source Code for Stochastic Simulations //places the //density } } value in the of the third effective row of 82 population the array "matrix" } v o i d copy_matrix ( d o u b l e m a t r i x l [] [number_of_bins], matrix2[number_of_bins], i n t row_to_copy) double { for(int i=0; i<number_of_bins; //simply //row { of copies row-to-copy matrix 1 i++) of matrix 2 into the same matrixl[row_to_copy][i] = matrix2[i]; } } v o i d determine_survivors(double matrix[][number_of_bins]) { for(int //this i=0; i<number_of_bins; loop //grid { determines the i++) number of grid point, each m a t r i x [ 4 ] [ i ] = 0; //if there //calculate //set { > 0.0) are individuals their it equal survival to m a t r i x [3] [ i ] = f o r ( i n t j=0; at this probability. 0.0 1/(l+a*matrix[2][i]); j<matrix[l][i]; j++) { i f ( m a t r i x [ 3 ] [ i ] > UniformDev()) matrix[4][i]++; } } } at point if(matrix[1][i] } survivors otherwise 83 Appendix B. Source Code for Stochastic Simulations void calculate_offspring(double matrix[][number_of_bins]) { f o r ( i n t i=0; i<number_of_bins; //this determines loop //produced at each i++) the grid number of offspring to be point { matrix[5][i] = 0; if(matrix[l][i] //if there //the > 0.0) are number //offspring adults of is at this offspring. set to grid point, Otherwise calculate the number of 0 { f o r ( i n t j=0; j<matrix[4][i]; //this draws loop //offspring for each //and places the //the sixth row j++) a Poisson(lambda) adult total at number number this of grid of point offspring in { matrix[5][i] //note: //number //mean } } = matrix[5][i] + PoissonDev(lambda) from PoissonDev(lambda); draws a Poisson a random distribution with lambda } } v o i d move_off s p r i n g ( d o u b l e m a t r i x l [] [number_of_bins], double matrix2[number_of_bins]) { int direction //if = 0; direction //direction = 1 movement = -1 movement is to is to of grid the the right, if left d o u b l e distance = 0.0; int change__in_bin_number = 0; //this will //will be be shifted the number from its current points the location individual 84 Appendix B. Source Code for Stochastic Simulations for(int //this i=0; loop i<number_of_bins;i++) moves the offspring for each grid point { f o r f i n t j=0; j < m a t r i x l [ 5 ] [ i ] ; j++) //this loop is iterated once for //this grid point each offspring at { //first the direction of movement is determined //by pulling a uniform random (0,1) deviate i f (UniformDevO < 0.5) //if the deviate is less than 0.5 the individual //moves left direction = - 1 ; else //otherwise it moves right d i r e c t i o n = 1; d i s t a n c e = GaussDev(0, sigma_disp); //this determines the distance the individual //will move in that direction by pulling a //random deviate from a Normal(0, sigma-d) //distribution change_in_bin_number = d i r e c t i o n * int(floor(distance/mesh_size + 0.5)); //the number of grid points the individual will //be moved left or right is calculated here if(i+change_in_bin_number < number_of_bins && i+change_in_bin_number >= 0) matrix2[i+change_in_bin_number]++; //provided the new grid point is not outside //the fixed grid established, the number of //individuals at the new grid point is //incremented by one else cout « "OUT OF BOUNDS, LOST ONE" « e n d l ; //if the new grid point is out of range, an //error message is output to the screen } of 85 Appendix B. Source Code for Stochastic Simulations } } double GaussDev mean, (double double std) { double W= double wl = 0.0; double w2 = 0.0; 1.0; w h i l e (W>=1) //this is the standard method for drawing //random deviates. See Press (2002) for N(mean,std) details { wl = 2 * U n i f o r m D e v ( ) - l ; w2 = 2*UniformDev()-1; W = wl*wl+w2*w2; } (mean + s q r t ( - 2 * l o g ( W ) / W ) * w l * s t d ) ; return double maxdistance (double m a t r i x [] [number_of_bins ]) { double //the f a r t h e s t _ l e f t = 0.0; location double of the farthest individual //the loc. of the farthest indiv. to the i n t c o u n t e r l = 0; //counter that starts at left end of the i n t counter2 = number_of_bins - 1 ; //counter that starts at right end of the while(farthest_left==0.0 //this //checks to left loop runs grid/mesh grid/mesh && c o u n t e r l < number_of_bins) from the each grid right point left until end of the mesh and an individual { i f ( m a t r i x [ 1 ] [ c o u n t e r l ] != 0) farthest_left = fabs(matrix[0][counterl]); counterl++; } the f a r t h e s t _ r i g h t = 0.0; is found 86 Appendix B. Source Code for Stochastic Simulations w h i l e (farthest_right==0.0 //this //an loop runs from individual is && counter2 the right >= 0) end of the mesh until found { i f ( m a t r i x [ 1 ] [ c o u n t e r 2 ] != 0) farthest_right = fabs(matrix[0] [counter2]); counter2—; } i f (farthest_left //if the //origin return farthest_right) individual return return its is farthest from the distance farthest_left; farthest_right; //otherwise return //individual double >= leftmost the (Note, distance if no one of is the farthest right 0 is returned alive, average_wave_movement() { int number_of_points = 1000; //the maximum //must double //the be //the of or data equal points to the expected number of generations xcoords[number_of_points]; array double number greater of the x-values ycoords[number_of_points]; array of the corresponding y-values i f s t r e a m in_stream; //the input file stream f o r ( i n t j=0; j<number_of_points; //runs //zeroes over the arrays them { } xcoords[j] = 0.0; ycoords[j] = 0.0; xcoords j++) and ycoords and 87 Appendix B. Source Code for Stochastic Simulations in_stream.open("maxdistance.dat") ; //assigns the input stream to and opens the input file i n t c o u n t e r l = 0; //tracks the number of data points //in from the input file w h i l e (! i n _ s t r e a m . eof ()) //this loop places the input data //the xcoord and ycoord arrays that have been from the file read into { in_stream >> x c o o r d s [ c o u n t e r l ] ; //xcoords[counterl] = next; in_stream >> y c o o r d s [ c o u n t e r l ] ; //ycoords[counterl] = next; counterl++; //note that this increments counterl one too many //times, which is why I use counterl-1 below, //note also that there are two blank lines at the //end of the input file, and so this loop proceeds //for one iteration too many } double for(int sum_y = 0 . 0 ; j=discard;j<counterl-l;j++) //This loop runs over the data values for generations //that are not desired to be discarded and sums the //differences in the location of the invasion front { sum_y = sum_y + y c o o r d s [ j ] - y c o o r d s [ j - 1 ] ; } in_stream.close(); return (sum_y/double(counterl-l-discard)) ; //returns the average //wavefront locations distance between successive for the non-discarded generations
- Library Home /
- Search Collections /
- Open Collections /
- Browse Collections /
- UBC Theses and Dissertations /
- Analysis of an integrodifference model for biological...
Open Collections
UBC Theses and Dissertations
Featured Collection
UBC Theses and Dissertations
Analysis of an integrodifference model for biological invasions with a quasi-local interaction Merchant, Sandra M. 2003
pdf
Page Metadata
Item Metadata
Title | Analysis of an integrodifference model for biological invasions with a quasi-local interaction |
Creator |
Merchant, Sandra M. |
Date Issued | 2003 |
Description | The behaviour of a new model for the spatial spread of biological invasions with non-overlapping synchronous generations and well-defined dispersal and sedentary stages is examined. In this integrodifference model, competition between conspecifics takes the form of a quasi-local interaction, where the strength of competition between two individuals depends on their physical distance from each other. Both the deterministic model and a stochastic analogue are examined by numerically simulating the spread of a localized initial population over several generations. By modelling intraspecific competition with a quasi-local interaction, the shape of the travelling waves changed significantly from that of the classical model with only local competition, creating more variable and complex wavefront shapes than are possible with the classical model. The addition of quasi-local competition was also found to alter several aspects of the initial behaviour of this model, including the invasion speed and spatial structure, although in the deterministic case the asymptotic invasion speed and population density behind the front of the wave agreed with those of the classical model. In the stochastic analogue, however, the rate of spread of the invasion was found to be considerably lower than that of the classical model, both initially and asymptotically. Furthermore, the speed achieved by the stochastic invasions was found to depend on the parameters of the quasi-local interaction kernel. |
Extent | 3795157 bytes |
Genre |
Thesis/Dissertation |
Type |
Text |
File Format | application/pdf |
Language | eng |
Date Available | 2009-10-31 |
Provider | Vancouver : University of British Columbia Library |
Rights | For non-commercial purposes only, such as research, private study and education. Additional conditions apply, see Terms of Use https://open.library.ubc.ca/terms_of_use. |
DOI | 10.14288/1.0079411 |
URI | http://hdl.handle.net/2429/14518 |
Degree |
Master of Science - MSc |
Program |
Mathematics |
Affiliation |
Science, Faculty of Mathematics, Department of |
Degree Grantor | University of British Columbia |
Graduation Date | 2003-11 |
Campus |
UBCV |
Scholarly Level | Graduate |
Aggregated Source Repository | DSpace |
Download
- Media
- 831-ubc_2003-0564.pdf [ 3.62MB ]
- Metadata
- JSON: 831-1.0079411.json
- JSON-LD: 831-1.0079411-ld.json
- RDF/XML (Pretty): 831-1.0079411-rdf.xml
- RDF/JSON: 831-1.0079411-rdf.json
- Turtle: 831-1.0079411-turtle.txt
- N-Triples: 831-1.0079411-rdf-ntriples.txt
- Original Record: 831-1.0079411-source.json
- Full Text
- 831-1.0079411-fulltext.txt
- Citation
- 831-1.0079411.ris
Full Text
Cite
Citation Scheme:
Usage Statistics
Share
Embed
Customize your widget with the following options, then copy and paste the code below into the HTML
of your page to embed this item in your website.
<div id="ubcOpenCollectionsWidgetDisplay">
<script id="ubcOpenCollectionsWidget"
src="{[{embed.src}]}"
data-item="{[{embed.item}]}"
data-collection="{[{embed.collection}]}"
data-metadata="{[{embed.showMetadata}]}"
data-width="{[{embed.width}]}"
async >
</script>
</div>
Our image viewer uses the IIIF 2.0 standard.
To load this item in other compatible viewers, use this url:
http://iiif.library.ubc.ca/presentation/dsp.831.1-0079411/manifest