2016-05-27 17 views
-2

Kann mir jemand bitte mit dieser Aufgabe helfen? enter image description hereMatlab Hilfe bei der Suche nach Dimensionen

Ich bin neu in Matlab, und vorbei in diesem Jahr hängt von dieser Zuordnung, ich habe nicht viel Zeit, Matlab zu erkunden und ich schon eine Menge Zeit verschwendet versuchen, diese Aufgabe in meiner Art und Weise zu tun. Ich habe die Gleichungen bereits auf dem Papier geschrieben, aber die Gleichungen in Matlab-Codes zu übertragen ist sehr schwer für mich. Alles, was ich jetzt habe, ist:

syms h 
l = (0.75-h.^2)/(3*sqrt((5*h.^2)/4)); %h is h_max 
V_default = (h.^2/2)*l; 
dv = diff(V_default); %it's max. when the derivative is max. 
h1 = solve(dv ==0); 
h_max = (h1>0); 
l_max = (0.75-h_max.^2)/(3*sqrt((h_max/2).^2+(h_max.^2))); 
V_max = ((h_max.^2)./(2.*l_max)); 

but it keep give me error "Error using ./ 
Matrix dimensions must agree. 

Error in triangle (line 9) 
V_max = ((h_max.^2)./(2.*l_max)); " 

Antwort

1

Nicht wirklich mit der Zuordnung hilft hier, aber mit der Matlab-Syntax. In der folgenden Zeile:

l_max = (0.75-h_max.^2)/(3*sqrt((h_max/2).^2+(h_max.^2))); 

Sie / verwenden, die eine Matrix Kluft ist. Vielleicht möchten Sie ./ verwenden, wodurch die Begriffe Element für Element unterteilt werden. Wenn ich dies tue

l_max = (0.75-h_max.^2) ./ (3*sqrt((h_max/2).^2+(h_max.^2))); 

dann gibt Ihr Code keinen Fehler zurück. Aber ich habe keine Ahnung, ob es die richtige Lösung deiner Aufgabe ist, das überlasse ich dir!

0

In Zeile 5 ist das Ergebnis h1 ein Vektor aus zwei Werten, aber die Variable selbst bleibt symbolisch, aus der Symbolic Math Toolbox. MATLAB behandelt solche Variablen leicht unterschiedlich. Aus diesem Grund ist die Zeile h_max = (h1>0) nicht wirklich das, was Sie erwarten. Als ich von diesem Punkt denke, Sie sind in einem Wert interessiert h_max, ich h1 in einer regulären MATLAB Variable umwandeln würde und Ihren Code wie folgt ändern:

h1 = double(solve(dv ==0)); % converts symbolic to regular vectors 
h_max = h1(h1>0);   % filters out all negative and zero values 
l_max = (0.75-h_max.^2)/(3*sqrt((h_max/2).^2+(h_max.^2))); 
V_max = ((h_max.^2)./(2.*l_max)); 

EDIT. Wenn Sie immer noch einen Fehler haben, bedeutet dies, dass solve(...) mehr als 1 positive Werte zurückgibt. Verwenden Sie in diesem Fall, wie vorgeschlagen, gepunktete Operationen wie ./, aber die Ergebnisse in l_max und V_max sind keine einzelnen Werte, sondern Vektoren mit derselben Größe wie h_max. Was bedeutet, dass Sie nicht ein maximales Volumen haben.

+0

Thx Roberto & Celdor :) Kann jemand mit Frage b helfen? – Basem

Verwandte Themen