-
Dorchies David authored35e86aa2
/**
* 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;
}
}