LoveHateDynamicsRomeo and Juliet model as introduced by Strogatz |
![]() |
This information is part of the Business Simulation Library (BSL). Please support this work and ► donate.
Using the →LinearInteraction we can model Steven H. Strogatz' differential equation model for the dynamics in a love affair—conspiciously between Juliet and Romeo [16].
In his example—given in 1988—Strogatz described Romeo as a "fickle" lover who is "turned off" the more Juliet starts to warm up to him. On the other hand, the more Juliet dislikes him, the more he starts to approach Juliet. Juliet in comparison is a rather "regular" lover: The more Romeo loves her, the more she will love him and, conversely, the more he hates her, the more she hates him.
To put this in mathematical form, we use stocks to account for Romeo's (reomeo
) and Juliet's feelings (reomeo
) at any time in the simulation. We define, that 1
is to describe the highest possible degree of love, while -1
is to express the highest possible degree of hate. Initially, Romeo is fully in love with Juliet (i.e., romeoInitial = 1
), while Juliet does not care about him (i.e., julietInitial = 1
).
The relationship's dynamics arise from coupled differential equations, which can be compactly expressed using an → Interaction flow. Using a bit of shorthand notation, the system is described more generally by the following equations:
The change in the states for Romeo (R) and Juliet (J) depends upon coupling coefficients. Both lovers have an intrinsic and and extrinsic coupling coefficient. In our example, there is no intrinsic coupling (i.e., romeoIntrinsic = julietIntrinsic = 0
). The extrinsic coupling factors given according to the above description are: romeoExtrinsic = -1, julietExtrinsic = 1
:
Simulating the example quickly shows, why the technical term for this system is harmonic oscillator.
romeoInitial |
Value: 1 Type: Real Description: Initial level (should be different from 0 to find non-trivial steady state solution) (romeo.initialValue) |
---|---|
julietInitial |
Value: 0 Type: Real Description: Initial level (should be different from 0 to find non-trivial steady state solution) (juliet.initialValue) |
romeoIntrinsic |
Value: 0 Type: Rate (1/s) Description: Gain for Romeo's feelings independent from Juliet |
julietIntrinsic |
Value: 0 Type: Rate (1/s) Description: Gain for Juliet's feelings independent from Romeo |
romeoExtrinsic |
Value: -1 Type: Rate (1/s) Description: Gain for Romeo's love aroused by Juliet |
julietExtrinsic |
Value: 1 Type: Rate (1/s) Description: Gain for Juliet's love aroused by Romeo |
![]() |
modelOutput |
Type: DataOutPort Description: The model's main output |
---|
![]() |
modelSettings |
Type: ModelSettings Description: Setting important global variables within a model |
---|---|---|
![]() |
romeo |
Type: InformationLevel Description: Romeo's love (>0) or hate (<0) for Juliet |
![]() |
juliet |
Type: InformationLevel Description: Juliet's love (>0) or hate (<0) for Romeo |
![]() |
loving |
Type: LinearInteraction Description: Interacting forces of love |
modelOutput
and updated plots in v2.0.0.