matlab 矩阵位移法编程 结构力学,matlab 矩阵位移法编程 结构力学

矩阵位移法编程大作业

(091210211)

一、编制原理

本程序的原理是基于结构力学矩阵位移法原理,以结构结点位移作基本未知量,将要分析的结构拆成已知节点力—结点力位移关系的单跨梁集合,通过强令结构发生待定的基本未知位移,在各个单跨梁受力分析结果的基础上通过保证结构平衡建立位移法的线性方程组,从而求得基本未知量。

二、程序说明

本程序是计算3层11跨框架右侧结点的位移和弯矩的程序,编译过程是按照矩阵位移法的先处理法进行的。首先将结构杆件的交汇点作为结点,共有36个结点和108个位移编号,然后根据梁、柱、斜杆的不同分别建立单元刚度矩阵,然后转换为整体坐标系下的刚度矩阵,然后将所有杆件的单元刚度矩阵整合成为总体刚度矩阵,在进行整合时连续运用for函数,最终形成108阶的总体刚度矩阵。然后通过对荷载的分析自己确定出荷载矩阵,直接写进程序。这样就可以把36个结点的108个位移求得,然后再利用各个单元的单元刚度矩阵和所得的位移求得单元杆件的内力。 离散化编号如下图:

三、算法流程

离散结构化编号 确定梁、柱、斜杆在整体 坐标系下的刚度矩阵 先处理法把各个杆件的单元刚度矩阵整合成总体刚度矩阵 利用杆件单元刚度矩阵和所求位移求内力 单元分析 建立梁、柱、斜杆的局部坐标系下的单元刚度矩阵 确定综合结点荷载矩阵 建立方程,求解位移

输出结果 四、源代码

结束 %结构力学大作业 3层11跨框架矩阵位移法编程 王贝 091210211 h=input('输入单层高h:'); L=input('输入单跨度L:');

EIc=input('输入柱子的抗弯刚度EIc:'); EAc=input('输入柱子的抗压刚度EAc:'); EIb=input('输入梁的抗弯刚度EIb:'); EAb=input('输入梁的抗压刚度EAb:'); EIo=input('输入斜杆的抗弯刚度EIo:'); EAo=input('输入斜杆的抗压刚度EAo:'); q=input('输入侧向均布荷载集度q:'); T1=[1,0,0,0,0,0; 0,1,0,0,0,0; 0,0,1,0,0,0; 0,0,0,1,0,0; 0,0,0,0,1,0;

0,0,0,0,0,1];%角度为0°的转换矩阵 T2=[0,1,0,0,0,0; -1,0,0,0,0,0; 0,0,1,0,0,0; 0,0,0,0,1,0; 0,0,0,-1,0,0;

0,0,0,0,0,1];%角度为90°的转换矩阵 x=atan(h/L);

T=[cos(x),sin(x),0,0,0,0; -sin(x),cos(x),0,0,0,0; 0,0,1,0,0,0;

0,0,0,cos(x),sin(x),0; 0,0,0,-sin(x),cos(x),0;

0,0,0,0,0,1];%斜杆的转换矩阵 T3=T;

%梁的单元刚度矩阵

kb0=[EAb/L 0 0 -EAb/L 0 0;

0 12*EIb/(L*L*L) 6*EIb/(L*L) 0 -12*EIb/(L*L*L) 6*EIb/(L*L); 0 6*EIb/(L*L) 4*EIb/L 0 -6*EIb/(L*L) 2*EIb/L; -EAb/L 0 0 EAb/L 0 0;

0 -12*EIb/(L*L*L) -6*EIb/(L*L) 0 12*EIb/(L*L*L) -6*EIb/(L*L);

0 6*EIb/(L*L) 2*EIb/L 0 -6*EIb/(L*L) 4*EIb/L]; %柱子的单元刚度矩阵

kc0=[EAc/h 0 0 -EAc/h 0 0;

0 12*EIc/(h*h*h) 6*EIc/(h*h) 0 -12*EIc/(h*h*h) 6*EIc/(h*h); 0 6*EIc/(h*h) 4*EIc/h 0 -6*EIc/(h*h) 2*EIc/h; -EAc/h 0 0 EAc/h 0 0;

0 -12*EIc/(h*h*h) -6*EIc/(h*h) 0 12*EIc/(h*h*h) -6*EIc/(h*h); 0 6*EIc/(h*h) 2*EIc/h 0 -6*EIc/(h*h) 4*EIc/h;]; %斜杆的单元刚度矩阵 H=sqrt(h*h+L*L);

