求解质量弹簧系统的线性方程

时间:2012-08-12 21:09:48

标签: matlab math equation

我有一个数组

X=[ 0.1000    0.0844    0.0434   -0.0090   -0.0559   -0.0831   -0.0832   -0.0574   -0.0152    0.029]

显示位置。关于该位置的时间数组是

T= [0    0.5000    1.0000    1.5000    2.0000    2.5000    3.0000    3.5000    4.0000    4.5000]  

我有质量弹簧方程mx’’ + c x’ + kx = 0,其中x’’是x的双重导数,我使用dx=diff(x.2)dt2=diff(t,2)找到了x’dx=diff(x) 1}}由dt=(diff)c找到。

问题是我已使用k实现了代码,以便在等式中找到A=x\bxx=dx./dt; xx2=dx2./dt2;的值。

我使用A=x\b

实现了代码

使用公式Nan获得的值为Nanc kdt2=diff(t,2),因为我的xx出来了零。我甚至添加了零来使xx2diff的大小相等,但是我可以做些什么来使大小等于用零填充,因为我认为这会导致很多问题。 / p>

我有一种方法可以插入并获得diff的大小相等,因为dt2正在将大小减小n-1,对吗?关于dt2=dt^.2可以做些什么:它是好还是应该是x=[ 0.1000 0.0844 0.0434 -0.0090 -0.0559 -0.0831 -0.0832 -0.0574 -0.0152 0.029]'; t= [0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000]'; dx=diff(x); dt=diff(t); dx2=diff(x,2); dt2=diff(t,2); % this comes out zero xx=dx./dt; xx2=dx2./dt2; % padding zeros to make size equal xx2=padarray(xx2,size(x)-size(xx2),'post'); xx=padarray(xx,size(x)-size(xx),'post'); mass=100; gh=horzcat(xx,x); A=gh\(m*xx2) ,因为它将全部归零。

以下是我的代码。

{{1}}

1 个答案:

答案 0 :(得分:0)

只是c和k?我呢?你也不需要吗?

这是一个同质的ODE。数组告诉你初始位移在零时刻是什么,但速度怎么样?你需要两个初始条件。你是否会假设一开始速度为零?或者你会选择根据你得到的两个点来计算第一个差异吗?

我建议绘制值,看看它们的样子,并根据你观察到的内容尝试对常数进行有根据的猜测。你知道这个ODE的封闭形式解决方案;您可能能够根据您给出的数据来判断值应该是什么。

完成之后,我建议根据多个点的计算差异为未知数编写矩阵解决方案。这将把问题转化为常数的最小二乘解。可能是一组常数在每个时间点都不满足等式。

另一种方法是对数据进行FFT并将其与频域中的解决方案进行比较。