Votre définition de la causalité est erronée. C’est en fait beaucoup plus simple et beaucoup plus intuitif. Un système causal est un système dans lequel la sortie ne dépend pas des valeurs futures de l’entrée. Cette propriété n’est pas exclusive des systèmes linéaires et peut s’appliquer aux systèmes en général. Voici quelques exemples pour illustrer le propos :
Système linéaire causal invariant dans le temps :
$y = x – 2x + 0,5y$$
Ici $y$ ne dépend que des valeurs actuelles et précédentes de $x$ et $y$.
Système linéaire non causal invariant dans le temps:
$y = \frac{1}{2}x + \frac{1}{2}x$
Aussi appelée moyenne mobile centrale, cette fonction est non causale car pour la sortie $y$, le terme $x$ jette un coup d’œil dans le futur de notre entrée.
Système non linéaire invariant dans le temps causal:
$y = \cos(x)$$
C’est l’exemple que vous avez fourni. Comme vous l’avez peut-être deviné maintenant, puisque nous ne regardons jamais une entrée future, ce système est causal. En fait, il est même plus spécial que cela. Parce que la sortie actuelle est une fonction uniquement de l’entrée actuelle (pas des entrées passées ou futures), ce système est appelé un système sans mémoire.
Système linéaire causal variant dans le temps:
$$y = (n+1)x$$
J’ai inventé celui-ci pour être un peu un casse-tête. Au premier abord, on peut penser que ce système est non causal car il y a ce terme $(n+1)$. Mais cela n’a pas d’importance car il ne s’agit pas d’un indice temporel de $x$. Nous ne regardons toujours que la valeur actuelle de l’entrée et nous ne regardons pas en avant. C’est aussi un exemple de système sans mémoire.
Un délicat système causal non linéaire à variation temporelle:
$y = e^nx + \ln\left(\left|x\right|+1\right) – \pi y$$
De toute évidence, il s’agit ici d’un système non causal à cause du terme $y$, non ? Faux ! Il s’agit d’une définition classique d’un système causal récursif avec quelques termes réarrangés. Nous allons la ramener à une forme plus standard en trois étapes :y = e^nx + \ln\left(\left||+1\right) – \pi y$$$$\pi y = e^nx + \ln\left(\left|x\right|+1\right) – y$$$$\pi y = e^nx + \ln\left(\left||x\right|+1\right) – y$$$$y = \frac{e^nx + \ln\left(\left|x\right|+1\right) – y}{\pi}$
L’avant-dernière ligne a été obtenue en substituant $k=n+1$. L’astuce ici est qu’il y a des relations entre les sorties à différents moments. Mais une fois qu’on l’a compris, aucune sortie ne dépend jamais de la valeur future d’une entrée par rapport à elle-même. La non-linéarité et la variance temporelle ont été ajoutées pour rendre l’exercice plus amusant et plus difficile. Assurez-vous de comprendre ce que dit celui-ci.
Comme vous pouvez le voir, la causalité peut être une propriété de toutes sortes de systèmes et il y a beaucoup d’autres exemples amusants et bizarres que l’on peut trouver.
Maintenant, passons à la résolution de votre paradoxe. La clé réside dans la réalisation que vos définitions de la causalité et de la linéarité (et peut-être de l’invariance temporelle, aussi) un peu enchevêtrées et confuses. Résoudre le paradoxe de façon amusante est aussi simple que d’ajouter le mot linéaire dans vos deux définitions (l’invariance temporelle jouera également un rôle subtil). Voici comment.
Définition 1 : Un système linéaire est causal si et seulement si la sortie $y$ est afonction d’une combinaison linéaire d’entrées $x$ telle que $k \ge0$.
C’est parce que tous les systèmes ne sont pas des combinaisons linéaires d’entrées. Les systèmes linéaires le sont. Un système causal ne dépend que des entrées passées et actuelles, donc un système linéaire causal est une combinaison linéaire des entrées actuelles et précédentes. En fait, pour être précis avec la définition, les systèmes linéaires sont des combinaisons linéaires des entrées et des sorties, et dans les systèmes linéaires causaux les sorties au temps $n$ ne peuvent pas dépendre d’une entrée au temps $m \gt n$.
Aussi,
Définition 2 : Un système linéaire invariant dans le temps est causal si et seulement si la réponse impulsionnelle$h=0$ pour tout $n<0$.
Celle-ci est aussi assez intuitive. Toutes les entrées de $h$ pour $k \ge 0$ sont les coefficients avec lesquels on multiplie les valeurs actuelles et passées de $x$ pour obtenir la sortie actuelle (le fait que le système soit récursif n’est pas pertinent dans ce cas). Remarquez que cette définition n’a de sens que pour les systèmes linéaires invariants dans le temps ! Ceci est dû au fait que la convolution n’existe que pour ces systèmes. Voyons pourquoi la linéarité est nécessaire. Si vous avez $h \ne 0$, alors $x$ contribue à $y$ et c’est ce qui le rend non causal. Cela est vrai car dans les systèmes linéaires, si rien n’entre, rien ne sort. Ce n’est généralement pas vrai pour les systèmes non linéaires (comme dans l’exemple que vous avez donné), donc cette définition ne s’appliquerait pas.
Le système doit également être invariant dans le temps parce qu’il ne peut pas être complètement défini par sa réponse impulsionnelle, à moins qu’il ne soit complètement LTI. Si vous faites passer une fonction d’impulsion $\delta $ par le système$$y = x + (n+1)x,$$ vous allez obtenir une sortie qui est elle-même une impulsion (causale… non ?). Cependant, le système est clairement non causal. C’est pourquoi l’invariance temporelle est importante. Lorsque vous exécutez une fonction d’impulsion décalée $\delta$ pour $m \ne 0$, sa nature non causale commence à se manifester.
Donc, toute discussion mise à part, votre système est parfaitement causal, mais vos définitions ne s’appliquent qu’aux systèmes linéaires, alors que votre système est non linéaire. La définition correcte d’un système causal est que toute sortie $y$ ne peut dépendre de l’entrée $x$ où $k \gt 0$.