ko0=[EAo/H 0 0 -EAo/H 0 0;

0 12*EIo/(H*H*H) 6*EIo/(H*H) 0 -12*EIo/(H*H*H) 6*EIo/(H*H); 0 6*EIo/(H*H) 4*EIo/H 0 -6*EIo/(H*H) 2*EIo/H; -EAo/H 0 0 EAo/H 0 0;

0 -12*EIo/(H*H*H) -6*EIo/(H*H) 0 12*EIo/(H*H*H) -6*EIo/(H*H); 0 6*EIo/(H*H) 2*EIo/H 0 -6*EIo/(H*H) 4*EIo/H]; kb=T1'*kb0*T1;%总体坐标下梁的单元刚度矩阵 kc=T2'*kc0*T2;%总体坐标下柱子的单元刚度矩阵 ko=T3'*ko0*T3;%总体坐标斜杆的单元刚度矩阵

X=zeros(108,108);Y=zeros(108,108);Z=zeros(108,108);%定义108阶0矩阵 K1=zeros(108,108);K2=zeros(108,108);K3=zeros(108,108); K4=zeros(108,108);K5=zeros(108,108);K6=zeros(108,108); K7=zeros(108,108);K8=zeros(108,108);K9=zeros(108,108); %把梁杆单元矩阵整合到总体刚度矩阵的循环语句 for ii=1:11

X(3*ii-2:3*ii+3,3*ii-2:3*ii+3)=kb; K1=K1+X;X=zeros(108,108); end

for ii=13:23

Y(3*ii-2:3*ii+3,3*ii-2:3*ii+3)=kb; K1=K1+Y;Y=zeros(108,108); end

for ii=25:35

Z(3*ii-2:3*ii+3,3*ii-2:3*ii+3)=kb; K1=K1+Z;Z=zeros(108,108); end

%把柱杆单元矩阵整合到总体刚度矩阵的循环语句 for jj=1:36

K2(3*jj-2:3*jj,3*jj-2:3*jj)=kc(4:6,4:6); end

for jj=1:24

K3(3*jj-2:3*jj,3*jj-2:3*jj)=kc(1:3,1:3); end

for jj=1:24

K4(3*jj-2:3*jj,3*jj+34:3*jj+36)=kc(1:3,4:6); end

for jj=1:24

K5(3*jj+34:3*jj+36,3*jj-2:3*jj)=kc(4:6,1:3); end

%把斜杆杆单元矩阵整合到总体刚度矩阵的循环语句 for gg=3:12:27

K6(3*gg-2:3*gg,3*gg-2:3*gg)=ko(4:6,4:6); end

for gg=2:12:14

K7(3*gg-2:3*gg,3*gg-2:3*gg)=ko(1:3,1:3); end

for gg=2:12:14

K8(3*gg-2:3*gg,3*gg+37:3*gg+39)=ko(1:3,4:6); end

for gg=2:12:14

K9(3*gg+37:3*gg+39,3*gg-2:3*gg)=ko(4:6,1:3); end

K=K1+K2+K3+K4+K5+K6+K7+K8+K9;%总体刚度矩阵

P=zeros(108,1);P(1,1)=h*q;P(37,1)=h*q;P(73,1)=h*q/2;P(75,1)=q*h*h/12; A=K\\P;%结构位移 B1=kb*A(103:108,1); B2=kb*A(67:72,1); B3=kb*A(31:36,1);

D1=zeros(6,1);D1(1:3,1)=A(70:72,1);D1(4:6,1)=A(106:108,1); D2=zeros(6,1);D2(1:3,1)=A(34:36,1);D2(4:6,1)=A(70:72,1); C1=kc*D1;C2=kc*D2;C3=kc(4:6,4:6)*A(34:36,1);

M1(1,1)=B1(6,1);M2(1,1)=C1(6,1);M3(1,1)=B2(6,1);M4(1,1)=C2(6,1); M5(1,1)=C1(3,1);M6(1,1)=B3(6,1);M7(1,1)=C3(3,1);M8(1,1)=C2(3,1);

