目前尚不清楚方程求解器的工作方式。我查看了文档,并尝试对其进行复制以获取物理问题的解决方案,但答案不正确。
我要解决的问题是静电物理问题。 F1和F3是在第一个象限中指向右上方的向量。 45度表示从x轴到F1的角度,而g表示从x轴到F3的角度。 F2是在第三象限中指向左下方的向量。 45度还表示从x轴到F2的角度。
问题是找到F3和g的值以使系统稳定。
得到不正确的答案后,我检查了一下matlab的答案是否只是可以解决该问题的其他答案,但在检查后仍然无效。
theta = 45;
F1 = 8;
F2 = 16;
syms F3 g;
eq1 = F1*cosd(theta) + F3*cosd(g) == F2*cosd(theta);
eq1 = F1*sind(theta) + F3*sind(g) == F2*sind(theta);
sol = solve([eq1,eq2],[F3,g]);
double(sol.F3)
double(sol.g)
输出为F3 = 45且g = -135
答案应为F3 = 8和g = 45度。
我确信我使用的方程式是正确的,因为当我将它们放入desmos并绘制图形时,我得到了正确的答案。所以问题肯定出在脚本中我的语法上。
答案 0 :(得分:2)
此处有错字:
syms F3 g;
eq1 = F1*cosd(theta) + F3*cosd(g) == F2*cosd(theta);
eq1 = F1*sind(theta) + F3*sind(g) == F2*sind(theta); % HERE
第二个等式应为eq2
,而不是eq1
。 eq2
可能是从以前的计算中缓存的,而您使用了它。
现在运行它,我得到:
>> double(sol.F3)
ans =
8
-8
>> double(sol.g)
ans =
45
-135
您可以舍弃负面解决方案,因为它们在物理上没有意义,因此您确实可以按照期望得到8和45。
在开始任何工作之前,请在您的MATLAB脚本中使用clearvars
。这样可以防止出现诸如上述的缓存问题。