我有一個數組求解線性方程質量彈簧系統
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)
發現和dt=(diff)
。
問題是我已經實現了代碼來找到c
和k
的值在使用A=x\b
的公式中。
我以xx=dx./dt; xx2=dx2./dt2;
使用式A=x\b
獲得的值執行的代碼是用於c
和k
Nan
Nan
和,因爲我dt2=diff(t,2)
出來是零。我甚至增加了零,使大小等於xx
和xx2
,但我能做些什麼來使填充的大小與零相等,因爲我認爲這造成了很多問題。
我有一種方法,我可以插入並獲得大小相等的diff
,因爲diff
正在減少n-1的大小,正確嗎?關於dt2
可以做些什麼:它是好的還是應該是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)
ehm,你的'xx2 = diff(x,2)./ diff(t,2)'是令人尷尬的。您應該通過有限差分來回顧二階導數的定義及其近似。 – 2012-08-12 21:58:09