在MATLAB中找到另一个变量

时间:2018-10-24 11:05:04

标签: matlab

对于下面的等式,我只想用k和L来写p:

eqn1 = (p1-2*k*L/3)*t-k*L*a/3==0;
eqn2 = k*L*t/3-(p2-2*k*L/3)*a ==0;

然后我说

solve([eqn1, eqn2], [p,p]) 

但是两次使用p却报错

我也尝试过:

A = [p-2*k*L/3, -k*L/3; k*L*t/3, p-2*k*L/3];
B = [t; a];
X = linsolve(A,B);

它为X提供​​了一个很长的解决方案,它没有以k和L表示p

我想要的正确解决方案是

p = kL/3

以及     p = kL

这是我想要显示的内容。 (对此我已经知道了解决方案,但下一个问题我将不知道..所以我必须学习如何做)...我该怎么做?

1 个答案:

答案 0 :(得分:0)

有关求解线性方程组的一般系统,请参见文档https://de.mathworks.com/help/symbolic/solve-a-system-of-linear-equations.html

关于您的方程式:用p替换p1和p2时,每个方程式在p中具有解线性关系

s1= solve(eqn1,p)
s1 =
    (L*a*k + 2*L*k*t)/(3*t)
s2= solve(eqn2,p)
s2 =
    (2*L*a*k + L*k*t)/(3*a)

因此,将L,a,k,t视为变量,将不会同时求解两个方程。符号工具箱给出的结果为空:

s = solve([eqn1,eqn2],p)
s =
    Empty sym: 0-by-1

您似乎对a和t进行了假设:如果将p = KL / 3代入方程,您将得到

subs(eqn1,p,k*L/3)
ans =
    - (L*a*k)/3 - (L*k*t)/3 == 0
subs(eqn2,p,k*L/3)
ans =
    (L*a*k)/3 + (L*k*t)/3 == 0

给出条件t = -a。 那么:方程组是什么,要求解的变量是什么?看起来像两条线的交点?