2016-05-19 4 views
1

Also hier sind die beiden Gleichungen:MATLAB - Halte leere Matrizen bekommen, wenn das System von Gleichungen zu lösen

(1-e^φ) * P = (1-e^β) G + (e^β) (1-e^α) * W

α = φ -β

Wo φ = 90 und P, G und W 1x2 Matrizen von [2,1], [0,0] und [ 1,3822, 1,3822].

Hier ist mein Code:

function y = RR2CrankAng(P12,G,W1,theta) 
syms beta alpha 
eqn1 = ((1-exp(theta))*P12) == ((1-exp(beta))*G)+((exp(beta))*(1-exp(alpha))*W1); 
eqn2 = alpha == theta - beta; 
sol = solve([eqn1, eqn2], [beta12, alpha12]); 
xSol = sol.beta12; 
ySol = sol.alpha12; 
y = [xSol,ySol]; 
end 


CA = RR2CrankAng(P12,G,W1,theta12) 
CA = 
Empty sym: 0-by-2 

Was mache ich falsch? Gibt es einen besseren Weg, dies zu tun? Ich lerne immer noch MATLAB.

+0

Weil 'P',' G' und 'W' sind zwei Elementen Vektoren, Sie technisch mit nur zwei drei Gleichungen Variablen und "lösen" scheint keine überbestimmten Systeme zu mögen. Ohne weiter zu klären, wonach Sie suchen (das System für jedes einzelne Element der Vektoren einzeln zu lösen oder ein Problem der kleinsten Quadrate für alle drei Gleichungen zu lösen), kann ich Ihnen keinen Rat geben, wie Sie vorgehen sollen. – TroyHaskin

Antwort

0

Wenn Sie ersetzen α = φ -β auf die erste Gleichung Sie erhalten

(1-e^φ) * P = (1-e^β) * G + (e^β) * W + (1 - e^φ) * W

Sie neu anordnen kann es

(1-e^φ) * P zu erhalten - G + (e^φ - 1) W = e^β (WG)

Dies ist ein überbestimmtes Problem. Dies kann zum Beispiel mit dem Ansatz der kleinsten Quadrate gelöst werden. Wenn Sie definieren:

A = W-G; 
b = (1−e^φ)*P - G + (e^φ - 1)*W); 

können Sie Sie Lösung erhalten mit

beta = log(b/A); 
Verwandte Themen