?? guaidian2.m
字號:
function [tm,xm]=guaidian2(dt,k1,m,eta,xg,x1);%第二類拐點處理;
%%%%精確拐點非迭代法;紐馬克法求解;
tm=-1;
%采用精確拐點非迭代法求出零速度拐點;
%gama/beta等于2則解二次方程,很方便的。
gama=0.5;beta=0.25;w=sqrt(k1/m);cc=2*eta*w*m;
pa=k1*x1(3)/2-k1*beta*x1(3)/gama;%%pa==0
pb=(xg(2)-xg(1))*m/dt+k1*x1(2)-k1*beta*x1(2)/gama;
pc=-m*x1(3)/gama-cc*x1(2);
pd=-m*x1(2)/gama;
if(pb==0)
tm=-pd/pc;
else
a=pc/pb;b=pd/pb;%%%%%%x=solve('x^2+a*x+b=0');
det(1)=-1/2*a+1/2*(a^2-4*b)^(1/2);
det(2)=-1/2*a-1/2*(a^2-4*b)^(1/2);
for ni=1:2
if det(ni)<dt&det(ni)>=0
tm=det(ni);
end
end
end
if(length(tm)~=1)
tm=min(tm);
end
if(tm>dt|tm<0)
cuowu='222222?????'
end
txg(1)=xg(1);
txg(2)=xg(1)+(xg(2)-xg(1))*tm/dt;
if(tm==0)
xm=x1;
else
[xm]=newmark_single(tm,k1,m,eta,txg,x1);
end
%%%不計誤差則應該xm(2)=0;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -