Pagina 1 di 3

Equazioni Diofantine con Matlab

MessaggioInviato: 16 gen 2015, 21:02
da Vibia
Buonasera,

Essendo neofita di questo programma volevo chiedervi come posso fare a risolvere o se c'è un comando specifico per la risoluzione delle equazioni difantine poiché dovrei progettare un controllore in digitale con il metodo dell'assegnamento dei poli e dei zeri.


Grazie mille per le risposte
:ok:

Re: Equazioni Diofantine con Matlab

MessaggioInviato: 16 gen 2015, 21:51
da PietroBaima
devi risolvere un problema di Frobenius?

Re: Equazioni Diofantine con Matlab

MessaggioInviato: 17 gen 2015, 12:59
da Vibia
Ciao non so di cosa parli, io dovrei semplicemente progettare un regolatore digitale per un sistema retroazionato con il metodo di assegnamento dei poli/zeri.
Il mio problema è che per farlo bisogna fare molti conti che vorrei far fare a matlab anche perché vorrei avere una certa precisione.

In pratica devo sostanzialmente applicare il principio di identità dei polinomi a questa equazione:

C(z)=N_r(z)N_g(z)+D_r(z)+D_g(z)

dove R(z)=p\frac{z-a}{z-b}

e C(z) è un polinomio che scelgo io

Mi troverò quindi due polinomi dello stesso grado al quale devo applicare il principio di identità dei polinomi e determinare i parametri del regolatore.
Ora la mia domanda è se c'è un modo per risolvere questo problema con matlab.
Avevo pensato alla risoluzione dei sistemi a più equazioni andando per via matriciale, potrebbe essere la strada giusta?in quel caso come faccio?Inoltre sviluppando i calcoli a mano ho visto che alcune variabili si moltiplicano per cui come faccio a ricavarmi la matrice?

Re: Equazioni Diofantine con Matlab

MessaggioInviato: 17 gen 2015, 14:19
da PietroBaima
ho capito, matlab non va tanto bene per il calcolo simbolico, purtroppo.
Riportami il tuo caso specifico, così gli do uno sguardo.

ciao,
Pietro

Re: Equazioni Diofantine con Matlab

MessaggioInviato: 17 gen 2015, 14:54
da Vibia
Che brutta notizia che mi dai :cry: ma comunque ti riporto l'esercizio.

Però riflettendo se riesco a capire come risolvere questo caso teoricamente non dovrei avere problemi poiché generalmente le varianti che posso incontrare sono simili a queste.

Dal mio esempio ottengo questa matrice

\left\{\begin{matrix}
2\beta+0.045\rho=0.044
\\0.045\rho-0.045\rho\alpha+2\beta+1=0.378
\\ 0.045\rho-2-\beta=-1.48

\end{matrix}\right.

Re: Equazioni Diofantine con Matlab

MessaggioInviato: 17 gen 2015, 15:09
da PietroBaima
non ottieni una matrice, o almeno credo non nella forma che intendi tu, il sistema é non lineare :(

\{\{\beta \to -0.158667,\rho \to 8.02963,\alpha \to 1.84317\}\}

Re: Equazioni Diofantine con Matlab

MessaggioInviato: 17 gen 2015, 16:54
da Vibia
Grazie per la risposta...ti chiedo scusa ma la seconda equazione ho scritto il termine noto che in realtà è 0.578

Comunque è vero il sistema è non lineare, ma con matlab come posso risolverlo??

Re: Equazioni Diofantine con Matlab

MessaggioInviato: 17 gen 2015, 17:10
da PietroBaima
cioè le soluzioni sono:

\{\{\beta\to -0.158667,\rho\to 8.02963,\alpha\to 1.28967\}\}

In matlab devi utilizzare il comando fsolve, utilizzando il metodo della variazione della matrice Jacobiana, o di Newton, che ti fa diventare il sistema localmente lineare. Iterando poi risolvi. Nel link che ti ho messo hai anche degli esempi.
Qui per un po' di teoria.

Se puoi accedere ad internet, se il sistema non è molto più complicato di così, puoi cercare di risolverlo con WolframAlpha, in modo semplice.

Nel tuo caso inserisci il codice:

Codice: Seleziona tutto
NSolve[2*b + 0.045*r == 0.044 &&
  0.045*r - 0.045*r*a + 2*b + 1 == 0.578 &&
  0.045*r - 2 - b == -1.48, {b, r, a}]


sul sito del link giusto qui sopra.

Ciao,
Pietro.

Re: Equazioni Diofantine con Matlab

MessaggioInviato: 17 gen 2015, 17:13
da carloc
Oppure in questo caso particolare

... la prima e la terza sono un sistema lineare in \rho e \beta ....

poi sostituisci nella seconda dove ora ti manca solo \alpha ;-)

Re: Equazioni Diofantine con Matlab

MessaggioInviato: 17 gen 2015, 17:17
da PietroBaima
[OT]

ueilà! chi si vede! Un salutone, Foto Utentecarloc!

[\OT]