Bonjour, J’essaye de réaliser le calcul suivant: theta = (mesure_capteur - mesure_capteur_calculé) x mesure_capteur_calculé x gamma x Tech x (z/(z-1)). Il s’agit d’une commande adaptative dont l’explication est présente ici: https://fr.mathworks.com/help/physmod/sps/ref/modelreferenceadaptivecontroller.html voici le code que j’ai réalisé:
#include <stdio.h>
int main()
{
float y = 19.9;
float ym = 20.1;
float gamma = 0.01;
float Ts = 1.0;
float integral = 0.0;
float theta = 0.0;
float theta_1 = 0.0;
int i = 0;
while(i < 1000)
{
theta = (y-ym)*ym*gamma;
integral = integral +((theta+theta_1)/2.0)*1.0;
theta_1 = theta;
printf("integral = %f \n",integral);
i++;
}
return 0;
}
voici aussi le bout de code sur un debugger en ligne: https://www.onlinegdb.com/Hy0SeKK28
Le problème que je rencontre est que le résultat de theta diverge vers des valeurs très grandes alors que normalement, avec les valeurs que j’ai choisi, la valeur de theta devrait être proche de 1. Je pense que le problème vient de mon calcul d’integral, sauriez vous comment corriger le problème ? Merci d’avance
+0
-0