2016-07-28 35 views
1

'x' wird als @ (x) angegeben, aber die Fehlermeldung wird weiterhin angezeigt.(GNU Octave/MATLAB) 'x' wird als Variablen von Gleichungen angegeben, aber sage immer, dass x nicht spezifiziert ist

<i> function F = drawCFRPgraph0726(X, y, E, I, A, G, r, c, m) 
    t(1) = pi/2+0.0000001; 
    i = 1; 
    while t(i)<pi 
    disp(t(i)); 
    for k = 1:500 
    L(k) = 0.000001*k; 
    dvdx(x) = @(x) ((x/3-L(k)/2)(c*L(k)*m/(c+r)-x(t(i)-y-pi/2))/(x-L(k))+x*  (L(k)/2-x/3)(c*L(k)*m/(c+r)-x(t(i)-y-pi/2))/(x-L(k))^2+x(c*L(k)*m/(c+r)-x(t(i)-y-pi/2))/(3*(x-L(k)))+x*(y-t(i)+pi/2)*(x/3-L(k)/2)/(x-L)+x*t(i)-x*y-pi*x/2)/L(k); 
    d2vdx2(x) = @(x) ((-2*x/3+L(k))*(c*L(k)*m/(c+r)-x*(t(i)-y-pi/2))/(x-L(k))^2+x*(2*x/3-L(k))*(c*L(k)*m/(c+r)-x(t(i)-y-pi/2))/(x-L(k))^3-2*x*(c*L(k)*m/(c+r)-x*(t(i)-y-pi/2))/(3(x-L(k))^2)+2*(c*L(k)*m/(c+r)-x*(t(i)-y-pi/2))/(3*(x-L(k)))+(y-t(i)+pi/2)*(2*x/3-L(k))/(x-L(k))+x*(-2*x/3+L(k))*(y-t(i)+pi/2)/(x-L(k))^2+2*x*(y-t(i)+1.5708)/(3*(x-L(k)))+t(i)-y-pi/2)^2/L(k)^2; 
    A(k) = quad(dvdx(x), 0, L(k)); 
    B(k) = quad(dv2dx2(x), 0, L(k));</i> 
+0

Betrachten hte Antwort zu akzeptieren, wenn es –

Antwort

5

Sie definieren fälschlicherweise die anonyme Funktion.

sie definieren richtig sollten Sie:

dvdx = @(x) ((x/3-L(k)/2)(c*L(k)*m/(c+r)-x(t(i)-y-pi/2))/(x-L(k))+x*  (L(k)/2-x/3)(c*L(k)*m/(c+r)-x(t(i)-y-pi/2))/(x-L(k))^2+x(c*L(k)*m/(c+r)-x(t(i)-y-pi/2))/(3*(x-L(k)))+x*(y-t(i)+pi/2)*(x/3-L(k)/2)/(x-L)+x*t(i)-x*y-pi*x/2)/L(k); 

Das heißt: jetzt dvdx eine Funktion ist, die mit 1 Argument (@(x)) und wertet sie aus der folgenden Gleichung ((x/2-L(k) .... Aber x ist außerhalb nicht definiert, genauso wie X, y, E, I, A, G, r, c, m nicht außerhalb definiert sind, nur innerhalb der Funktion.

Der erste Eingang des quad ist eine Funktion, und die Funktion ist dvdx(x) nicht aber nur dvdx

+0

@ChristopherCreutzig Nicht sicher Oktave geholfen. In MATLAB ist die Definition falsch. Versuchen Sie 'a (x) = @ (x) (x.^2)' und 'a = @ (x) (x.^2)' –

+0

Entschuldigung, mein schlechter. Ich hatte diese drei Charaktere nicht einmal gesehen. –