%你好。我必须使用Matlab解决一个问题。我需要你的帮助
m1=3; %mass-1
m2=[0.25:0.25:3]; %mass-2 changing
f=[1:0.25:3]'; %frequency Hz
w=f*2*pi; %natural frequency rad/s
k2all=(w.^2)*m2;
k2=k2all(:,1); %spring constant N/m
%I need to find k1 from the formula below:
w=(((k1+k2)*m2+k2*m1)/(2*m1*m2))+(0.5*sqrt((((k1+k2)*m2+m1*k2)/(m1*m2))^2-(((k1+k2)*k2-k2^2)/(m1*m2))));
%As you see m2,k2 and w are changing
请帮助
答案 0 :(得分:1)
计算机不是万能的答案;你只需要解决一个(相对简单的)代数问题。
正如我在评论中指出的那样,这对Stack Overflow来说并不是一个真正的问题。
但是,这是为了将来的参考;现在,我会省你一些麻烦。我将使用Unicode字符,以避免SO没有MathJax支持的问题,并且100%清楚它不是代码。
您的原始等式,删除了一些无关的括号并添加了一些间距:
w = ((k1+k2)·m2 + k2·m1)/(2·m1·m2) + ...
½·√( (((k1+k2)·m2 + m1·k2)/(m1·m2))² - ((k1+k2)·k2 - k2²)/(m1·m2) );
将两边乘以2:
2·w = ((k1+k2)·m2 + k2·m1)/(m1·m2) + ...
√( (((k1+k2)·m2 + m1·k2)/(m1·m2))² - ((k1+k2)·k2 - k2²)/(m1·m2) );
从两侧减去右手边的第一个词:
2·w - ((k1+k2)·m2 + k2·m1)/(m1·m2) = ...
√( (((k1+k2)·m2+m1·k2)/(m1·m2))² - ((k1+k2)·k2 - k2²)/(m1·m2) );
两边都是:
( 2·w - ((k1+k2)·m2 + k2·m1)/(m1·m2) )² = ...
(((k1+k2)·m2 + m1·k2)/(m1·m2))² - ((k1+k2)·k2 - k2²)/(m1·m2)
将双方乘以m1·m2
:
m1·m2·( 2w - ((k1+k2)·m2 + k2·m1)/(m1·m2) )² = ...
((k1+k2)·m2+m1·k2)²/(m1·m2) - (k1+k2)·k2 + k2²
展开左侧的方块,并使用m1·m2
:
4·w²·m1·m2 - 4·w·((k1+k2)·m2 + k2·m1) + ((k1+k2)·m2 + k2·m1)²/(m1·m2) = ...
((k1+k2)·m2+m1·k2)²/(m1·m2) - (k1+k2)·k2 + k2²
请注意,LHS的最后一个术语等于RHS的第一个术语。所以你可以删除它:
4·w²·m1·m2 - 4·w·((k1+k2)·m2 + k2·m1) = -(k1+k2)·k2 + k2²
展开并重新排列,因此只有LHS包含k1
的条款:
(k1+k2)·k2 - 4·w·(k1+k2)·m2 = 4·w·k2·m1 - 4·w²·m1·m2 + k2²
重新整理:
(k1+k2)·(k2 - 4·w·m2) = 4·w·k2·m1 - 4·w²·m1·m2 + k2²
除以LHS的第二个词:
k1+k2 = (4·w·k2·m1 - 4·w²·m1·m2 + k2²) / (k2 - 4·w·m2)
并减去k2
:
k1 = (4·w·k2·m1 - 4·w²·m1·m2 + k2²) / (k2 - 4·w·m2) - k2
简化:
k1 = (k2·(m1+m2) - w·m1·m2) / (k2/(4·w) - m2)
答案 1 :(得分:1)
代数在这里是微不足道的,正如@RodyOldenhuis所示,但你通常可以通过使用符号数学来简化这些过程 - 它也是检查答案的有用方法(尽管你仍然可以输入错误的方程式)。使用solve
:
syms k1 k2 m1 m2 w
fun = ((k1+k2)*m2+k2*m1)/(2*m1*m2)+...
0.5*sqrt((((k1+k2)*m2+m1*k2)/(m1*m2))^2-((k1+k2)*k2-k2^2)/(m1*m2));
k1 = solve(w==fun,k1)
返回:
k1 =
(4*k2*m1*w - 4*m1*m2*w^2 + 4*k2*m2*w)/(k2 - 4*m2*w)