当前位置:编程学习 > Matlab >>

关于matlab的newmark程序!急!!!!!!!!!!!!!!! 运行后,有如下问题,请指教

问题: function[x,v,a]=newmarkb(m,k,c,n,p,x0,v0,a0,dt,RecordLength) m=[2,0;0,1] k=[6,-2;-2,4] c=zeros(2) n=2 p=[0;10] x0=[0;0] v0=[0;0] a0=[0;10] alpha=0.25 deta=0.5 dt=0.25 RecordLength=12 x=zeros(n,RecordLength) v=zeros(n,RecordLength) a=zeros(n,RecordLength) x(:,1)=x0; v(:,1)=v0; a(:,1)=a0; deta=0.50; alpha=0.25; a0=1/(alpha*dt^2) a1=deta/(alpha*dt) a2=1/(alpha*dt) a3=0.5/alpha-1 a4=deta/alpha-1 a5=dt*(deta/alpha-2)/2 a6=dt*(1-deta) a7=deta*dt k_=k+a0*m+a1*c [L,U]=lu(k_) for i=1:RecordLength-1 p_(:,i+1)=p(:,i+1)+m*(a0*x(:,i)+a2*v(:,i)+a3*a(:,i))+c*(a1*x(:,i)+a4*v(:,i)+a5*a(:,i)) ik=L\p_(:,i+1) ik=U\ik x(:,i+1)=L'\ik a(:,i+1)=a0*(x(:,i+1)-x(:,i))-a2*v(:,i)-a3*a(:,i) v(:,i+1)=v(:,i)+a6*a(:,i)+a7*a(:,i+1) end
追问:
p_(:,i+1)=p+m*(a0*x(:,i)+a2*v(:,i)+a3*a(:,i))+c*(a1*x(:,i)+a4*v(:,i)+a5*a(:,i))
那么这一句,p岂不是一个常量了吗,p只用到一次??
n=2
p=[0;10]
x0=[0;0]
v0=[0;0]
a0=[0;10]
你的这部分程序中的p就是常量啊,你的程序的具体意义我不是很清楚,只能从语法上去修改
大哥,请问如果p是如下的平p(t)=sin2pit 该如何呢。
如果P是常量,根据上面的算例,算出的响应和课本上的的答案不一样呢?
for i=1:RecordLength-1
    p(:,i+1)=p(:,i)+m*(a0*x(:,i)+a2*v(:,i)+a3*a(:,i))+c*(a1*x(:,i)+a4*v(:,i)+a5*a(:,i))%%你可以这么改一下试试
    ik=L\p(:,i+1)%%你可以这么改一下试试
    ik=U\ik
    x(:,i+1)=L'\ik
    a(:,i+1)=a0*(x(:,i+1)-x(:,i))-a2*v(:,i)-a3*a(:,i)
    v(:,i+1)=v(:,i)+a6*a(:,i)+a7*a(:,i+1)
end
我试试啊。很纠结
答案:function[x,v,a]=newmarkb
%既然你的输入参数在函数体内都有,所以输入参数列表可以取消
m=[2,0;0,1]
k=[6,-2;-2,4]
c=zeros(2)
n=2
p=[0;10]
x0=[0;0]
v0=[0;0]
a0=[0;10]
alpha=0.25
deta=0.5
dt=0.25
RecordLength=12
x=zeros(n,RecordLength)
v=zeros(n,RecordLength)
a=zeros(n,RecordLength)
x(:,1)=x0;
v(:,1)=v0;
a(:,1)=a0;
deta=0.50;
alpha=0.25;
a0=1/(alpha*dt^2)
a1=deta/(alpha*dt)
a2=1/(alpha*dt) 
a3=0.5/alpha-1 
a4=deta/alpha-1
a5=dt*(deta/alpha-2)/2 
a6=dt*(1-deta) 
a7=deta*dt
k_=k+a0*m+a1*c
[L,U]=lu(k_)
for i=1:RecordLength-1
    p_(:,i+1)=p+m*(a0*x(:,i)+a2*v(:,i)+a3*a(:,i))+c*(a1*x(:,i)+a4*v(:,i)+a5*a(:,i))%这句有改动
    ik=L\p_(:,i+1)
    ik=U\ik
    x(:,i+1)=L'\ik
    a(:,i+1)=a0*(x(:,i+1)-x(:,i))-a2*v(:,i)-a3*a(:,i)
    v(:,i+1)=v(:,i)+a6*a(:,i)+a7*a(:,i+1)
end

上一个:麻烦帮我解释下matlab数字水印程序
下一个:哪位大侠帮我在CSDN里面下Lee、Frost、MAP滤波的MAtlab程序,不胜感激!QQ380403647

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,