for i=1:3

m=36*i-2;

fprintf('第%d层最右侧节点的位移是%d\\n',i,A(m,1)) end

fprintf('第1层最右侧节点左侧杆的弯矩是%f\\n',M6) fprintf('第1层最右侧节点下侧杆的弯矩是%f\\n',M7) fprintf('第1层最右侧节点上侧杆的弯矩是%f\\n',M8) fprintf('第2层最右侧节点左侧杆的弯矩是%f\\n',M3) fprintf('第2层最右侧节点下侧杆的弯矩是%f\\n',M4) fprintf('第2层最右侧节点上侧杆的弯矩是%f\\n',M5) fprintf('第3层最右侧节点左侧杆的弯矩是%f\\n',M1) fprintf('第3层最右侧节点下侧杆的弯矩是%f\\n',M2)

五、试算算例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++混淆点-构造函数参数

#include<iostream> using namespace std;class Test { public://Test(int x, int y) { //或者将形参名不要等于数据成员名// //x x; //自赋值 错误// //y y;// this->x x; //正确 形参a屏蔽了成员变量a&#xff0c;所以必须用this指针索引&#xff0c;这样程序直…

php 静态页面模板类,dedetag.class.php 静态模板类

类文件include/dedetag.class.php这个文件是dedecms V5.3及之前版本使用的主要的模板类&#xff0c;它是解析式模板类&#xff0c;并非编译式的(区别是前者通过获得标签位置进行内容替换&#xff0c;后者是直接解析式PHP代码&#xff0c;二次执行)一、模板语法织梦模板引擎是一…

C/C++混淆点-字符串指针

c语言中没有字符串的类型&#xff0c; 所以对字符串操作&#xff0c;有两种形式:可以用字符指针&#xff0c;或者字符串数组&#xff08;这里的指针变量c, 系统会为其重新分配内存) &#xff08;1&#xff09;用字符数组存放一个字符串 char string[]"Linux C"; pri…

python 文件上传下载,python实现上传下载文件功能

最近刚学python,遇到上传下载文件功能需求&#xff0c;记录下&#xff01;django web项目&#xff0c;前端上传控件用的是uploadify。文件上传 - 后台view 的 Python代码如下&#xff1a;csrf_exemptrequire_http_methods(["POST"])def uploadFiles(request):try:use…

C++基础05-类构造函数与析构函数

总结&#xff1a; 1、类对象的作用域为两个{}之间。在遇到}后开始执行析构函数 2、当没有任何显式的构造函数&#xff08;无参&#xff0c;有参&#xff0c;拷贝构造&#xff09;时&#xff0c;默认构造函数才会发挥作用 一旦提供显式的构造函数&#xff0c;默认构造函数不复…

PHP网站配置项,Thinkphp5通用网站后台配置项的动态添加及更新

一、引入无论平时我们自己制作&#xff0c;还是浏览别人的网站&#xff0c;它都具有其相应的一些共用的、通用的属性&#xff0c;比如&#xff1a;网站的名字&#xff0c;关键字、备案号、分页数量、是否开启缓存等信息。一些网站可能将配置项写死在后台&#xff0c;无法动态更…

C++基础06-类与对象之new和malloc

1、C和C动态分配内存区别&#xff1a; 在C语言中是利用库函数malloc和free来分配和撤销内存空间的。 C提供了较简便而功能较强的运算符new和delete来取代 malloc和free函数。 new和delete是运算符&#xff0c;不是函数&#xff0c;因此执行效率高。 2、new和delete的用法 &l…

php获取数组中的全部可以吗,php获取数组中所有值的方法

php的数组操作函数array_values 可以提取一个数组中所有元素值&#xff0c;具体的使用方法&#xff0c;可以参考下面的教程。array_values() 函数的作用是返回数组中所有元素的值&#xff0c;使用起来非常简单&#xff0c;只有一个必选参数&#xff0c;就可以返回一个包含给定数…

C++基础07-类之静态成员变量和成员函数

总结&#xff1a; 1、静态数据成员和静态成员函数属于整个类而不是某个对象 即使没有定义对象&#xff0c;静态成员也是存在的 2、static 成员类外存储,求类大小,并不包含在内。 &#xff08;因为存储在全局区&#xff0c;而类一般存储在栈区&#xff09; 3、静态数据成员在…

