Si tu souhaites avoir de l'aide, je te conseillerais de mettre ton code dans la balise « [code] » et d'utiliser des variables nommées. Car pour le moment, c'est pas terrible pour comprendre le code. Ramz.
Salut les amies,
Alors j'ai un problème je ne me retrouve plus dans mon code. Je vous fais un résumé :
Une page est appélé et un formulaire s'ouvre : on dois taper une chaine de caractère de la forme 1,2,3 si pas bug !
<?php
/**
*
*/
class MatrixComponent extends Component
{
// je peux définir les variables de bases sans faire l'init de diagonalize
// mais je peux aussi traiter autremzent la matrice !
//
public $controller =false;
public $M = '';
public $T = '';
public $dim = ''; // reconstruire la classe !
// l'idée c'est que je fais toutes les manipulations que je veux mais sympy se lance une fois seulement
//
// complexe mais cake veut ça !
// ce truc me permet de récupérer les infos et je n'ai plus besoin de passer en variant
// $M ?
public function __construct(ComponentCollection
//
}
// Fonctions d'initialisations principales !
// initialise toute les variables init_diagonize_$var
public function init_diagonize($M){
// $m='1,2,3'
$init=array();
if(preg_match(
// debug($init);
return $init;
}
// initialise toute les variables init_suite_$var
// Remarque attention a l'ordre des fonctions c'est important pour sympy !
public function init_diagonize_m($M){
return count(explode(',',trim($M)));
}
public function init_diagonize_spec($M){
return $M; // variable de class
}
// init du polynome caracteristique
public function init_diagonize_car(
}
public function init_diagonize_D(
return
}
public function init_diagonize_T($M){
return $this->T;
}
// Pour twiter les trucs
public function init_diagonize_P($M){
return 'Matrix(3,3,[1,0,1,-1,1,0,2,0,1])';
}
public function init_diagonize_PT($M){
return 'P*T';
}
public function init_diagonize_A($M){
return "PT.inv()*D*PT";
}
// suite_init
public function init_diagonize_Dn(
foreach (
}
return
}
public function init_suite_An(){
return "PT.inv()*Dn*PT";
}
public function init_suite_Xo(){
return $this->ConstructVector(array('1','1','0'));
}
public function init_suite_X(){
return $this->ConstructVector(array('u_n','v_n','w_n'));
}
public function init_suite_AX(){
return 'A*X';
}
public function init_suite_AnXo(){
return 'An*Xo';
}
// Fonctions utilitaires
// Permet d'initialiser la bonne variable pour sympy
public function name(
return end($nom);
}
// Permet de créer une matrice inversible (ici triangulaire) de taille $n
public function createTriangMatrix(
}else{
}
if (
}else{
if(
}else{
}
}
}
return $M;
}
public function diag(
if (
}
else {
}
return $M;
}
public function ConstructMatrix(
return 'Matrix('.
}
public function ConstructVector(
return 'Matrix('.
}
}
Vous pensez que c'est bien d'initialisé une variable à l'aide du nom de la fonction que je fais ???
2 réponses
Oui, ok ! mais j'ai complétement refait le système ! != pour me répondre : mon système était con ! initialiser des variable a partir du nom de la fonction c'est un peu trop lourd ! Mais no soucis j'ai fais (put you're favorite number here) mieux ?
Donc plus besoin d'initialisation depuis php ! Mais je lance un script python pour faire mes calculs de maths, et je créer mes helper a la volée !
class LatexComponent extends Component{
public function latex($datas){
$file="python/restrucScript.py";
$contenu=file_get_contents($file);
$ligne1 = implode("\n", $datas);
$contenu = '$'.$ligne1."\n".$contenu;
return $this->latex_rest($contenu);
}
public function insert($datas,$files){
$fichier="python/test1.py";
$text=fopen($fichier,'r') or die("Fichier manquant");
$contenu=file_get_contents($fichier);
// debug($contenu);
$contenuMod=str_replace('fonction', $datas,$contenu);
fclose($text);
//ouverture en écriture du fichier
$text2=fopen($files,'w+') or die("Fichier manquant");
// remplacement du mot clé fonction par la valeur de la fonction
fwrite($text2,$contenuMod);
fclose($text2);
// return true;
}
public function latex_rest($datas){
$datas_array = explode("\n",$datas);
$datas=implode("\n",$datas_array);
foreach ($datas_array as $key => $ligne) {
$pattern_1 = '`^$]{1}^$](.*)`';
$pattern_2 = '`$]{2}(.*)`';
if(preg_match($pattern_1, $ligne)){
$ligne = str_replace('$', '',$ligne);
$ligne_array = explode('=',$ligne);
$nom = $ligne_array[0];
$ligne=$ligne."\n".'fichier.write("'.$nom.'__"+latex('.$nom.')+"\n")';
echo($ligne).'</br>';
$datas_array$key] = $ligne;
}
if(preg_match($pattern_2, $ligne)){
if(!isset($echap_python)){
debug($ligne);
$echap_python=explode('$$',$ligne)[0];
debug($echap_python);
// $echap_python =explode('P',$ligne_array[0])[0];
}
$ligne = str_replace('$', '',$ligne);
$ligne_array = explode('=',$ligne);
$nom = trim(explode('+',$ligne_array[0],2)[0]);
$nom_meth = trim(explode('(',$ligne_array[1])[0]);
$args = '('.explode('(',$ligne_array[1],2)[1];
$ligne=$echap_python.'define('."'".$nom."',i)"."\n".$echap_python.'As('.$nom_meth.$args.')';
$datas_array$key] = $ligne;
}
}
$datas=implode("\n",$datas_array);
$files = "python/restruc_temp.py";
$this->insert($datas,$files);
system('python python/restruc_temp.py');
// traitement du fichier latex de sortie !
$file="python/res1";
$res =fopen($file,'r') or die("Fichier manquant");
$contenu=file_get_contents($file);
$contenu = explode("\n",$contenu);
// echo 'contenu';
// debug($contenu);
$a = array();
foreach ($contenu as $ligne) {
$ligne = explode('__',$ligne);
debug($ligne);
$a$ligne[0]] = $ligne[1];
}
fclose($res);
array_pop($a);
debug($a);
return $a;
}
}