Springen naar inhoud

Matlab: functie plotten


  • Log in om te kunnen reageren

#1

Uomo Universale

    Uomo Universale


  • >250 berichten
  • 411 berichten
  • Ervaren gebruiker

Geplaatst op 03 april 2012 - 12:04

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?

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 03 april 2012 - 12:33

Gebruik komma's in plaats van dubbele punten:
linspace(-10,10,20);

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

#3

Drieske

    Drieske


  • >5k berichten
  • 10217 berichten
  • Moderator

Geplaatst op 03 april 2012 - 12:36

Even wat extra info naast wat Evilbro reeds zei:

(ik vind de optie LaTeX niet meteen terug?)

Dat werkt nog steeds zoals vroeger: [ tex ] 3^x [ /tex ] zonder de spaties geeft LaTeX . Je kunt dat ook bereiken via: "Speciale bb-code" en dan in de dropdown kiezen voor "tex".
Zoek je graag naar het meest interessante wetenschapsnieuws? Wij zoeken nog een vrijwilliger voor ons nieuwspostteam.

#4

Uomo Universale

    Uomo Universale


  • >250 berichten
  • 411 berichten
  • Ervaren gebruiker

Geplaatst op 03 april 2012 - 14:10

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:

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?

#5

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 03 april 2012 - 15: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:
t = linspace(-10,10,1000);
plot(t,((t-1) >= 0))

Veranderd door EvilBro, 03 april 2012 - 15:59


#6

Uomo Universale

    Uomo Universale


  • >250 berichten
  • 411 berichten
  • Ervaren gebruiker

Geplaatst op 03 april 2012 - 16:18

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:

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!





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures