newmark迭代的MATLAB程序?qū)崿F(xiàn)
瀏覽:386250 收藏:1
newmark迭代的MATLAB程序實現(xiàn)
% newmark方法的程序?qū)崿F(xiàn)
clc
clear
m=[6/12,1/12;1/12,2/12];
k=[2*3,-1*2;-1*2,1*2];
f1=[0;1];
d2=inv(m)*f1;
b=0.25;
r=0.5;
dt=0.12;
a0=1/(b*(dt)^2);
a1=r/(b*dt);
a2=1/(b*dt);
a3=1/(2*b)-1;
a4=r/b-1;
a5=0.5*dt*((r/b)-2);
a6=dt*(1-r);
a7=r*dt;
pk=k+a0*m;
pk=inv(pk);
d0=[0;0];
d1=[0;0];
for i=1:10
t=0.12*i;
if t>0.5
f1(2)=0;
end
ff=0.0;
d00=0.0;
ff=ff+m*(a0*d0+a2*d1+a3*d2);
pf1=f1+ff;
d00=d00+pk*pf1;
d22=a0*(d00-d0)-a2*d1-a3*d2;
d11=d1+a6*d2+a7*d22;
d0=d00;
d1=d11;
d2=d22;
a(i)=d00(1);
b(i)=d00(2);
end
a
b
這個程序其實較好理解,先搞懂newmark方法,一般的動力學有關(guān)的書上會有newmark方法的編程思路,結(jié)合著看一下,應(yīng)該十分鐘內(nèi)您就會明白.
第一段是一些初值設(shè)置;第二段就是迭代算法!
批評指正,相互學習!
轉(zhuǎn)自 振動論壇
% newmark方法的程序?qū)崿F(xiàn)
clc
clear
m=[6/12,1/12;1/12,2/12];
k=[2*3,-1*2;-1*2,1*2];
f1=[0;1];
d2=inv(m)*f1;
b=0.25;
r=0.5;
dt=0.12;
a0=1/(b*(dt)^2);
a1=r/(b*dt);
a2=1/(b*dt);
a3=1/(2*b)-1;
a4=r/b-1;
a5=0.5*dt*((r/b)-2);
a6=dt*(1-r);
a7=r*dt;
pk=k+a0*m;
pk=inv(pk);
d0=[0;0];
d1=[0;0];
for i=1:10
t=0.12*i;
if t>0.5
f1(2)=0;
end
ff=0.0;
d00=0.0;
ff=ff+m*(a0*d0+a2*d1+a3*d2);
pf1=f1+ff;
d00=d00+pk*pf1;
d22=a0*(d00-d0)-a2*d1-a3*d2;
d11=d1+a6*d2+a7*d22;
d0=d00;
d1=d11;
d2=d22;
a(i)=d00(1);
b(i)=d00(2);
end
a
b
這個程序其實較好理解,先搞懂newmark方法,一般的動力學有關(guān)的書上會有newmark方法的編程思路,結(jié)合著看一下,應(yīng)該十分鐘內(nèi)您就會明白.
第一段是一些初值設(shè)置;第二段就是迭代算法!
批評指正,相互學習!
轉(zhuǎn)自 振動論壇
技術(shù)鄰APP
工程師必備
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP
1




















