Matlab o Octave o che altro?

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
0
voti

[21] Re: Matlab o Octave o che altro?

Messaggioda Foto Utentexyz » 26 nov 2010, 18:52

Fornisci il codice completo passato a Scilab altrimenti è impossibile capire l'errore.

Avatar utente
Foto Utentedursino
265 1 5 5
Expert
Expert
Messaggi: 537
Iscritto il: 8 mar 2009, 12:24
0
voti

[22] Re: Matlab o Octave o che altro?

Messaggioda Foto Utentedursino » 26 nov 2010, 19:07

Praticamente voglio definire la funzione:

G(s)=e^-(0.02)*s
Poi successivamente inseriro un polo ed un guadagno ma per cominciare è questa che mi interessa.
Dunque ho fatto:
s=%s;
funz=exp(-0.02*s)

e qui mi dice: function non defined for given argument type (s)

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
0
voti

[23] Re: Matlab o Octave o che altro?

Messaggioda Foto Utentexyz » 26 nov 2010, 21:04

Come definisci 's' è un polinomio. In Scilab la funzione esponenziale vuole come parametro un numero o un vettore o una matrice, non un polinomio.

Devi approssimare la funzione esponenziale, per esempio con l'aprrossimazione di Padé:

http://it.wikipedia.org/wiki/Approssima ... ponenziale

qui spiega come usare questa approssimazione con Scilab:

http://tinyurl.com/34brl9o

Avatar utente
Foto Utentedursino
265 1 5 5
Expert
Expert
Messaggi: 537
Iscritto il: 8 mar 2009, 12:24
0
voti

[24] Re: Matlab o Octave o che altro?

Messaggioda Foto Utentedursino » 27 nov 2010, 10:23

Grazie non conoscevo Prade,ho fatto cosi,dovrebbe essere corretto:

Codice: Seleziona tutto

function P = Pade(delay,order)
// Pade approximant of order order for exp(-delay.s)
  s=poly(0,'s');
  Num = (-delay*s+2*order)^order;
  Den = ( delay*s+2*order)^order;
  P = Num/Den;
endfunction

Codice: Seleziona tutto

ritardo=0.002 //Qui ci metto il ritardo che mi interessa
funzione_ritardo = Pade(ritardo,20); //Approsimazione ordine 20
s=%s;
H=1/s   //Qui metto la funzione ora ho messo questa per semplicità
finito = syslin('c',H*P20);  //Funzione finale
bode(finito)
nyquist(finito);

Penso vada bene , no?
Grazie ancora

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
0
voti

[25] Re: Matlab o Octave o che altro?

Messaggioda Foto Utentexyz » 27 nov 2010, 13:58

dursino ha scritto:Penso vada bene

Per me si, ho ripulito il codice per renderlo un pochino più chiaro:

Codice: Seleziona tutto

// Pade approximant of order for exp(-delay*s)
function P = Pade(s, delay, order)
  Num = (-delay*s+2*order)^order;
  Den = ( delay*s+2*order)^order;
  P = Num/Den;
endfunction

s = %s;
ritardo = 2.E-3;
H = Pade(s, ritardo, 20)/s;  // H = exp(-ritardo*s)/s
s = syslin('c', H);
scf(0);
clf();
bode(s, 10, 1.E6, 1.E-2);

scf(1);
clf();
nyquist(s);

Avatar utente
Foto Utentedursino
265 1 5 5
Expert
Expert
Messaggi: 537
Iscritto il: 8 mar 2009, 12:24
0
voti

[26] Re: Matlab o Octave o che altro?

Messaggioda Foto Utentedursino » 27 nov 2010, 15:27

Grazie, è stato fondamentale! :ok: O_/

Avatar utente
Foto Utentedursino
265 1 5 5
Expert
Expert
Messaggi: 537
Iscritto il: 8 mar 2009, 12:24
0
voti

[27] Re: Matlab o Octave o che altro?

Messaggioda Foto Utentedursino » 27 nov 2010, 16:11

Scusa ma è possibile che scilab sbaglia Bode di:
1/s^3??
Schermata.png
Schermata.png (45.33 KiB) Visto 1888 volte

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
0
voti

[28] Re: Matlab o Octave o che altro?

Messaggioda Foto Utentexyz » 27 nov 2010, 17:30

Secondo te se c'è un errore qual è ?

Avatar utente
Foto Utentedursino
265 1 5 5
Expert
Expert
Messaggi: 537
Iscritto il: 8 mar 2009, 12:24
0
voti

[29] Re: Matlab o Octave o che altro?

Messaggioda Foto Utentedursino » 27 nov 2010, 20:05

Tecnicamente nessuno:
-270=90.
Ultimamente sto prendendo la mania di postare troppo banalmente #-o

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
0
voti

[30] Re: Matlab o Octave o che altro?

Messaggioda Foto Utentexyz » 27 nov 2010, 23:14

dursino ha scritto:Tecnicamente nessuno:
-270=90

Ok lo avevo immaginato, una lettura troppo veloce del risultato poteva ingannare e considerarlo un errore.

Un polo di molteplicità 3 nell'origine ha uno sfasamento di 3*(-90°) = -270°, ma questo angolo coincide con un angolo di -270° + 360° = 90°, il valore riportato correttamente nel grafico della fase.


Torna a “Programmi applicativi: simulatori, CAD ed altro”