声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1718|回复: 5

[计算数学] 求助:Newmark算法

[复制链接]
发表于 2008-5-21 11:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
各位网友:我的课题是做动力学方面的研究,系统的模型已经建出来了,是20X20的线性时变系统,接下来就是对模型的求解。近期看了一些相关的文献,这种问题的求解方法好多前人用Newmark方法,我本人之前没有遇到过类似的问题,请大家给予一些指导意见:这种方程的求解用什么方法较好;什么文献对newmark方法的阐述较为清晰。

期待对此熟悉的各位网友不吝赐教,多谢!


[ 本帖最后由 无水1324 于 2008-5-27 07:54 编辑 ]

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

 楼主| 发表于 2008-5-25 20:19 | 显示全部楼层
怎么大家只是进来逛逛就走呀?请多多指教。
发表于 2008-5-25 22:13 | 显示全部楼层
NEWMARK资料比较多,结构动力学书上就有介绍,不难
 楼主| 发表于 2008-5-27 10:25 | 显示全部楼层
谢谢 hao1982  的回复。
 楼主| 发表于 2008-6-8 11:18 | 显示全部楼层
%%  求解线形系统%% dx^2+x=0
%% dx(0)=0  x(0)=1

clear;clc;
format long

M=[1];
C=[0];
K=[1];
P=[0];
beita_Newmark=1/4;
gama_Newmark=1/2;
derta_t=0.1;  
i_Newmark=75;
a0_Newmark=1/(beita_Newmark*(derta_t)^2);
a1_Newmark=gama_Newmark/(beita_Newmark*derta_t);
a2_Newmark=1/(beita_Newmark*derta_t);
a3_Newmark=1/(2*beita_Newmark)-1;
a4_Newmark=gama_Newmark/beita_Newmark-1;
a5_Newmark=derta_t*(gama_Newmark/beita_Newmark-2)/2;
a6_Newmark=derta_t*(1-gama_Newmark);
a7_Newmark=derta_t*gama_Newmark;
Xa_0_Newmark(1,1)=1;  
Xa_1_Newmark(1,1)=0;
Xa_2_Newmark(1,1)=0;  
Xb_0_Newmark(1,1)=0;  
Xb_1_Newmark(1,1)=0;  
Xb_2_Newmark(1,1)=0;   
K_Newmark(1,1)=0;   
P_Newmark(1,1)=0;
X0(1,i_Newmark+1)=0;
X1(1,i_Newmark+1)=0;
X2(1,i_Newmark+1)=0;
TT(1,i_Newmark+1)=0;
Xa_2_Newmark=inv(M)*P
X0=Xa_0_Newmark;  
X1=Xa_1_Newmark;   
X2=Xa_2_Newmark;

for ii=1:i_Newmark
    t=ii*derta_t;
    TT(1,ii+1)=t;
K_Newmark=K+a0_Newmark*M+a1_Newmark*C;   
P_Newmark=P+M*(a0_Newmark*Xa_0_Newmark+a2_Newmark*Xa_1_Newmark+a3_Newmark*Xa_2_Newmark)+C*a1_Newmark*Xa_0_Newmark+a4_Newmark*Xa_1_Newmark+a5_Newmark*Xa_2_Newmark);

Xb_0_Newmark=inv(K_Newmark)*P_Newmark;  
Xb_2_Newmark=a0_Newmark*(Xb_0_Newmark-Xa_0_Newmark)-a2_Newmark*Xa_1_Newmark-a3_Newmark*Xa_2_Newmark;  
Xb_1_Newmark=a7_Newmark*Xb_2_Newmark+Xa_1_Newmark+a6_Newmark*Xa_2_Newmark;  
X0(1,ii+1)=Xb_0_Newmark;
X1(1,ii+1)=Xb_1_Newmark;
X2(1,ii+1)=Xb_2_Newmark;

Xa_0_Newmark=Xb_0_Newmark;
Xa_1_Newmark=Xb_1_Newmark;
Xa_2_Newmark=Xb_2_Newmark;
end

plot(TT(1,:),X0(1,:),'LineWidth',1)

结果

结果
 楼主| 发表于 2008-6-8 11:20 | 显示全部楼层
%%  求解非线性系统
%% dx^2+(100+1000*x^2)*x=0
%% dx(0)=60  x(0)=0

[ 本帖最后由 zhzq626 于 2008-6-8 11:24 编辑 ]
2.jpg
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-22 12:58 , Processed in 0.063456 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表