base.ts 2.69 KiB
/**
 * Résultat de calcul comprenant la valeur du résultat et des calculs annexes (flag, calculs intermédiaires...)
 */
export class Result {
    /** Valeur calculée */
    public vCalc: number;
    /** Variables intermédiaires, flags d'erreur */
    public extraVar: {};    
/**
 * Série de valeurs à calculer définie par le nom de la variable à sérier et le vecteur de valeur
export class Serie {
    public name: string;
    public values: number[];
    constructor(name: string, values: number[]) {
        this.name = name;
        this.values = values;
export interface IParametres {
    [key: string]: number;
/**
 * Gestion des messages de debogage dans la console
 * @note Etendre cette classe pour toutes les classes à debugguer
 * Dans le constructeur, utiliser super(true) pour debugger la classe, super(false) sinon.
export abstract class Debug {
    /**
     * @param DBG Flag de débuggage
    constructor(private DBG: boolean) {}
    /** 
     * Affiche un message dans la console si le flag this.DBG est à true
     * @param s Message à afficher dans la console
    protected debug(s: any) {
        if(this.DBG) console.log(s);
/**
 * Classe abstraite de Noeud de calcul : classe de base pour tous les calculs
export abstract class Nub extends Debug {
    /// Nom des variables calculées par la méthode Equation
    private _varsEq: string[];
    public v: IParametres;
    constructor(parametres: IParametres) {
        super(false);
        this.v = parametres;
    /** 
     * Formule utilisée pour le calcul analytique (solution directe ou méthode de résolution spécifique)
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
abstract Equation(sVarCalc: string): Result; /** * Calcul d'une équation quelque soit l'inconnue à calculer */ Calc(sVarCalc: string): Result { for(let sVarEq of this._varsEq) { if(sVarCalc == sVarEq) { return this.Equation(sVarCalc); } } return this.Solve(sVarCalc); } CalcSerie(svarCalc: string, serie: Serie): Result[] { /** @todo faire une boucle pour appeler this.Calc avec chaque valeur de serie.values * */ let results = [new (Result)]; return results; } get sVarsEq(): string[] { return this._varsEq; } set sVarsEq(sVarsEq: string[]) { this._varsEq = sVarsEq; } AddVarEq(sVarEq: string) { this._varsEq.push(sVarEq); } /** * Résoud l'équation par une méthode numérique */ Solve(sVarCalc: string): Result { let res: Result; /** @todo Résolution par méthode numérique (dichotomie...) */ return res; } }