使用 matlab 查找一个未知数



>%你好。我必须通过使用 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

请帮忙

正如@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)

计算机不是一切的答案;你只需要解决一个(相对简单的)代数问题。

正如我在评论中指出的那样,这对于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)

最新更新