Besoin de comprendre la logique de cet algo
Bonjour,
j'ai l'algorithme suivant qui définit la fonction $I$ qui véfifie la condition
$$I(x,t-\tau) = 0 \quad \mbox{si} \quad t < \tau \qquad \mbox{ et } \qquad I(x,0)=I_0,
$$ puis qui résout le système de trois équations à trois inconnues $U, I, V$ suivant :
$$
dU/dt=-a UV, \quad dI/dt=-aUV - \sigma_1 I, \quad dV/dt = D d^2V/dx^2+aI(x,t-\tau) - \sigma_2 V.
$$ (il est noté SYSTEM dans l'algorithme où $a,D, \sigma_1, \sigma_2$ sont des constantes.
L'algorithme est le suivant.
Cordialement.
j'ai l'algorithme suivant qui définit la fonction $I$ qui véfifie la condition
$$I(x,t-\tau) = 0 \quad \mbox{si} \quad t < \tau \qquad \mbox{ et } \qquad I(x,0)=I_0,
$$ puis qui résout le système de trois équations à trois inconnues $U, I, V$ suivant :
$$
dU/dt=-a UV, \quad dI/dt=-aUV - \sigma_1 I, \quad dV/dt = D d^2V/dx^2+aI(x,t-\tau) - \sigma_2 V.
$$ (il est noté SYSTEM dans l'algorithme où $a,D, \sigma_1, \sigma_2$ sont des constantes.
L'algorithme est le suivant.
int ntau=tau/dt; Itausave=I0; Itau(:,0)=Itausave[]; int ittau=0,ittmtau=0; for (real t=0;t<T;t+=dt){ if(t<tau){ if(tau>0){ Itmtau=0; } else { Itmtau=I0; } SYSTEM; if(tau>0){ ittau++;//l'indice de la ligne d'après dans Itau Itausave=I; Itau(:,ittau)=Itausave[]; } } else { if(tau>0){ if(ittau==(ntau+1)){ ittau=0; ittmtau=0; } Itmtau[] = Itau(:,ittmtau); SYSTEM; ittmtau++; Itausave=I; Itau(:,ittau)=Itausave[]; ittau++; } else { Itmtau=I0; SYSTEM; } }Est-ce que quelqu'un peut m'expliquer ce que ce bout de programme fait ?
Cordialement.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
on ne devrait pas avoir à poser ce genre de question car un tel programme ne devrait pas exister. Pas un seul commentaire. Peut-être y a-t-il un en-tête mais ce n'est pas sûr.
Cordialement.
Si, il y en a un, par contre pas de chance, il explique une chose qui n'a pas lieu d'être expliquée comparativement à d'autres opérations qui sont fournies sans explications.
Effectivement, c'est un très mauvais exemple de code :
_ Quelque déclarations de variables, mais loin d'être suffisant.
_ Nommage non homogène des variables
_ Beaucoup d'opérations cachées dans des boucles implicites. Au passage, je me demande si cette machinerie tourne vraiment. J'aimerais avoir un exemple d'instanciation.
_ Utilisation outrancière de 'if then', peut-être légitime, mais cela ne participe pas à la lisibilité et cela peut très certainement être amélioré, seulement, en l'état ce serait compliqué sans plus d'explication sur la méthode d'origine (je suppose du Euler, sans certitude).
À bientôt.
Cherche livres et objets du domaine mathématique :
Intégraphes, règles log et calculateurs électromécaniques.
Déjà, contrairement à ce qu'écrit Mati, ce n'est pas un algorithme, c'est un bout de programme, écrit dans on ne sait quel langage, isolé de son contexte et de ses racines, avec des variables non déclarées dès la première ligne, etc...
Bref, c'est illisible.
Si un étudiant m'avait rendu une telle cochonnerie, c'était $0$ sans plus rentrer dedans.
Cordialement,
Rescassol
je m'excuse je pensais bien faire en n'envoyant que le bout de code qui concerne ma question bien précise à savoir comment programmer I(x,t-\tau) à chaque itératrion sur t.
Le programme est écrit en FF++ et le voici au complet. J'espère que quelqu'un peut m'aider
Il y a juste trois lignes commentées, dont deux qui sont franchement accessoires.
Cordialement.
Cherche livres et objets du domaine mathématique :
Intégraphes, règles log et calculateurs électromécaniques.