Matlab

Tudeski

Captain
Registriert
Juni 2010
Beiträge
3.338
ich möchte gerne folgende formel ploten:
Code:
pi^2/12 - 0.25*t^2
von t = -pi bis t = pi
t = -pi:pi/10:pi 
plot(t, pi^2/12 - 0.25*t^2) --> gibt fehlermeldung mit mpower


desweiteren wollte ich das integral berechnen.
int(pi^2/12 - 0.25*t^2, t) -->
ans =
(7408124450506707*t)/9007199254740992 - t^3/12
ursprünglich wollte ich das integral von -pi bis pi berechnen sollte 0 ergeben.

nun was muss ich machen das matlab mir dir funktion plotet und ein brauchbares ergebnis vom integral zurückgibt.
 
PHP:
clear all;

t = -pi:pi/10:pi;
f = pi^2/12 - 0.25*t.^2;
plot(t,f)

syms t;
f = pi^2/12 - 0.25*t.^2;
int(f,-pi,pi)

t ist eine Matrix, deshalb musst du bei t einen Punkt machen, damit mpower funktioniert.

Der Befehl "int" geht nur für symbolische Ausdrücke, also muss t zu einem Symbol gemacht werden.
f muss nochmal eingegeben werden, da t sonst nicht aktualisiert wird.
Warum das Ergebnis jetzt nicht 0 ist, weiß ich auch net - bin kein Mathe-Wunderwuzi. :D

Tipp einfach mal help mpower, help int oder such in der Hilfe-Funktion (F1) und schau dir dort die Beispiele an...
 
vielen dank!
ahhh, nach dem "t" kommt der "." ;-)
fürs plotten hat es nun funktioniert.

mit help etc. habe ich schon versucht, mein 2. letzter ausweg war das forum.
 
Um es etwas präziser zu formulieren - "." bewirkt eine komponentenweise Ausführung für gewisse nachfolgende Operatoren. Wenn t ein Vektor - sprich eine nicht-quadratische Matrix - ist, dann kannst du den nicht normal potentieren, da die entsprechende Operation nicht definiert ist. Für eine Matrix A bewirkt "A.^2" einfach eine komponentenweise Quadrierung.

Tudeski schrieb:
...und ein brauchbares ergebnis vom integral zurückgibt.

Was heisst für dich brauchbar? Brauchbar symbolisch oder brauchbar numerisch? Ich habe eine Variante die eine symbolische 0 liefert, allerdings kann ich nicht erklären warum die Variante von Meister-Alucard nicht wie gewollt funktioniert - irgendwo läuft etwas schief wegen den üblichen Problemen mit Gleitkommazahlen. Einmal numerisch und einmal symbolisch:

Code:
fun = @(x)(pi^2)/12-(x.^2)/4;
quad(fun,-pi,pi) 
int(fun,sym(-pi), sym(pi))

Matlab kennt diverse Implementierungen für die numerische Integration, "quad" ist nur eine davon.
 
brauchbar heisst für mich 0.822 und nicht 7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/9xxxxxxxxxxxxxxxxxxxxxxxxxxx
da brauche ich nur schon 10min um es korrekt abzuschreiben

mittlerweilen habe ich herausgefunden das syms schuld an den riesigen brüchen ist.

kannst du mir das @(x) erklären? und wieso hast du sym(pi) verwendet?
 
Musst/willst du exakt (symbolisch) rechnen oder approximativ (numerisch)? Für ersteres ist die symbolic toolbox gedacht - ich empfehle die entsprechende Dokumentation. Der Unterschied zwischen exakt und approximativ ist erheblich.

Zu den Fragen:

Code:
fun = @(x)(pi^2)/12-(x.^2)/4;

Dies ist eine Variante wie man in Matlab function handles handhabt. Die Dokumentation dazu ist gut, ich glaube das hier ist gut verständlich:

Mathworks schrieb:
handle = @(arglist)anonymous_function constructs an anonymous function and returns a handle to that function. The body of the function, to the right of the parentheses, is a single MATLAB statement or command. arglist is a comma-separated list of input arguments. Execute the function by calling it by means of the function handle, handle.

Zum sym(pi) siehe hier, keine grosse Hexerei. Verwendet habe ich es weil es ansonsten nicht funktioniert - wieso/warum kann ich dir nicht verraten, ich bin in der symbolic toolbox überhaupt nicht fit - ich bevorzuge Mathematica hierfür.
 
ich habe schon diverse docs gelesen, mittlerweilen habe ich es aufgegeben, da ich nie die antworten für mein spezielles problem gefunden habe respektive ich habe vieles gelöst mittels docs, jedoch das jetzige problem, dafür finde ich keine lösung und wäre deswegen auf hilfe von jemanden der sich besser auskennt sehr froh und dankbar.
ich bin nicht einer der wolf schreit ohne vorher herumprobiert zu haben. ich habe viel gelesen, viel geggoglet, kollegen gefragt und nun das forum - als letztes werde ich mich an den professor wenden (ungern).
a) ich muss symbolisch rechnen, da ich unbekannte variabeln habe beim integrieren zb. n, w, T, y, x, und nach t wird integriert.
b) bevorzuge ich bruchangaben wie 1.287 gegenüber 9xxxxxxxxxxxxxxx/7xxxxxxxxxxxxxxxxx, welche ich copy + paste + enter machen muss um den wert in 1.287 form zu erhalten.
ist das möglich?


habe das mit syms auch schon probiert, funktioniert jedoch nicht, werde jetzt das versuchen was du mir verlinkt hast.


funktioniert auch nicht wie gewünscht:
EDU>> sym(1/pi*int(sin(t)*sin(2*t)*cos(3*t),t,0,2*pi), 'd')
??? Error using ==> sym.sym>sym.sym/symsym at 134
Second argument d not recognized.

Error in ==> sym.sym>sym.sym at 111
symsym(x,a,nargin);

habe einige verschiedene arten probiert, jedesmal gleiche fehlermeldung.
wie sym(f, 'd') wo f = 1/pi*int(sin(t)*sin(2*t)*cos(3*t),t,0,2*pi)
nur sym(2/7, 'd') funktioniert, nützt mir jedoch auch nichts.

Code:
EDU>> 1/pi*int(sin(t)*sin(2*t)*cos(3*t),t,0,2*pi)
ans =
-(5734161139222659*pi)/36028797018963968
das resultat nützt mir wenig. das muss ich copy + paste machen, dann erhalte ich -0.5000
ich will jedoch -0.5000 von beginn weg als resultat.
 
Zuletzt bearbeitet:
Zurück
Oben