Sistema non lineare

lasagnaemiliana
Buongiorno. Sono giorni che sono alle prese con:
z = x sen(3y) + 2 sen(x+2y) cos(xy)
e sia x che y appartengono all'intervallo (-3,3).

Seppur il gradiente sia di facile calcolo, lo stesso non può dirsi sul calcolo dei punti stazionari, per i quali in prima istanza ho pensato ad un modo simbolico ma poi ci ho rinunciato, quindi ho pensato ad un modo numerico ma anche così mi sono arenata, dato che conosco solo metodi per funzioni reali di una variabile. Secondo voi c'è qualche possibilità? Oppure devo scaraventare tutto dalla finestra e dimenticarmene? :lol:

Scherzi a parte, ogni consiglio è ben accetto, sia "di tipo manuale" che "di tipo automatizzato". Grazie!

Risposte
moccidentale
.

Quinzio
Mi ha preceduto sellacollesella con un'ottima spiegazione.
Temo che ci voglia anche un implementazione pratica per completare la spiegazione.
Come griglia fitta terrei uno step tra un punto e l'altro di 1/1000.
Non viene una griglia troppo fitta, altrimenti servono tempi lunghi con un computer domestico, e non e' neanche troppo larga.
Per capire che non e' troppo larga si puo considerare la periodicita' della funzioni sinusoidali, nell'intervallo di valutazione.
Ad esempio, $cos(xy)$, nei valori estremi, diventa $cos(3x)$ o $cos(3y)$, dove anche $x,y$ variano da $-3$ a $3$.
Quindi in sostanza, possiamo capire che $cos(xy)$ fa 3 periodi al massimo.
Con considerazioni simili puo' essere ragionevole aspettarsi 3x3 + 3x3 punti estremi, e possiamo supporre che non siano concentrati in una singola zona molto piccola del quadrato 3x3.
In altre parole, possiamo aspettarceli abbastanza lontani uno dall'altro.
Una griglia con step 1/1000 va ben oltre queste richieste, ma con tempi di elaborazione comunque ragionevoli.

Ad es. questo programmino nello spoiler realizza l'algoritmo.


Il risultato, riordinato, e' questo che segue, nel formato x, y, f(x,y).
I numeri sono tutti troncati a 3 decimali.
Ci sono in tutto 7 minimi e 5 massimi.
Ho lasciato anche dei "doppioni" (ho aggiunto un asterisco), che probabilmente vengono da qualche fenomeno di cancellazione numerica.
Questo mi fa pensare che anche il metodo di Newton-Raphson potrebbe avere dei problemi numerici.

Minimo	-2.17	-1.476	-3.914
Minimo	2.755	-2.449	-3.912
Minimo	-2.587	0.37	-3.425
Minimo	1.156	-2.751	-2.931
Minimo	-2.082	2.849	-2.459
Minimo	0.234	-0.821	-2.084
Minimo	-0.075	2.407	-2.027
Massimo	1.156	2.321	1.563
Massimo	-0.057	-2.342	2.02
Massimo	-1.451	-2.71	2.176 *
Massimo	-1.45	-2.711	2.176 *
Massimo	-1.449	-2.712	2.176 *
Massimo	-1.447	-2.713	2.176 *
Massimo	1.245	0.325	2.773
Massimo	2.006	-1.621	3.861
Massimo	2.525	2.589	4.429 *
Massimo	2.526	2.588	4.429 *

moccidentale
.

lasagnaemiliana
Grazie ad entrambi, davvero gentili!
Rispetto a voi non credo di essere nemmeno un milionesimo veloce nello scrivere del codice, ma spero di farcela prima del 2025. :-D
Anche perché sono stupita di non aver mai saputo che il metodo di Newton si potesse estendere ai sistemi di equazioni, lo conoscevo solo per una singola equazione!
Ma, in caso, c'è un modo per verificare se il mio codice lavora bene?
Ora ho le vostre soluzioni come confronto, ma se dovessi testarlo con altre brutte funzioni come potrei fare senza dovervi rompere all'infinito?
Solitamente uso wolframalpha, ma in questo mi dice che z non ha min o max globali, quindi ho perso fiducia.

moccidentale
.

lasagnaemiliana
Alle tante anche questa è andata in porto. :-D

Il bordo è escluso, quindi i punti stazionari sono effettivamente 27, di cui

7 punti di minimo locale
6 punti di massimo locale
14 punti di sella

Grazie ancora e buone feste!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.