1 van 1

Matlab: functie plotten

Geplaatst: di 03 apr 2012, 13:04
door Uomo Universale
Ik ben nog niet echt heel bedreven met Matlab en zou daar wat verandering in willen brengen. Ik heb het volgende probleem:

Gegeven is de differentiaalvergelijking y' = h(t-1) waarbij h(t) = 1 als t>=0 en h(t) = 0 anders. (ik vind de optie LaTeX niet meteen terug?)

Als ik logisch nadenk, dan weet ik hoe ik y' in functie van t moet tekenen, maar ik zou dit graag met Matlab willen doen alsof ik helemaal geen inzicht zou hebben in wat het eindresultaat moet zijn.

Ik vroeg me af of iemand me hier mee op weg kan helpen?

Zelf dacht ik aan dit:
  • Ik implementeer de functie h als volgt:
function [ h ] = functieH( t )

if t >= 0

h = 1

else

h = 0

end

end
  • Nu implementeer ik de differentiaalvergelijking y':
function [ ydot ] =diff( functieH)

ydot = functieH(t-1); Hierbij heb ik ferm m'n twijfels of dit idee wel correct is.

end
  • In een script zorg ik dat ik dit kan plotten:
t = linspace (-10: 10: 20);

bis13(t);

fplot('bis13DV', [-10, 10])

Als ik dit dan probeer te runnen krijg volgende foutmeldingen:
  • Error using linspace (line 20)
Not enough input arguments.
  • Error in bis13plot (line 1)
t = linspace (-10: 10: 20);

----------------------------------------

Ik vermoed eigenlijk dat mijn fout niet bij het gebruiken van de functie linspace is (aangezien ik niet zou weten wat ik er fout aan doe), maar wel bij eerdere ideeën of syntax.

Iemand die me wat kan verder helpen?

Re: Matlab: functie plotten

Geplaatst: di 03 apr 2012, 13:33
door EvilBro
Gebruik komma's in plaats van dubbele punten:

Code: Selecteer alles

linspace(-10,10,20);


Ik heb trouwens verder geen idee wat je aan het proberen bent... bis13? bis13DV? wat zijn dit voor functies?

Re: Matlab: functie plotten

Geplaatst: di 03 apr 2012, 13:36
door Drieske
Even wat extra info naast wat Evilbro reeds zei:
Uomo Universale schreef: di 03 apr 2012, 13:04
(ik vind de optie LaTeX niet meteen terug?)
Dat werkt nog steeds zoals vroeger: [ tex ] 3^x [ /tex ] zonder de spaties geeft
\(3^x\)
. Je kunt dat ook bereiken via: "Speciale bb-code" en dan in de dropdown kiezen voor "tex".

Re: Matlab: functie plotten

Geplaatst: di 03 apr 2012, 15:10
door Uomo Universale
Owla, ik heb niet echt goed opgelet, enkele stomme copy-paste foutjes van hoe ik m'n functies heb benoemd. Het moet als volgt zijn:
Uomo Universale schreef: di 03 apr 2012, 13:04
Zelf dacht ik aan dit:
  • Ik implementeer de functie h als volgt:
function [ h ] = functieH( t )

if t >= 0

h = 1

else

h = 0

end

end
  • Nu implementeer ik de differentiaalvergelijking y':
function [ ydot ] =diff( functieH)

ydot = functieH(t-1); Hierbij heb ik ferm m'n twijfels of dit idee wel correct is.

end
  • In een script zorg ik dat ik dit kan plotten:
t = linspace (-10: 10: 20);

functieH(t);

fplot('diff', [-10, 10])
Begrijp je nu m'n bedoeling?

Re: Matlab: functie plotten

Geplaatst: di 03 apr 2012, 16:59
door EvilBro
Niet echt... wil je h(t-1) tekenen?

In matlab is een true-value gelijk aan 1 en een false-value gelijk aan 0. De functie h(t) is in matlab dus gewoon gelijk aan: h(t) = (t >= 0). Hier volgt dus uit dat h(t-1) = ((t-1) >= 0). Simpelweg plotten:

Code: Selecteer alles

t = linspace(-10,10,1000);

plot(t,((t-1) >= 0))

Re: Matlab: functie plotten

Geplaatst: di 03 apr 2012, 17:18
door Uomo Universale
EvilBro schreef: di 03 apr 2012, 16:59
Niet echt... wil je h(t-1) tekenen?

In matlab is een true-value gelijk aan 1 en een false-value gelijk aan 0. De functie h(t) is in matlab dus gewoon gelijk aan: h(t) = (t >= 0). Hier volgt dus uit dat h(t-1) = ((t-1) >= 0). Simpelweg plotten:

Code: Selecteer alles

t = linspace(-10,10,1000);

plot(t,((t-1) >= 0))
Mijn bedoeling is inderdaad om h(t-1) te tekenen en dat is nu ook gelukt! Ik zocht het dus heel wat te ver. Ik heb dit ondertussen ook geprobeerd met de functie y' = 1 - h(t-2) en ook dit klopt!

Bedankt voor de hulp EvilBro!