-3

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

请帮忙

4

2 回答 2

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)
于 2013-10-30T11:34:14.223 回答
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)
于 2013-10-30T13:37:53.460 回答