Numerical continuation of nonlinear equilibrium equations
Project description
contique
Numeric continuation of equilibrium equations
Fig.1 Archimedian spiral equation solved with contiqueExample
A given set of equilibrium equations in terms of x
and lpf
(a.k.a. load-proportionality-factor) should be solved by numeric continuation of a given initial solution.
Function definition
def fun(x, lpf, a, b):
return np.array([-a * np.sin(x[0]) + x[1]**2 + lpf,
-b * np.cos(x[1]) * x[1] + lpf])
with it's initial solution
x0 = np.zeros(2)
lpf0 = 0.0
and function parameters
a = 1
b = 1
Run contique.solve
and plot equilibrium states
Res = contique.solve(
fun=fun,
x0=x0,
args=(a, b),
lpf0=lpf0,
dxmax=0.05,
dlpfmax=0.05,
maxsteps=80,
maxcycles=4,
maxiter=20,
tol=1e-6,
)
For each step
a summary is printed. This contains needed Newton-Rhapson iterations
per cycle
and an information about the control component at the beginning and the end of a cycle. Finally the lpf
, control
and equilibrium norm
values are listed. As an example the ouput of Step 77 is shown below.
Begin of Step 77
====================================================================
| Cycle | converged in | control component |
|-------|-------------------------------------|--------------------|
| # 1 | Solution converged in 1 Iteration | from -2 to -1 |
| # 2 | Solution converged in 2 Iterations | from -1 to -1 |
*final lpf value = -5.376e-01
*final control value = 3.179e+00
*final equilibrium = 1.949e-09 (norm)
Next, we have to assemble the results
X = np.array([res.x for res in Res])
and plot the solution curve.
import matplotlib.pyplot as plt
plt.plot(X[:, 0], X[:, 1], ".-")
plt.xlabel('$x_1$')
plt.ylabel('$x_2$')
Fig.2 Solution of equilibrium states solved with contique
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.