MATLAB - 在求解方程组时保持空矩阵

时间:2016-05-19 19:20:18

标签: matlab matrix

所以这是两个方程式:

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

α=φ-β

其中φ= 90且P,G和W分别为[2,1],[0,0]和[1.3822,1.3822]的1x2矩阵。

这是我的代码:

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

我做错了什么?有一个更好的方法吗。我还在学习MATLAB。

1 个答案:

答案 0 :(得分:0)

如果用α=φ-β代替第一个等式,你得到

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

你可以重新排列它以获得

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

这是一个过分确定的问题。例如,可以使用最小二乘法来解决它。如果你定义:

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

您可以使用

为您提供解决方案
beta = log(b/A);