Je hebt je definitie van causaliteit verkeerd. Het is eigenlijk veel eenvoudiger en veel intuïtiever. Een causaal systeem is een systeem waarin de output niet afhankelijk is van toekomstige waarden van de input. Deze eigenschap is niet exclusief lineaire systemen en kan van toepassing zijn op systemen in het algemeen. Hier volgen enkele voorbeelden om het punt te illustreren:
Causaal lineair tijdinvariant systeem:
$$y = x – 2x + 0,5y$$
Hier hangt $y$ alleen af van de huidige en vorige waarden van $x$ en $y$.
Niet-causaal lineair tijdsinvariant systeem:
$$y = \frac{1}{2}x + \frac{1}{2}x$$
Zoals een centraal voortschrijdend gemiddelde, is deze functie niet-causaal omdat voor output $y$, de $x$ term in de toekomst van onze input gluurt.
Causaal niet-lineair tijd-invariant systeem:
$$y = \cos(x)$$
Dit is het voorbeeld dat u gaf. Zoals je misschien al geraden hebt, omdat we nooit naar een toekomstige input kijken, is dit systeem causaal. In feite is het nog specialer dan dat. Omdat de huidige output alleen een functie is van de huidige input (niet van vroegere of toekomstige inputs) wordt dit systeem een geheugenloos systeem genoemd.
Causaal lineair tijdsvariërend systeem:
$$y = (n+1)x$$
Ik heb deze verzonnen als een soort hersenkraker. Op het eerste gezicht lijkt het alsof dit systeem niet-causaal is omdat er een term van $(n+1)$ is. Maar dit doet er niet toe omdat het geen tijdsindex van $x$ is. We kijken nog steeds alleen naar de huidige waarde van de input en gluren niet vooruit. Dit is ook een voorbeeld van een geheugenloos systeem.
Een lastig causaal niet-lineair tijdvariërend systeem:
$y = e^nx + \ln(\left|xrechts|+1rechts) – \pi y$
Het is duidelijk dat dit een niet-causaal systeem is vanwege de term $y$, toch? Fout! Dit is een klassieke definitie van een recursief causaal systeem met een paar termen herschikt. We brengen het in een meer standaard vorm in drie stappen:y = e^nx + \ln\left(\left|xright|+1) – y$$$$ y = e^nx + \ln\left(\left|xright|+1) – y$$$$ y = e^nx + \ln\left(\left|xright|+1) – y$$$$ y = e^nx + \ln\left(\left|xright|+1) – y$$$$ y = e^nx + \ln\left(\left|xright|+1) – e^nx + \ln\left(\left|xright|+1) – y$$$$ y$$$$y = \frac{e^nx + \lnleft(\left|xright|+1right) – y}{\pi}$
De op een na laatste regel is bereikt door $k=n+1$ te substitueren. De truc hier is dat er een verband is tussen de output op verschillende tijdstippen. Maar als je het eenmaal uitwerkt, hangt geen enkele output ooit af van de toekomstige waarde van een input ten opzichte van zichzelf. Niet-lineariteit en tijdvariabiliteit werden gebruikt om het leuker en uitdagender te maken. Zorg dat je begrijpt wat hier staat.
Zoals je ziet kan causaliteit een eigenschap zijn van allerlei systemen en er zijn nog veel meer leuke en bizarre voorbeelden te bedenken.
Nu gaan we aan de slag met het oplossen van je paradox. De sleutel ligt in het besef dat je definities van causaliteit en lineariteit (en misschien ook tijd-invariantie) een beetje verward en verward zijn. De paradox op een amusante manier oplossen is zo eenvoudig als het toevoegen van het woord lineair aan jullie beide definities (tijd-invariantie zal ook een subtiele rol spelen).
Definitie 1: Een lineair systeem is causaal als en slechts als de output $y$ een functie is van een lineaire combinatie van inputs $x$ zodanig dat $k \ge0$.
Dit komt omdat niet alle systemen lineaire combinaties zijn van inputs. Lineaire systemen zijn dat wel. Een causaal systeem hangt alleen af van vroegere en huidige inputs, daarom is een causaal lineair systeem een lineaire combinatie van huidige en vroegere inputs. Om precies te zijn met de definitie, lineaire systemen zijn lineaire combinaties van zowel inputs als outputs, en in causale lineaire systemen kunnen outputs op tijdstip $n$ niet afhangen van een input op tijdstip $m n$.
Ook
Definitie 2: Een lineair tijdinvariant systeem is causaal als en slechts als de impulsrespons$h=0$ voor alle $n<0$.
Deze is ook vrij intuïtief. Alle waarden van $h$ voor $k ≈0$ zijn de coëfficiënten waarmee de huidige en vroegere waarden van $x$ worden vermenigvuldigd om de huidige output te krijgen (of het systeem recursief is, is in dit geval niet van belang). Merk op dat deze definitie alleen zin heeft voor lineaire tijdsinvariante systemen! Dit komt omdat convolutie alleen voor deze bestaat. Laten we eens kijken waarom lineariteit nodig is. Als je $h ijn 0$ hebt, dan draagt $x$ bij tot $y$ en dat maakt het niet-causaal. Dit is waar omdat in lineaire systemen, als er niets ingaat, er ook niets uitgaat. Dit geldt in het algemeen niet voor niet-lineaire systemen (zoals in het voorbeeld dat je gaf), dus zou deze definitie niet van toepassing zijn.
Het systeem moet ook tijdsinvariant zijn omdat het niet volledig gedefinieerd kan worden door zijn impulsrespons tenzij het volledig LTI is. Als je een impulsfunctie $delta $ door het systeem laat lopen$$y = x + (n+1)x,$$ krijg je een uitvoer die zelf een impuls is (causaal… toch?). Het systeem is echter duidelijk niet-causaal. Dit is waarom tijd-invariantie belangrijk is. Als je een verschoven impulsfunctie $delta$ voor $m ijn 0$ uitvoert, begint zijn niet-causale aard zich te manifesteren.
Dus, alle geklets terzijde, je systeem is perfect causaal, maar je definities gelden alleen voor lineaire systemen, terwijl jouw systeem niet-lineair is. De juiste definitie van een causaal systeem is dat output $y$ niet kan afhangen van input $x$ waarbij $k $0$.