An error occurred while loading the file. Please try again.
-
Grand Francois authoredfc68250b
import { Debug, IParamsEquation, Result, Serie } from "./base"
import { Dichotomie } from "./dichotomie"
/**
* 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: IParamsEquation;
constructor(paramsEq: IParamsEquation, dbg: boolean = false) {
super(dbg);
this.v = paramsEq;
}
/**
* Formule utilisée pour le calcul analytique (solution directe ou méthode de résolution spécifique)
*/
abstract Equation(sVarCalc: string): Result;
/**
* Calcul d'une équation quelque soit l'inconnue à calculer
* @param sVarCalc nom de la variable à calculer
* @param rInit valeur initiale de la variable à calculer dans le cas de la dichotomie
* @param rPrec précision de calcul
*/
Calc(sVarCalc: string, rInit: number = 0, rPrec: number = 0.001): Result {
this.debug("nub : sVarCalc=" + sVarCalc);
this.debug("nub : rInit=" + rInit);
this.debug("nub : rPrec=" + rPrec);
for (let sVarEq of this._varsEq) {
if (sVarCalc == sVarEq) {
return this.Equation(sVarCalc);
}
}
return this.Solve(sVarCalc, rInit, rPrec);
}
CalcSerie(svarCalc: string, serie: Serie): Result[] {
/** @todo faire une boucle pour appeler this.Calc avec chaque valeur de serie.values
*
*/
// let results = [new (Result)];
let results = [new Result(0)];
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
* @param sVarCalc nom de la variable à calculer
* @param rInit valeur initiale de la variable à calculer dans le cas de la dichotomie
717273747576777879
* @param rPrec précision de calcul
*/
Solve(sVarCalc: string, rInit: number, rPrec: number): Result {
let dicho: Dichotomie = new Dichotomie(this, sVarCalc, this.DBG);
var target = this.v[this._varsEq[0]];
return dicho.Dichotomie(target, rPrec, rInit);
}
}