SPB Git
2.2 KB · 37 lines python
1#!/usr/bin/env python32"""Figure ch06 — usufruit viager sur la maison du cas 1 (DONNÉES SYNTHÉTIQUES, table de mortalité synthétique) :3(a) courbes de survie tp_x de la table synthétique pour trois âges ; (b) part de la nue-propriété NP/V selon l'âge de4l'usufruitier pour trois taux d'actualisation, comparée à l'approximation par un terme fixe égal à l'espérance de vie.5Sortie : assets/figures/ch06/ch06-fig-usufruit.pdf"""6import sys, pathlib7ROOT = pathlib.Path(__file__).resolve().parents[3]8sys.path.insert(0, str(ROOT / "analysis/python")); sys.path.insert(0, str(ROOT / "analysis/python/cases"))9import numpy as np, matplotlib.pyplot as plt10from traite.style import setup, palette, savefig, LARGEUR11import ch06_demembrements as cas121314def main():15    setup()16    V = cas.V_ARRONDI17    fig, (a, b) = plt.subplots(1, 2, figsize=(LARGEUR, 3.1), gridspec_kw={"width_ratios": [1, 1.15]})18    for i, x in enumerate((55, 65, 75)):19        t = np.arange(0, cas.OMEGA - x + 1)20        a.plot(x + t, [cas.survie(x, k) for k in t], color=palette.cat[i], label=f"usufruitier de {x} ans")21    a.set_xlabel("Âge atteint (années)"); a.set_ylabel("Probabilité de survie $_t p_x$"); a.set_ylim(0, 1.02); a.set_xlim(55, 110)22    a.legend(loc="lower left"); a.set_title("(a) Table de mortalité synthétique", loc="left")23    ages = np.arange(50, 91)24    for i, r in enumerate((0.04, 0.05, 0.06)):25        b.plot(ages, [cas.usufruit_viager(V, int(x), r)["part_NP"] for x in ages], color=palette.cat[i], label=f"viager, $r$ = {r*100:.0f} %")26    approx = [cas.approximation_terme_espere(V, int(x), 0.05)["part_NP"] for x in ages]27    b.plot(ages, approx, color=palette.ink2, ls="--", lw=1.2, label="terme fixe = durée espérée, $r$ = 5 %")28    b.set_xlabel("Âge de l'usufruitier à la date d'évaluation"); b.set_ylabel("Nue-propriété / pleine propriété")29    b.set_ylim(0.2, 1.0); b.yaxis.set_major_formatter(plt.FuncFormatter(lambda y, p: f"{y*100:.0f} %"))30    b.legend(loc="upper left", fontsize=7.5); b.set_title("(b) Part de la nue-propriété ($g$ = 1,5 %)", loc="left")31    fig.tight_layout(w_pad=2.0)32    out = savefig(fig, "ch06/ch06-fig-usufruit.pdf"); print("OK", out)333435if __name__ == "__main__":36    main()37
Files · ac7e5213a2af3676c22c1500a18fcfe86d2041bc
Menu

Theme