oracle 查询cpu 100%,Oracle 11g中查询CPU占有率高的SQL

oracle版本&#xff1a;oracle11g背景&#xff1a;今天在Linux中的oracle服务上&#xff0c;运用top命令发现许多进程的CPU占有率是100%。操作步骤&#xff1a;以进程PID:7851为例执行以下语句&#xff1a;方法一&#xff1a;(1)通过PID&#xff0c;查得相对应的系统进程对应的…

C++基础08-this指针-const修饰成员函数-函数返回引用/值

一、this指针 1、C类对象中的成员变量和成员函数是分开存储的。C语言中的内存四区模型仍然有效&#xff01; 2、C中类的普通成员函数都隐式包含一个指向当前对象的this指针。 3、静态成员函数、成员变量属于类 4、静态成员函数与普通成员函数的区别 静态成员函数不包含指…

oracle 10046详解,Oracle 10046事件详解

10046事件说明10046事件是Oracle提供的内部事件&#xff0c;是对SQL_TRACE的增强.10046事件可以设置以下四个级别:1 - 启用标准的SQL_TRACE功能,等价于sql_trace4 - Level 1 加上绑定值(bind values)8 - Level 1 等待事件跟踪12 - Level 1 Level 4 Level 8类似sql_trace&…

C++基础09-货物售卖和MyArray实现

1、货物出货与进货 #if 0 #include<iostream> using namespace std; /* 某商店经销一种货物。货物购进和卖出时以箱为单位。各箱 的重量不一样&#xff0c;因此商店需要记录目前库存的总重量&#xff0c;现在用 C模拟商店货物购进和卖出的情况 */ class Goods { public:…

oracle+导入emp,Oracle数据库导入导出emp文件

首先询问对方数据库的表空间名称和大小&#xff0c;然后在你的oracle中建立相应表空间&#xff0c;最后使用命令导入、导出数据。补充&#xff1a;1.要新建一个数据库&#xff1b;Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器…

C++基础10-类和对象之友元函数

采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员, 这时可以将这些函数定义为该 函数的友元函数。除了友元函…

linux进程号为一,一步步探究linux进程中的用户ID

转载请注明来源chengyaogen.blog.chinaunix.net一、进程与权限A.进程时Linux/Unix操作系统中最重要的抽象之一B.进程是一个处于执行期的程序(目标代码存储在某种介质上)A process is a program(object code stored on some media) in the midst ofexecution.而进…

C++基础11-类和对象之操作符重载1

总结&#xff1a; 1、运算符重载的本质是函数重载 2、运算符重载可分为成员函数重载和全局函数重载(差一个参数) 3、运算符重载函数的参数至少有一个是类对象&#xff08;或类对象的引用&#xff09; 4、不可以被重载的操作符有&#xff1a;成员选择符(.) 成员对象选择符(.*) …

linux下搜狗安装目录,Linux安装搜狗输入法

本系统使用Ubuntu16.04LTS安装中文输入法Ubuntu17.04中支持IBUS&#xff0c;fcitx等输入法框架。分别介绍两种框架下的中文输入法安装&#xff1a;1.IBUS框架下的拼音输入法1.1在Ubuntu Software搜索“pinyin”&#xff0c;安装列表中第一个&#xff1b;1.2在系统设置-Language…

在Linux系统下实现进程,Linux进程学习(一)之Linux进程的基本知识和实现

最近一周学习了Linux 进程编程的知识&#xff0c;现对其总结如下。在第一部分中我们先对进程的基本概念以及在Linux 中是如何来现实进程的进行介绍Tiger-John说明 &#xff1a;许多人在学习中只注重如何编程&#xff0c;却忘了注重原理,不去深究其基本原理。其实操作系统的原理…

C++基础11-类和对象之操作符重载2

总结&#xff1a; 1、等号操作符重载和拷贝构造函数重载一般用在数据成员中需要单独在堆区开辟内存时(指针) 2、new&#xff0c;delete重载内部还是使用malloc和free 3、逗号表达式(,)、或者(||)&#xff0c;且(&&)&#xff0c;条件表达式(?:)具有短路功能。 但…