Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

MatLab derivaatta.

314 views
Skip to first unread message

Erkki Esimerkki

unread,
May 13, 2008, 3:44:59 AM5/13/08
to
Moi,

Tulipa eteen yksinkertainen ongelma johon ei löytynyt
ratkaisua.

Piti Matalbilla ratkaista kuvaajan
(typpiä Ys=K*Omega^2/(s^2+2*Ze*Omega*s+Omega^2*s)

maksimiarvo ja ajanhetki jolloin ko. arvo esiintyy.
MatLab derivointi sanoo sitkeästi että kun t=0
niin derivaatta ko. yhtälöstä on nolla.

Miten Matlabissa saa derivaatan *kaikki* nollakohdat esille?


Erkki Esimerkki

unread,
May 23, 2008, 8:46:41 AM5/23/08
to
Erkki Esimerkki kirjoitti:

Kun laitoin funktion fzero() komennon parametriksi niin sain
laitettua alkuarvon nollakohdan laskennalle ja siitä oikean
nollakohdan selville.

Puutuuko Matlabista tosiaan funktio joka antaisi tuloksena
vektorissa lähtöfunktion kaikki nollakohdat?

Tuo tuntuu niin perusjutulta että kumma juttu?

Onnistuisiko funktion nollakohtien ratkaisu symbolisella
laskennalla?


Juuso Alhava

unread,
May 24, 2008, 4:52:48 AM5/24/08
to

Huomenta vaan,

MATLAB onnistuu kyllä löytämään kaikki funktion nollakohdat, mutta vain
polynomeista (>> help roots). Ja sekin tuntuu olevan numeerisesti
ailahtelevainen, kun olen kokeillut 2-kanavaisen suodatinpankin
suunnittelua valitsemalla juuria pareittain z-tason kuvaajasta. Mutta ei
nyt siitä sen enempää. Universaalista nollakohtien haarukoinnista en mene
sanomaan mitään muuta kuin, että kannattaisi etsiä netistä josko sieltä
löytyisi numeerisia menetelmiä, jotka ovat rajoittuneet tietyntyyppisiin
erikoistapauksiin.

Ja jos haluat automatisoida symbolisen laskennan keinoin kuvaamasi
tyyppiset ongelmat, niin GNU-lisenssillä löytyy MAXIMA. Sille voi myös
ohjata batch-moodissa syötteen ja valita tuloksen kirjoittamisen
tiedostoon. En ole varma haitko juuri tätä?

(%i1) Ys:K*w^2/(s^2+2*Ze*w*s+w^2*s);

(%o1) ...

(%i2) dYds=diff(Ys,s);

Ohjelmiston kotisivut:
http://maxima.sourceforge.net/

-juuso

TM

unread,
May 24, 2008, 6:31:00 AM5/24/08
to
Erkki Esimerkki kirjoitti:

Jos haluat käyttää Matlabia symboliseen laskentaan, niin tarvit Symbolic
Math Toolboxin, joka käyttää Maplen kerneliä laskujen suorittamiseen.
Sillä saat esim. nuo derivaatan nollakohdat jotenkin näin:

syms s
solve('diff(lauseke) = 0','s')

Jos taas ihan numeerinen vastaus kelpaa ja sulla on Ys:n ja s:n arvot
vektoreissa, niin maksimikohdan ja -arvon saat toki yksinkertaisesti
komennoilla

[maxArvo indeksi] = max(Ys);
maxKohta = s(indeksi);

Erkki Esimerkki

unread,
May 26, 2008, 2:54:21 AM5/26/08
to
TM kirjoitti:

>
> Jos taas ihan numeerinen vastaus kelpaa ja sulla on Ys:n ja s:n arvot
> vektoreissa, niin maksimikohdan ja -arvon saat toki yksinkertaisesti
> komennoilla
>
> [maxArvo indeksi] = max(Ys);
> maxKohta = s(indeksi);

Juu tein tuon sitten tyyliin :

% Lasketaan vasteen arvot vektoriin ajalle 1us - 100us :
arvot=subs(gt, 1e-6:1e-6:1e-4);

% Etsitään maksimiarvo ja ajankohta vektorista :
[MaxArvo Maxtime] = max(arvot);

Pitänee tutustua myös Maximaan, mutta vasta ensi syksynä..

Kiitos.


0 new messages