Du har en felaktig definition av kausalitet. Det är faktiskt mycket enklare och mycket mer intuitivt. Ett kausalt system är ett system där resultatet inte är beroende av framtida värden på indata. Denna egenskap är inte exklusivt linjära system och kan gälla system i allmänhet. Här är några exempel för att illustrera poängen:
Kausalt linjärt tidsinvariant system:
$$y = x – 2x + 0,5y$$$
Här beror $y$ endast på aktuella och tidigare värden på $x$ och $y$.
Nonkausalt linjärt tidsinvariant system:
$$y = \frac{1}{2}x + \frac{1}{2}x$$$
Också känd som ett centralt glidande medelvärde är denna funktion icke-kausal eftersom för utdata $y$ termen $x$ tittar in i framtiden för vår input.
Kausalt icke-linjärt tidsinvariant system:
$$$y = \cos(x)$$
Detta är det exempel du gav. Som du kanske har gissat vid det här laget är detta system kausalt, eftersom vi aldrig tittar på en framtida inmatning. I själva verket är det till och med ännu mer speciellt än så. Eftersom den aktuella utgången endast är en funktion av den aktuella inmatningen (inte av tidigare eller framtida inmatningar) kallas detta system för ett minneslöst system.
Kausalt linjärt tidsvarierande system:
$$$y = (n+1)x$$$
Jag hittade på det här för att det skulle vara något av en brainteaser. Vid första anblicken kan det verka som om det här systemet är icke-kausalt eftersom det finns den här termen $(n+1)$. Men det spelar ingen roll eftersom det inte är ett tidsindex för $x$. Vi tittar fortfarande bara på det aktuella värdet av inmatningen och kikar inte framåt. Detta är också ett exempel på ett minneslöst system.
Ett knepigt kausalt icke-linjärt tidsvarierande system:
$$$y = e^nx + \ln\left(\left|x\right|+1\right) – \pi y$$$
Det är klart att det här är ett icke-kausalt system på grund av termen $y$, eller hur? Fel! Detta är en klassisk definition av ett rekursivt kausalsystem med några termer omorganiserade. Vi fortsätter att föra in den i en mer standardiserad form i tre steg:$$y = e^nx + \ln\left(\left|x\right|+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$$$$\pi y = e^nx + \ln\left(\left|x\right|+1\right) – y$$$$y = \frac{e^nx + \ln\left(\left|x\right|+1\right\right) – y}{\pi}$$$
Näst sista raden uppnåddes genom att ersätta $k=n+1$. Tricket här är att det finns ett samband mellan utdata vid olika tidpunkter. Men när man väl har räknat ut det är inget utflöde någonsin beroende av det framtida värdet av en input i förhållande till sig självt. Icke-linjäritet och tidsvariation slängdes in för att göra det roligare och mer utmanande. Se till att du förstår vad den här säger.
Som du ser kan kausalitet vara en egenskap hos alla typer av system och det finns många fler roliga och bisarra exempel man kan komma på.
Nu ska vi börja lösa din paradox. Nyckeln ligger i att inse att dina definitioner av kausalitet och linjäritet (och kanske tidsinvarians också) är lite sammanflätade och förvirrade. Att lösa paradoxen på ett underhållande sätt är lika enkelt som att lägga till ordet linjär i båda era definitioner (tidsinvarians kommer också att spela en subtil roll). Så här gör vi.
Definition 1: Ett linjärt system är kausalt om och endast om resultatet $y$ är en funktion av en linjär kombination av indata $x$ så att $k \ge0$.
Detta beror på att alla system inte är linjära kombinationer av indata. Linjära system är. Ett kausalt system beror endast på tidigare och nuvarande indata, därför är ett kausalt linjärt system en linjär kombination av nuvarande och tidigare indata. För att vara exakt med definitionen är linjära system faktiskt linjära kombinationer av både inflöden och utflöden, och i kausala linjära system kan utflöden vid tidpunkt $n$ inte bero på ett inflöde vid tidpunkt $m \gt n$.
Också
Definition 2: Ett linjärt tidsinvariant system är kausalt om och endast om impulssvaret$h=0$ för alla $n<0$.
Detta är också ganska intuitivt. Alla poster i $h$ för $k \ge 0$ är de koefficienter med vilka man multiplicerar aktuella och tidigare värden av $x$ för att få den aktuella utgången (om systemet är rekursivt är irrelevant i detta fall). Observera att denna definition endast är meningsfull för linjära tidsinvarianta system! Detta beror på att konvolution endast existerar för dessa. Låt oss se varför linjäritet är nödvändigt. Om du har $h \ne 0$ så bidrar $x$ till $y$ och det är det som gör det icke-kausalt. Detta är sant eftersom det i linjära system är så att om inget går in så går inget ut. Detta gäller i allmänhet inte för icke-linjära system (som i exemplet du gav), så denna definition skulle inte gälla.
Systemet måste också vara tidsinvariant eftersom det inte kan definieras helt och hållet av sitt impulssvar om det inte är helt och hållet LTI. Om du kör en impulsfunktion $\delta $ genom systemet $$$y = x + (n+1)x,$$ får du en utgång som är en impuls i sig själv (kausal… eller hur?). Systemet är dock helt klart icke-kausalt. Det är därför tidsinvarians är viktigt. När du kör en förskjuten impulsfunktion $\delta$ för $m \ne 0$ börjar dess icke-kausala natur manifestera sig.
Så, allt prat åsido, ditt system är helt och hållet kausalt, men dina definitioner gäller bara för linjära system, medan ditt system är icke-linjärt. Den korrekta definitionen av ett kausalt system är att varje utdata $y$ inte kan bero på input $x$ där $k \gt 0$.
.