哈工大 材料力学 MATLAB 梁 上机 大作业

合集下载

哈工大材料力学大作业--matlab编程

哈工大材料力学大作业--matlab编程

H a r b i n I n s t i t u t e o f T e c h n o l o g y材料力学上机作业课程名称:材料力学设计题目:应力状态分析院系:机电学院班级:分析者:学号:指导教师:***设计时间:2013年6月18日哈尔滨工业大学材料力学上机课设计说明书一, 设计题目题目7 应力状态分析 输入:1. 平面应力状态输入:x y xy σστ(,,);某截面方位角α2. 空间应力状态输入:,x y z xy yz zx σσστττ(,,,,)输出: 1. 输出主应力123σσσ(,,)2. 最大切应力(13max 132σσττ-==)3.如为平面应力状态则需要输出方位角α斜截面上的应力ααστ、及主方向角*σα4. 画出应力圆示意图二, 程序计算设计过程1. 平面应力状态分析对于任意平面应力状态,有max min σσ=2x y σσ+±主应力为:1max 23min ,0,σσσσσ===并且由 2tan 2xyx yστασσ=-可求得主应力方向角13σσαα、。

对于任意一个方位角α,有:=cos 2sin 222sin 2cos 22x yx yxy x yxy αασσσσσατασστατα++++-=-+从而,输入任意角α,即可求得该截面的应力状态ααστ、并且ααστ、都是关于α的函数,上式即为应力圆的参数方程,参数为α。

将α从0到pi 取一系列的值,则可以求出一系列的ααστ、,在坐标系中找到对应点,连接即可作出应力圆。

2. 三向应力状态分析解特征方程 321230I I I σσσ-+-=即可求出主应力123σσσ、、 其中:123||||||||x y z xyx y zy z xz xy y yz z zx x x yx zx xyy zy xzyz z I I I σσσστστσττστστσστττστττσ=-+⎛⎫⎛⎫⎛⎫=++⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭⎛⎫⎪= ⎪ ⎪⎝⎭再由 13max 132σσττ-== 可求得最大切应力。

材料力学上机大作业(哈工大)

材料力学上机大作业(哈工大)

H a r b i n I n s t i t u t e o f T e c h n o l o g y材料力学上机报告课程名称:材料力学设计题目:二向应力状态分析院系:XXXXXX班级:XXXXXX设计者:XXXXXX学号:XXXXXX设计时间:2013.06.18哈尔滨工业大学二向应力状态分析一:课题要求1.输入:任意一点的应力状态:(σx、σy、τxy);某截面方位角α2.输出:输入点的主应力(σ1、σ2、σ3),方位角α斜截面上的应力σα、τα。

及主方向角α3.画出应力圆示意图。

4.程序运行时为界面显示形式。

二:程序框图三:所编程序x=str2double(get(handles.edit1,'string'));y=str2double(get(handles.edit2,'string'));xy=str2double(get(handles.edit3,'string'));M=str2double(get(handles.edit4,'string')); %将窗口输入值分别赋给x,y,xy,M b=sqrt((x/2-y/2)^2+xy^2);x1=(x+y)/2+b;x3=(x+y)/2-b;x2=0;if x1<0x2=x1;x1=0;endt=(x1-x3)/2;M=M*pi/180;b1=(x+y)/2+(x-y)*cos(2*M)/2-xy*sin(2*M);b2=(x-y)*sin(2*M)/2+xy*cos(2*M);b3=90*atan((-2*xy)/(x+y))/pi;%计算输出的主切应力大小、方向和截面上的应力并赋值set(handles.edit5,'string',x1);set(handles.edit6,'string',x2);set(handles.edit7,'string',x3);set(handles.edit9,'string',t);set(handles.edit10,'string',b3);set(handles.edit11,'string',b1);set(handles.edit12,'string',b2);%在输出窗口显示主切应力大小、方向和截面上应力b4=sqrt(b.^2+t.^2);v1=(x+y)/2-b4:0.001:(x+y)/2+b4;b11=sqrt(b4.^2-(v1-(x+y)/2).^2);b12=-sqrt(b4.^2-(v1-(x+y)/2).^2);%绘制应力圆上的点axes(handles.axes1); %选择应力圆的输出地址plot(v1,b11,v1,b12);grid on%绘制应力圆以上程序为在matlab中使用GUI编程时的主代码,界面代码请见m文件。

哈工大材料力学上机实验报告

哈工大材料力学上机实验报告

材料力学I上机实验设计报告院系:机电学院班级: 1308***姓名:***学号: 11308*****指导教师:张桂莲时间:2015年6月一、问题描述1、应力状态分析对于空间或者是平面应力状态的相关计算,如果采用人工计算的方式比较繁琐而且容易出错,对于这种简单的重复计算,编制相应的程序则可以大大提高计算准确度和人工计算强度。

对于平面应力状态,输入量应为(,,x y xy σστ),以及某截面的方位角α,其输出数据应为该单元体所受主应力(123,,σσσ),所受最大剪应力(13max 132σσττ-==),以及方位角为α的斜截面上的应力(,ααστ)以及主方向角σα,同时还要画出其应力圆示意图,以直观的显示其应力状态。

对于空间应力状态,输入量则应该为各应力(,,,,,x y z xy yz xz σσστττ),其输出数据应该为该单元体所受主应力(123,,σσσ),所受最大剪应力(13max 132σσττ-==),同时还要画出其应力圆示意图,以直观的显示其应力状态。

这样,应力状态分析的基本任务就可以完成。

2、常用截面图形几何性质的分析在生活中,有各种各样的几何形状,但是对于工程实际中经常用到的构件,其截面的几何形状则非常有限。

对于不同的截面,其形心位置、对于形心轴的惯性矩也就有所不同,这样在进行如弯曲、扭转等的应力分析时就会到来不便,因此编制相应的程序来计算相关截面的几何性质也就具有了实际应用价值和可行性。

在这部分程序中,截面几何形状分为三角形、矩形、椭圆形、梯形、圆形、扇形等多种形式,对于不同的截面形状,输入量也就不同。

例如,对于扇形应输入直径和圆心角(,d α);对于梯形则应输入上底、下底和高(,,a b h );对于椭圆形,则要输入长轴长和短轴长(,a b )等等,在此不一一列举,具体输入数据请参看程序运行。

不过对于不同的截面,其输出的量都是相同的,即截面形心的位置、面积、对于形心轴的惯性矩(,,,,C C C C y z y z S I I ),这些输出量就是这些截面的基本几何性质参数,有了这些参数之后则可以对其进行进一步的计算和接下来的分析等问题。

【原创】哈工大材料力学上机——应力状态分析

【原创】哈工大材料力学上机——应力状态分析

Harbin Institute of Technology材料力学上机大作业课程名称:材料力学题目:应力状态分析院系:机电学院班级:姓名:学号:指导教师:设计时间: 20130621哈尔滨工业大学一、题目要求:应力状态分析输入:1.平面应力状态输入:(xy y x τσσ、、);某截面方位角α2.空间应力状态输入:(zx yz xy z y x τττσσσ、、、、、)输出:1.输出主应力(321σσσ、、)。

2.最大剪应力(23113max σσττ-==)。

3.如为平面应力状态则需输出方位角α斜截面上的应力αατσ、及主方位角*σα。

4.画出应力圆示意图。

算法:1.二向应力状态给定xy y x τσσ、、,某截面方位角α,由公式ατασστατασσσσσ2cos 2sin 22sin 2cos 22'''xy y x y x xy y x yx x +--=+-++=即可求得方位角α斜截面上的应力αατσ、, 再由公式y x xyσστασ-=22tan ,推出2/)2arctan(y x xy σστασ-=,于是求出主方位角σα的两个值。

最后由公式22min max )2(2xy y x y x τσσσσσσ+-±+=⎭⎬⎫得到min max ,σσ,并将0,min max 与σσ比较大小,最后得到321,,σσσ 再由公式23113max σσττ-==计算出max τ程序:由matlAB 程序GUI 功能实现可视化窗口,使界面更加友好。

已知正交界面的正应力和剪应力,求其应力状态,包括主应力大小、最大剪切应力、以及具体界面位置应力和剪切力。

第一个按钮用来绘制莫尔圆;第二个按钮用来计算具体界面位置应力和剪切力。

function varargout = gui_moore_13_4(varargin)% GUI_MOORE_13_4 M-file for gui_moore_13_4.fig% GUI_MOORE_13_4, by itself, creates a new GUI_MOORE_13_4 or raises the existing% singleton*.%% H = GUI_MOORE_13_4 returns the handle to a new GUI_MOORE_13_4 or the handle to% the existing singleton*.%% GUI_MOORE_13_4('CALLBACK',hObject,eventData,handles,...) calls the local% function named CALLBACK in GUI_MOORE_13_4.M with the given input arguments.%% GUI_MOORE_13_4('Property','Value',...) creates a newGUI_MOORE_13_4 or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before gui_moore_13_4_OpeningFunction gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to gui_moore_13_4_OpeningFcn via varargin.%% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help gui_moore_13_4% Last Modified by GUIDE v2.5 07-Sep-2007 18:01:33% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @gui_moore_13_4_OpeningFcn, ...'gui_OutputFcn', @gui_moore_13_4_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before gui_moore_13_4 is made visible.function gui_moore_13_4_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% varargin command line arguments to gui_moore_13_4 (see VARARGIN) % Choose default command line output for gui_moore_13_4set(handles.sx_edit,'String', 30);set(handles.sy_edit,'String', 0);set(handles.txy_edit,'String', 8);set(handles.rad_edit,'String', 1.0472); %pi/3handles.output = hObject;handles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes gui_moore_13_4 wait for user response (see UIRESUME) % uiwait(handles.figure1);% --- Outputs from this function are returned to the command line. function varargout = gui_moore_13_4_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout{1} = handles.output;function txy_edit_Callback(hObject, eventdata, handles)% hObject handle to txy_edit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of txy_edit as text% str2double(get(hObject,'String')) returns contents of txy_edit as a double% --- Executes during object creation, after setting all properties. function txy_edit_CreateFcn(hObject, eventdata, handles)% hObject handle to txy_edit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction sy_edit_Callback(hObject, eventdata, handles)% hObject handle to sy_edit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of sy_edit as text% str2double(get(hObject,'String')) returns contents of sy_edit as a double% --- Executes during object creation, after setting all properties. function sy_edit_CreateFcn(hObject, eventdata, handles)% hObject handle to sy_edit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction sx_edit_Callback(hObject, eventdata, handles)% hObject handle to sx_edit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of sx_edit as text% str2double(get(hObject,'String')) returns contents of sx_edit as a double% --- Executes during object creation, after setting all properties. function sx_edit_CreateFcn(hObject, eventdata, handles)% hObject handle to sx_edit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end% --- Executes on button press in moore_pushbutton.function moore_pushbutton_Callback(hObject, eventdata, handles)% hObject handle to moore_pushbutton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)。

哈工大材料力学大作业--matlab编程

哈工大材料力学大作业--matlab编程

H a r b i n I n s t i t u t e o f T e c h n o l o g y材料力学上机作业课程名称:材料力学设计题目:应力状态分析院系:机电学院班级:分析者:学号:指导教师:***设计时间:2013年6月18日哈尔滨工业大学材料力学上机课设计说明书一, 设计题目题目7 应力状态分析 输入:1. 平面应力状态输入:x y xy σστ(,,);某截面方位角α2. 空间应力状态输入:,x y z xy yz zx σσστττ(,,,,)输出: 1. 输出主应力123σσσ(,,)2. 最大切应力(13max 132σσττ-==)3.如为平面应力状态则需要输出方位角α斜截面上的应力ααστ、及主方向角*σα4. 画出应力圆示意图二, 程序计算设计过程1. 平面应力状态分析对于任意平面应力状态,有max min σσ=2x y σσ+±主应力为:1max 23min ,0,σσσσσ===并且由 2tan 2xyx yστασσ=-可求得主应力方向角13σσαα、。

对于任意一个方位角α,有:=cos 2sin 222sin 2cos 22x yx yxy x yxy αασσσσσατασστατα++++-=-+从而,输入任意角α,即可求得该截面的应力状态ααστ、并且ααστ、都是关于α的函数,上式即为应力圆的参数方程,参数为α。

将α从0到pi 取一系列的值,则可以求出一系列的ααστ、,在坐标系中找到对应点,连接即可作出应力圆。

2. 三向应力状态分析解特征方程 321230I I I σσσ-+-=即可求出主应力123σσσ、、 其中:123||||||||x y z xyx y zy z xz xy y yz z zx x x yx zx xyy zy xzyz z I I I σσσστστσττστστσστττστττσ=-+⎛⎫⎛⎫⎛⎫=++⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭⎛⎫⎪= ⎪ ⎪⎝⎭再由 13max 132σσττ-== 可求得最大切应力。

材料力学上机大作业(matlab编)

材料力学上机大作业(matlab编)

一、可实现课题在如图所示的悬臂梁中,杆件为圆杆。

杆长为L,直径为D,材料弹性模量为E。

输入集中力F大小,作用点a,弯矩M,作用点b,即可求得悬臂梁的挠度曲线图。

二、程序代码clear alldisp('请给定材料信息'); %输入材料信息L=input('圆杆长度L(/M)=');D=input('圆杆直径D(/M)=');E=input('弹性模量E(/GPa)=');I=double(D^4*3.14/32);disp('请给定受力情况'); %输入受力情况F=input('切向集中力大小F(/N)=');a=input('切向集中力作用位置(/M)=');M=input('弯矩大小M(/N*M)=');b=input('弯矩作用位置(/M)=');x1=0:0.01:a; %F引入的挠度vx1=(-F*x1.^2*3*a+F*x1.^3)*(1/(6*E*10^9*I));x2=a:0.01:L;vx2=(-F*a.^2*3*x2+F*a.^3)*(1/(6*E*10^9*I));v11=[vx1,vx2];x11=[x1,x2];x3=0:0.01:b; %M引入的挠度vx3=(-M*x3.^2)*(1/(2*E*10^9*I));x4=b:0.01:L;vx4=(-M*b*x4+M*0.5*b.^2)*(1/(E*10^9*I));x22=[x3,x4];v22=[vx3,vx4];v33=v22+v11; %叠加plot(x11,v33),xlabel('x /M'),ylabel('v(x) /M')title('挠曲线图')grid on;三、使用方法运行代码输入圆杆长度(单位:m)输入圆杆直径(单位:m)输入弹性模量(单位:GPa)输入集中力大小(单位:N)(向下为正,若无请输入0)输入集中力作用位置(单位:m)(若无请输入0)输入弯矩大小(单位:N*m)(逆时针为正,若无请输入0)输入弯矩作用位置(单位:m)(若无请输入0)输出挠曲线图四、运行实例【实例1】圆杆同时受集中力与弯矩作用,输入、输出见下图。

哈工大材料力学计算机计算大作业_范例

哈工大材料力学计算机计算大作业_范例

B
ql 3 48 EI z
500 23 1.5215mrad 3 0.034 0.054 3 9 0.04 0.06 48 200 10 12 12 500 2 4 1.1411mm 3 0.034 0.0543 9 0.04 0.06 128 200 10 12 12
max
1000 32 1 5.77 mm , x 3 1732.1mm 9 3 100000 3
电算解:
故:与理论解一致。
第 十四 页 共 二十一 页
材料力学大作业
(8)理论解:
增补条件: 代入约定条件算得: A M 3000 N m , a 1 .6 m , 电算解:
3
电算解:
故:与理论解一致。
第 十七 页 共 二十一 页
材料力学大作业
(11)理论解:
代入约定数据解之得: A B 11 .25mrad ; C
5 1000 34 10.55mm 384 100000
电算解:
故:与理论解一致。
第 十八 页 共 二十一 页
然后,我们需要输入抗弯刚度。题目没有给怎么办?不怕,我们有“抗弯刚度计算器”!点击对 应区段抗弯刚度边上的按钮即可开始计算!
第 三 页 共 二十一 页
材料力学大作业
在计算完毕之后,点击“置入并返回” ,则我们又来到了基本信息输入界面。由于这一根简单 梁是等截面、等抗弯刚度的,所以我们不用去管“区段二”和“区段三”的相关文本框(实际上在 你选定对应的区段之前,这些文本框都是无法激活的) 。我们需要点击“更新基本信息”按键,以 核查、写入数据。核查无误,我们点击“受力情况输入”按钮。

2016新编哈工大材料力学上机大作业四——绘制梁的剪力弯矩图

2016新编哈工大材料力学上机大作业四——绘制梁的剪力弯矩图

H a r b i n I n s t i t u t e o f T e c h n o l o g y材料力学上机作业课程名称:材料力学设计题目:绘制梁的剪力弯矩图院系:班级:分析者:学号:指导教师:设计时间:哈尔滨工业大学材料力学上机课设计说明书一,设计题目题目4 绘制梁的剪力弯矩图输入:1.梁的总长度l2.支撑条件及量的各区段长度输入(左、右固定端悬臂梁;简支梁;左、右、双外伸梁)3.各载荷大小、作用位置及方向(q i、a i、b i;p j、c j、m k、d k)输出:1.结构构型图(图示)2.剪力、弯矩(图示)3.输出剪力、弯矩的最大值及截面位置。

二,方向规定本程序规定集中作用力及均布载荷以向下为正,右固定端悬臂梁与左外伸梁集中力偶以顺时针方向为正,其他情况集中力偶以逆时针方向为正。

当取出梁的一段为研究对象时,梁左端面力以向下为正,力偶以顺时针方向为正,梁右端面力以向上为正,力偶以逆时针方向为正。

三,程序设计过程1,制作程序框架,显示提示内容,提示操作者需要输入的作用条件及各作用位置;2,编写程序使计算机读入操作者输入的作用条件;3,草稿拟写各种情况下为达到题目要求所需使用的计算公式设量的长度为l,集中力大小为p,作用位置为c,集中力大小为q,作用起始位置a,终止位置为b,集中力偶大小为m,作用位置d。

(1)左固定端悬臂梁:在任意位置x处,取x以右部分为研究对象a,终止位置为b,集中力作用位置为c,大小为P,集中力偶作用位置为d,大小为m。

①若c<x,a<b<x,d>x,则Fs y=0,M(x)=m;②若c>x,a<b<x,d<x,则Fs y=-P,M(x)=Px-Pc;③若c<x,a<x<b,d<x,则Fs y=-q(b-x),M(x)=-2q(b-x)²;④若c<x, x<a<b,d>x,则Fs y=-q(b-a),M(x)=-q(b-a)(2ba+-x);⑤若c>x,a<b<x,d>x,则Fs y=-P,M(x)= Px-Pc+m;(第①、②两种情况合成)⑥若c<x,a<x<b,d>x,则Fs y=-q(b-x),M(x)=m-2q(b-x)²;(第①、③两种情况合成)⑦若c<x,x<a<b,d>x,则Fs y=-q(b-a),M(x)=m-q(b-a)(2ba+-x);(第①、④两种情况合成)⑧若c>x,a<x<b,d<x,则Fs y=-P-q(b-x),M(x)=Px-Pc-2q(b-x)²;(第②、③两种情况合成)⑨若c>x,x<a<b,d<x,则Fs y=-P-q(b-a),M(x)=Px-Pc-q(b-a)*(2ba+-x);(第②、④两种情况合成)⑩若c>x,x<a<b,d>x,则Fs y=-P-q(b-a), M(x)=m+Px-Pc-q(b-a)*(2ba+-x);(第①、②、④两种情况合成)⑪c>x,a<x<b,d>x, 则Fs y=-P-q(b-x), M(x)m+Px-Pc-q(b-a)*(2ba+-x); (第①、②、③两种情况合成)将上述公式编入程序即可计算出在固定端悬臂梁情况下任意位置处的剪力和弯矩,采用散点法作出梁的剪力弯矩图。

哈工大材料力学上机编程报告

哈工大材料力学上机编程报告

材料力学上机大作业题目名称:二向应力状态分析通用程序作者班号作者学号:作者姓名:指导教师:完成时间:2013年运行环境:microsoft visual basic语言环境结果数据:主应力的大小和方向、主切应力的大小和方向、任意截面上的应力大小。

同时可以输出单元体和应力圆。

1.双击打开材料力学二向应力状态分析通用程序,弹出下示对话框2.按提示要求输入数据正应力和切应力,以及所要求应力状态的截面角度,单击确定,在计算结果栏显示出所求得的数据结果。

3.单击“输出单元体和应力圆”按钮,弹出新的对话框如下图5.单击“重新输入”返回上级窗体,可以按步骤重新输入数据进行下一组数据的计算附:源程序代码 form1语句:Private Sub Command1_Click()Dim j As DoubleDim k As DoubleDim i As DoubleDim q As Double '输入的应力状态Dim m As DoubleDim n As DoubleDim p As Double '输出的主应力Dim X As DoubleDim Y As DoubleDim z As Double '输出的切应力Dim a As DoubleDim b As DoubleDim c As Double '输出的任意应力状态j = Val(Text1.Text)k = Val(Text2.Text)i = Val(Text3.Text)q = Val(Text4.Text)/180*3.14159m = (j + k) / 2 + Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最大主应力n = (j + k) / 2 - Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最小主应力If j = k Thenp = 45Elsep = ((Atn((i * 2) / (j - k))) / 2) / 3.1415926 * 180 '角度End IfX = Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最大切应力Y = -Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最小切应力If i = 0 Thenz = 45Elsez = ((Atn(-(j - k) / (2 * i))) / 2) / 3.1415926 * 180 '主切平面方位角End Ifa = (j + k) / 2 + (j - k) * Cos(2 * q) / 2 + i * Sin(2 * q) '任意面应力b = -(j - k) * Sin(2 * q) / 2 + i * Cos(2 * q)Text7.Text = Format(m, "0.00")Text8.Text = Format(n, "0.00")Text9.Text = Format(p, "0.00")Text10.Text = Format(X, "0.00")Text11.Text = Format(Y, "0.00")Text12.Text = Format(z, "0.00")σ=xText5.Text = Format(a, "0.00")Text6.Text = Format(b, "0.00")End SubPrivate Sub Command2_Click()Form1.Visible = FalseForm2.Visible = TrueEnd Subform2语句:Private Sub Command2_Click()Form1.Visible = TrueForm2.Visible = FalseEnd SubPrivate Sub picture2_GotFocus()Dim j As DoubleDim k As DoubleDim i As DoubleDim q As Double '输入的应力状态Dim m As DoubleDim n As DoubleDim p As Double '输出的主应力Dim X As DoubleDim Y As DoubleDim z As Double '输出的切应力Dim a As DoubleDim b As Double '输出的任意应力状态Dim c As Doublej = Val(Form1.Text1.Text)k = Val(Form1.Text2.Text)i = Val(Form1.Text3.Text)q = Val(Form1.Text4.Text) /180*3.14159m = (j + k) / 2 + Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最大主应力n = (j + k) / 2 - Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最小主应力If j = k Thenp = 45Elsep = ((Atn((i * 2) / (j - k))) / 2) / 3.1415926 * 180 '角度End Ifc = (j + k) / 2 + (j - k) / 2 * Cos(2 * p) + c * Sin(2 * p)If c <> m Thenp = p + 90End IfX = Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最大切应力Y = -Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最小切应力If i = 0 Thenz = 45Elsez = ((Atn(-(j - k) / (2 * i))) / 2) / 3.1415926 * 180 '主切平面方位角End Ifa = (j + k) / 2 + (j - k) * Cos(2 * q) / 2 + i * Sin(2 * q)b = -(j - k) * Sin(2 * q) / 2 + i * Cos(2 * q)Picture2.Cls '清除图中线条Picture2.DrawWidth = 3Picture2.Scale (-2, 2)-(2, -2)Picture2.Line (-1, 1)-(-1, -1)Picture2.Line (-1, -1)-(1, -1)Picture2.Line (1, -1)-(1, 1)Picture2.Line (1, 1)-(-1, 1) '输出正方形Picture2.DrawWidth = 1If p <> 0 ThenIf Abs(Tan(p)) < 1 ThenPicture2.Line (0, 0)-(Tan(p), -1), vbGreenPicture2.Line (0, 0)-(-Tan(p), 1), vbGreenPicture2.Line (0, 0)-(1.6 * Cos(p), 1.6 * Sin(p)), vbGreenElseIf Abs(Tan(p)) > 1 ThenPicture2.Line (0, 0)-(1, -1 / Tan(p)), vbGreenPicture2.Line (0, 0)-(-1, 1 / Tan(p)), vbGreenPicture2.Line (0, 0)-(1.6 * Cos(p), 1.6 * Sin(p)), vbGreen '按角度不同作出主应力的平面End IfEnd IfEnd IfPicture2.DrawWidth = 3If i > 0 ThenPicture2.Line (1.2, -0.8)-(1.2, 0.8), vbRedPicture2.Line (1.2, 0.8)-(1.3, 0.7), vbRedPicture2.Line (1.2, 0.8)-(1.1, 0.7), vbRed '切应力Picture2.Line (-1.2, -0.8)-(-1.2, 0.8), vbRedPicture2.Line (-1.2, -0.8)-(-1.3, -0.7), vbRedPicture2.Line (-1.2, -0.8)-(-1.1, -0.7), vbRed '切应力Picture2.Line (0.8, 1.2)-(-0.8, 1.2), vbRedPicture2.Line (0.8, 1.2)-(0.7, 1.3), vbRedPicture2.Line (0.8, 1.2)-(0.7, 1.1), vbRed '切应力Picture2.Line (0.8, -1.2)-(-0.8, -1.2), vbRedPicture2.Line (-0.8, -1.2)-(-0.7, -1.3), vbRedPicture2.Line (-0.8, -1.2)-(-0.7, -1.1), vbRed '切应力ElseIf i < 0 ThenPicture2.Line (1.2, -0.8)-(1.2, 0.8), vbRedPicture2.Line (1.2, -0.8)-(1.3, -0.7), vbRedPicture2.Line (1.2, -0.8)-(1.1, -0.7), vbRed '切应力Picture2.Line (-1.2, -0.8)-(-1.2, 0.8), vbRedPicture2.Line (-1.2, 0.8)-(-1.3, 0.7), vbRedPicture2.Line (-1.2, 0.8)-(-1.1, 0.7), vbRed '切应力Picture2.Line (0.8, 1.2)-(-0.8, 1.2), vbRedPicture2.Line (-0.8, 1.2)-(-0.7, 1.3), vbRedPicture2.Line (-0.8, 1.2)-(-0.7, 1.1), vbRed '切应力Picture2.Line (0.8, -1.2)-(-0.8, -1.2), vbRedPicture2.Line (0.8, -1.2)-(0.7, -1.3), vbRedPicture2.Line (0.8, -1.2)-(0.7, -1.1), vbRed '切应力End IfEnd IfIf j > 0 ThenPicture2.Line (1, 0)-(1.8, 0), vbRedPicture2.Line (1.8, 0)-(1.7, 0.1), vbRedPicture2.Line (1.8, 0)-(1.7, -0.1), vbRed '主应力Picture2.Line (-1, 0)-(-1.8, 0), vbRedPicture2.Line (-1.8, 0)-(-1.7, 0.1), vbRedPicture2.Line (-1.8, 0)-(-1.7, -0.1), vbRed '主应力ElseIf j < 0 ThenPicture2.Line (1, 0)-(1.8, 0), vbRedPicture2.Line (1, 0)-(1.1, 0.1), vbRedPicture2.Line (1, 0)-(1.1, -0.1), vbRed '主应力Picture2.Line (-1, 0)-(-1.8, 0), vbRedPicture2.Line (-1, 0)-(-1.1, 0.1), vbRedPicture2.Line (-1, 0)-(-1.1, -0.1), vbRed '主应力End IfEnd IfIf k > 0 ThenPicture2.Line (0, 1)-(0, 1.8), vbRedPicture2.Line (0, 1.8)-(0.1, 1.7), vbRedPicture2.Line (0, 1.8)-(-0.1, 1.7), vbRedPicture2.Line (0, -1)-(0, -1.8), vbRedPicture2.Line (0, -1.8)-(0.1, -1.7), vbRedPicture2.Line (0, -1.8)-(-0.1, -1.7), vbRed ElseIf k < 0 ThenPicture2.Line (0, 1)-(0, 1.8), vbRedPicture2.Line (0, 1)-(0.1, 1.1), vbRedPicture2.Line (0, 1)-(-0.1, 1.1), vbRedPicture2.Line (0, -1)-(0, -1.8), vbRedPicture2.Line (0, -1)-(0.1, -1.1), vbRedPicture2.Line (0, -1)-(-0.1, -1.1), vbRedEnd IfEnd IfEnd SubPrivate Sub Picture3_GotFocus()Dim j As DoubleDim k As DoubleDim i As DoubleDim q As Double '输入的应力状态Dim m As DoubleDim n As DoubleDim p As Double '输出的主应力Dim X As DoubleDim Y As DoubleDim z As Double '输出的切应力Dim a As DoubleDim b As DoubleDim c As Double '输出的任意应力状态j = Val(Form1.Text1.Text)k = Val(Form1.Text2.Text)i = Val(Form1.Text3.Text)q = Val(Form1.Text4.Text) /180*3.14159m = (j + k) / 2 + Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最大主应力n = (j + k) / 2 - Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最小主应力If j = k Thenp = 45Elsep = ((Atn((i * 2) / (j - k))) / 2) / 3.1415926 * 180 '角度End IfX = Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最大切应力Y = -Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最小切应力If i = 0 Thenz = 45Elsez = ((Atn(-(j - k) / (2 * i))) / 2) / 3.1415926 * 180 '主切平面方位角End Ifa = (j + k) / 2 + (j - k) * Cos(2 * q) / 2 + i * Sin(2 * q)b = -(j - k) * Sin(2 * q) / 2 + i * Cos(2 * q)Picture3.Cls '清除图中线条s = (j + k) / 2r = ((j + k) / 2 - n)Picture3.DrawWidth = 3 '确定线宽Picture3.ScaleMode = 3If s <> 0 ThenPicture3.Scale (-(1.6 * r + Abs(s)), (1.6 * r + Abs(s)))-((1.6 * r + Abs(s)), -(1.6 * r + Abs(s))) '定义坐标Picture3.Line ((1.5 * r + Abs(s)), 0)-(-(1.5 * r + Abs(s)), 0)Picture3.Line (0, -(1.5 * r + Abs(s)))-(0, (1.5 * r + Abs(s)))Picture3.Line ((1.5 * r + Abs(s)), 0)-((1.4 * r + Abs(s)), 0.1 * r)Picture3.Line ((1.5 * r + Abs(s)), 0)-((1.4 * r + Abs(s)), -0.1 * r)ElsePicture3.Scale (-2, 2)-(2, -2) '定义坐标Picture3.Line (-1.9, 0)-(1.9, 0)Picture3.Line (0, -1.9)-(0, 1.9)Picture3.Line (1.9, 0)-(1.7, 0.1)Picture3.Line (1.9, 0)-(1.7, -0.1)End IfPicture3.Circle (s, 0), Abs(r), vbRed '做圆,圆心,半径,红线End SubPrivate Sub Command1_Click()Dim j As DoubleDim k As DoubleDim i As DoubleDim q As Double '输入的应力状态Dim m As DoubleDim n As DoubleDim p As Double '输出的主应力Dim X As DoubleDim Y As DoubleDim z As Double '输出的切应力Dim a As DoubleDim b As DoubleDim c As Double '输出的任意应力状态j = Val(Form1.Text1.Text)k = Val(Form1.Text2.Text)i = Val(Form1.Text3.Text)q = Val(Form1.Text4.Text) /180*3.14159m = (j + k) / 2 + Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最大主应力n = (j + k) / 2 - Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最小主应力If j = k Thenp = 45Elsep = ((Atn((i * 2) / (j - k))) / 2) / 3.1415926 * 180 '角度End Ifc = (j + k) / 2 + (j - k) / 2 * Cos(2 * p) + c * Sin(2 * p)If c <> m Thenp = p + 90End If'判定X = Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最大切应力Y = -Sqr(((j - k) / 2) ^ 2 + i ^ 2) '最小切应力If i = 0 Thenz = 45Elsez = ((Atn(-(j - k) / (2 * i))) / 2) / 3.1415926 * 180 '主切平面方位角End Ifa = (j + k) / 2 + (j - k) * Cos(2 * q) / 2 + i * Sin(2 * q)b = -(j - k) * Sin(2 * q) / 2 + i * Cos(2 * q)Picture2.Cls '清除图中线条Picture2.DrawWidth = 3Picture2.Scale (-2, 2)-(2, -2)Picture2.Line (-1, 1)-(-1, -1)Picture2.Line (-1, -1)-(1, -1)Picture2.Line (1, -1)-(1, 1)Picture2.Line (1, 1)-(-1, 1) '正方形Picture2.DrawWidth = 1If p <> 0 ThenIf Abs(Tan(p)) < 1 ThenPicture2.Line (0, 0)-(Tan(p), -1), vbGreenPicture2.Line (0, 0)-(-Tan(p), 1), vbGreenPicture2.Line (0, 0)-(1.6 * Cos(p), 1.6 * Sin(p)), vbGreenElseIf Abs(Tan(p)) > 1 ThenPicture2.Line (0, 0)-(1, -1 / Tan(p)), vbGreenPicture2.Line (0, 0)-(-1, 1 / Tan(p)), vbGreenPicture2.Line (0, 0)-(1.6 * Cos(p), 1.6 * Sin(p)), vbGreen '按角度不同作出主应力的平面End IfEnd IfEnd IfPicture2.DrawWidth = 3If i > 0 ThenPicture2.Line (1.2, 0.8)-(1.3, 0.7), vbRedPicture2.Line (1.2, 0.8)-(1.1, 0.7), vbRed '切应力Picture2.Line (-1.2, -0.8)-(-1.2, 0.8), vbRedPicture2.Line (-1.2, -0.8)-(-1.3, -0.7), vbRedPicture2.Line (-1.2, -0.8)-(-1.1, -0.7), vbRed '切应力Picture2.Line (0.8, 1.2)-(-0.8, 1.2), vbRedPicture2.Line (0.8, 1.2)-(0.7, 1.3), vbRedPicture2.Line (0.8, 1.2)-(0.7, 1.1), vbRed '切应力Picture2.Line (0.8, -1.2)-(-0.8, -1.2), vbRedPicture2.Line (-0.8, -1.2)-(-0.7, -1.3), vbRedPicture2.Line (-0.8, -1.2)-(-0.7, -1.1), vbRed '切应力ElseIf i < 0 ThenPicture2.Line (1.2, -0.8)-(1.2, 0.8), vbRedPicture2.Line (1.2, -0.8)-(1.3, -0.7), vbRedPicture2.Line (1.2, -0.8)-(1.1, -0.7), vbRed '切应力Picture2.Line (-1.2, -0.8)-(-1.2, 0.8), vbRedPicture2.Line (-1.2, 0.8)-(-1.3, 0.7), vbRedPicture2.Line (-1.2, 0.8)-(-1.1, 0.7), vbRed '切应力Picture2.Line (0.8, 1.2)-(-0.8, 1.2), vbRedPicture2.Line (-0.8, 1.2)-(-0.7, 1.3), vbRedPicture2.Line (-0.8, 1.2)-(-0.7, 1.1), vbRed '切应力Picture2.Line (0.8, -1.2)-(-0.8, -1.2), vbRedPicture2.Line (0.8, -1.2)-(0.7, -1.3), vbRedPicture2.Line (0.8, -1.2)-(0.7, -1.1), vbRed '切应力End IfEnd IfIf j > 0 ThenPicture2.Line (1, 0)-(1.8, 0), vbRedPicture2.Line (1.8, 0)-(1.7, 0.1), vbRedPicture2.Line (1.8, 0)-(1.7, -0.1), vbRed '主应力Picture2.Line (-1, 0)-(-1.8, 0), vbRedPicture2.Line (-1.8, 0)-(-1.7, -0.1), vbRed '主应力ElseIf j < 0 ThenPicture2.Line (1, 0)-(1.8, 0), vbRedPicture2.Line (1, 0)-(1.1, 0.1), vbRedPicture2.Line (1, 0)-(1.1, -0.1), vbRed '主应力Picture2.Line (-1, 0)-(-1.8, 0), vbRedPicture2.Line (-1, 0)-(-1.1, 0.1), vbRedPicture2.Line (-1, 0)-(-1.1, -0.1), vbRed '主应力End IfEnd IfIf k > 0 ThenPicture2.Line (0, 1)-(0, 1.8), vbRedPicture2.Line (0, 1.8)-(0.1, 1.7), vbRedPicture2.Line (0, 1.8)-(-0.1, 1.7), vbRedPicture2.Line (0, -1)-(0, -1.8), vbRedPicture2.Line (0, -1.8)-(0.1, -1.7), vbRedPicture2.Line (0, -1.8)-(-0.1, -1.7), vbRedElseIf k < 0 ThenPicture2.Line (0, 1)-(0, 1.8), vbRedPicture2.Line (0, 1)-(0.1, 1.1), vbRedPicture2.Line (0, 1)-(-0.1, 1.1), vbRedPicture2.Line (0, -1)-(0, -1.8), vbRedPicture2.Line (0, -1)-(0.1, -1.1), vbRedPicture2.Line (0, -1)-(-0.1, -1.1), vbRedEnd IfEnd IfPicture3.Cls '清除图中线条s = (j + k) / 2r = ((j + k) / 2 - n)Picture3.DrawWidth = 3 '确定线宽Picture3.ScaleMode = 3If s <> 0 ThenPicture3.Scale (-(1.6 * r + Abs(s)), (1.6 * r + Abs(s)))-((1.6 * r + Abs(s)), -(1.6 * r + Abs(s))) '定义坐标Picture3.Line ((1.5 * r + Abs(s)), 0)-(-(1.5 * r + Abs(s)), 0)Picture3.Line (0, -(1.5 * r + Abs(s)))-(0, (1.5 * r + Abs(s)))Picture3.Line ((1.5 * r + Abs(s)), 0)-((1.4 * r + Abs(s)), 0.1 * r)Picture3.Line ((1.5 * r + Abs(s)), 0)-((1.4 * r + Abs(s)), -0.1 * r)ElsePicture3.Scale (-2, 2)-(2, -2) '定义坐标Picture3.Line (-1.9, 0)-(1.9, 0)Picture3.Line (0, -1.9)-(0, 1.9)Picture3.Line (1.9, 0)-(1.7, 0.1)Picture3.Line (1.9, 0)-(1.7, -0.1)End IfPicture3.Circle (s, 0), Abs(r), vbRed '做圆,圆心,半径,红线End Sub。

哈工大材料力学上机大作业

哈工大材料力学上机大作业

材料力学上机实验作业组合截面几何性质计算指导教师:王秋生班级:学号:姓名:题目3:组合截面几何性质计算输入:1.各几何图形形状(圆形、矩形)及个数2.截面参数输入(形状、尺寸及位置)即圆截面-d,圆心位置;圆环截面-D,d,圆心位置;矩形截面h,b,形心位置输出:1.截面构形图2.形心位置坐标(图示)3.在形心坐标系下画出主轴,计算主惯性矩程序说明:本程序用于计算材料截面几何量,是使用VB编程语言汇编而成。

进入程序后,可选择三种模式:1.常用模式(此模式用于计算常用正多边形的几何量)2.直线模式,此模式下可利用线段绘制多边形(包括镂空多边形及多个不相交的多边形)3.曲线模式,此模式下可用鼠标任意绘制平面图形(同样包括镂空图形及多个不相交图形)一.绘图模式1.常用模式可鼠标绘制正多边形,或利用键盘精确输入正多边形。

2.直线模式可用鼠标绘制任意多边形,或利用键盘精确输入点坐标。

输入完成倒数第二个点后,单击淡绿色圆圈(起点),在弹出的对话框选择是,完成第一个图形。

可继续绘制下一图形或开始计算。

3.曲线模式可用鼠标绘制任意曲线以构成图形。

最后一点,单击淡绿色圆圈(起点),在弹出的对话框选择是,完成第一个图形。

可继续绘制下一图形或开始计算。

二.计算当绘制完某一图形后,点击“开始计算”按钮,即可计算出面积、静矩、形心坐标、惯性矩、惯性半径、惯性积、主惯性轴角度、主惯性矩、形心主惯性轴角度、形心主惯性矩等16个几何量。

欲重新开始,可点击“重置”按钮。

点击任意按钮后屏幕下方都会有相应的提示。

三.外部图形首先将所需图形大小修改为500×470,格式为jpg,命名为“截面”,并将其保存在程序根目录下,可载入外部图形以精确计算其各个量。

源程序:注:以下为form1的代码Private X As Single, Y As Single, Xp As Single, Yp As SinglePrivate N As Integer, Num As Integer, M As Integer, missN(10000) As Integer, j As Integer, k As IntegerPrivate stepX As Single, stepY As Single, Step As SinglePrivate P(1 To 30000, 1 To 2) As Single, Q1 As Single, Q2 As Single Private minX As Single, maxX As Single, minY As Single, maxY As Single Private runX As Single, runY As SinglePrivate X1 As Single, Y1 As Single, X2 As Single, Y2 As SinglePrivate Lx As Single, Ly As SinglePrivate Lpoint(200) As Single, Lpointmemory As SinglePrivate Nn As Integer, Rr As SinglePrivate Xx As Single, Yy As Single, T As Integer, Ang As SinglePrivate Sx As Single, Sy As Single, Ax As Single, Ay As Single Private ShapeCenterX As Single, ShapeCenterY As SinglePrivate Ix As Single, Iy As Single, IxC As Single, IyC As Single, IxyC As SinglePrivate Rx As Single, Ry As SinglePrivate Ixy As Single, Iyx As Single, LIxy As Single, LIyx As Single Private Angle As SinglePrivate Imin As Single, Imax As SinglePrivate AngleC As SinglePrivate Icmin As Single, Icmax As SinglePrivate Can As IntegerPrivate Msg As IntegerPrivate MoveN As Long, MoveM As Long, Decider As Integer, Shape As IntegerPrivate A As Single, B As Single, C As Single, E As Single, F As Single Private Usual As IntegerPrivate Sub PaintNnRr()M = 0: N = 1For i = 0 To Nn - 1Text1.Text = Xx + Rr * Cos(Ang * 3.1415926535898 / 180 + 2 * 3.1415926535898 / Nn * i)Text2.Text = Yy + Rr * Sin(Ang * 3.1415926535898 / 180 + 2 * 3.1415926535898 / Nn * i)Command1_ClickNextEnd SubPrivate Sub Shorten(A As Single, B As Single, C As Single)i = 0Do While A >= 10A = A / 10i = i + 1LoopB = Format(A, "0.00")C = iEnd SubPrivate Sub Calculate()ShapeCenterY = CLng(Sx / Ax)ShapeCenterX = CLng(Sy / Ay)If Ix = Iy And Ixy > 0 ThenAngle = -3.1415926535898 / 4ElseIf Ix = Iy And Ixy < 0 ThenAngle = 3.1415926535898 / 4ElseIf Ix = Iy And Ixy = 0 ThenAngle = 0ElseAngle = 0.5 * Atn(-2 * Ixy / (Ix - Iy))End IfRx = Sqr(Ix / Ax)Ry = Sqr(Iy / Ay)Imin = (Ix + Iy) / 2 - Sqr((Ix - Iy) ^ 2 / 4 + Ixy ^ 2)Imax = (Ix + Iy) / 2 + Sqr((Ix - Iy) ^ 2 / 4 + Ixy ^ 2)IxC = Ix - ShapeCenterY ^ 2 * AxIyC = Iy - ShapeCenterX ^ 2 * AyIxyC = Ixy - ShapeCenterX * ShapeCenterY * AxIcmin = (IxC + IyC) / 2 - Sqr((IxC - IyC) ^ 2 / 4 + IxyC ^ 2)Icmax = (IxC + IyC) / 2 + Sqr((IxC - IyC) ^ 2 / 4 + IxyC ^ 2)If IxC = IyC And IxyC > 0 ThenAngleC = -3.1415926535898 / 4ElseIf IxC = IyC And IxyC < 0 ThenAngleC = 3.1415926535898 / 4ElseIf IxC = IyC And IxyC = 0 Thenanflec = 0ElseAngleC = 0.5 * Atn(-2 * IxyC / (IxC - IyC))End IfEnd SubPrivate Sub Output()Picture1.Line (Sy / Ay + 1000, 6000 - Sx / Ax)-(Sy / Ay + 1000, 6000), RGB(255, 121, 121)Picture1.Line (Sy / Ay + 1000, 6000 - Sx / Ax)-(1000, 6000 - Sx / Ax), RGB(255, 121, 121)Label6.Left = Sy / Ay + 100 + 1000: Label6.Top = 5775 + 20Label6.Caption = "X =" & ShapeCenterXLabel6.Visible = TrueLabel7.Left = 1080: Label7.Top = 6000 - (Sx / Ax - 20)Label7.Caption = "Y =" & ShapeCenterYLabel7.Visible = TrueText3.Text = ShapeCenterX: Text4.Text = ShapeCenterYCall Shorten(Ax, E, F)Text5.Text = E & "×" & 10 & "^" & FCall Shorten(Sx, E, F)Text6.Text = E & "×" & 10 & "^" & FCall Shorten(Sy, E, F)Text7.Text = E & "×" & 10 & "^" & FCall Shorten(Ix, E, F)Text8.Text = E & "×" & 10 & "^" & FCall Shorten(Iy, E, F)Text9.Text = E & "×" & 10 & "^" & FText10.Text = CLng(Rx * 10) / 10: Text11.Text = CLng(Ry * 10) / 10Call Shorten(Ixy, E, F)Text12.Text = E & "×" & 10 & "^" & FText13.Text = Format(Angle * 180 / 3.1415926535898, "0.0")Call Shorten(Imin, E, F)Text14.Text = E & "×" & 10 & "^" & FCall Shorten(Imax, E, F)Text15.Text = E & "×" & 10 & "^" & FText16.Text = Format(AngleC * 180 / 3.1415926535898, "0.0")Call Shorten(Icmin, E, F)Text17.Text = E & "×" & 10 & "^" & FText18.Text = IcmaxCall Shorten(Icmax, E, F)Text18.Text = E & "×" & 10 & "^" & FEnd SubPrivate Sub Sort()For i = 1 To j - 2For k = i + 1 To j - 1If Lpoint(k) < Lpoint(i) ThenLpointmemory = Lpoint(i)Lpoint(i) = Lpoint(k)Lpoint(k) = LpointmemoryEnd IfNextNextEnd SubPrivate Sub CloseLine()Picture1.Circle (Q1 + 1000, 6000 - Q2), 90, RGB(255, 255, 255)Label1.Caption = "输入第" & N + 1 & "点坐标:"P(N, 1) = Q1: P(N, 2) = Q2Picture1.Line (P(N - 1, 1) + 1000, 6000 - P(N - 1, 2))-(Q1 + 1000, 6000 - Q2), RGB(0, 0, 255)missN(Num) = NM = 0N = N + 1Num = Num + 1Decider = 0Label21.Caption = "点击计算“截面的几何量”按钮开始计算,或单击下一点以绘制下一图形的起点"End SubPrivate Sub GetstepXstepY()minY = P(1, 2)For i = 2 To N - 1If P(i, 2) < minY ThenminY = P(i, 2)ElseEnd IfNextmaxY = P(1, 2)For i = 2 To N - 1If P(i, 2) > maxY ThenmaxY = P(i, 2)ElseEnd IfNextstepY = (maxY - minY) / StepminX = P(1, 1)For i = 2 To N - 1If P(i, 1) < minX ThenminX = P(i, 1)ElseEnd IfNextmaxX = P(1, 1)For i = 2 To N - 1If P(i, 1) > maxX ThenmaxX = P(i, 1)ElseEnd IfNextstepX = (maxX - minX) / StepEnd SubPrivate Sub GetLxLIxy()j = 1: Lx = 0: LIxy = 0For i = 1 To N - 1Can = 0For k = 1 To Num - 1If i = missN(k) ThenCan = 1ElseEnd IfNextIf Can = 0 ThenIf (P(i, 2) - runY) * (P(i + 1, 2) - runY) = 0 ThenrunY = runY + stepY / 1000ElseEnd IfIf (P(i, 2) - runY) * (P(i + 1, 2) - runY) < 0 ThenX1 = P(i, 1): Y1 = P(i, 2): X2 = P(i + 1, 1): Y2 = P(i + 1, 2)Lpoint(j) = X1 + (X2 - X1) * (runY - Y1) / (Y2 - Y1)j = j + 1ElseEnd IfElseEnd IfNextCan = 0Call SortFor i = 1 To j - 1 Step 2Lx = Lx + Lpoint(i + 1) - Lpoint(i)LIxy = LIxy + 0.5 * (Lpoint(i + 1) ^ 2 - Lpoint(i) ^ 2)NextEnd SubPrivate Sub PaintX()For i = 1 To j - 2 Step 2Picture1.Line (Lpoint(i) + 1000, 6000 - runY)-(Lpoint(i + 1) + 1000, 6000 - (runY + stepY)), RGB(255, 113, 116), BFNextEnd SubPrivate Sub GetAxSxIx()Ax = Ax + Lx * stepYSx = Sx + (runY + 0.5 * stepY) * (Lx * stepY)Ix = Ix + (runY + 0.5 * stepY) ^ 2 * (Lx * stepY)Ixy = Ixy + (runY + 0.5 * stepY) * (LIxy * stepY)End SubPrivate Sub GetLyLIyx()j = 1: Ly = 0: LIyx = 0For i = 1 To N - 1Can = 0For k = 1 To Num - 1If i = missN(k) ThenCan = 1ElseEnd IfNextIf Can = 0 ThenIf (P(i, 1) - runX) * (P(i + 1, 1) - runX) = 0 ThenrunX = runX + stepX / 1000ElseEnd IfIf (P(i, 1) - runX) * (P(i + 1, 1) - runX) < 0 ThenX1 = P(i, 1): Y1 = P(i, 2): X2 = P(i + 1, 1): Y2 = P(i + 1, 2)Lpoint(j) = Y1 + (Y2 - Y1) * (runX - X1) / (X2 - X1)j = j + 1ElseEnd IfElseEnd IfNextCall SortFor i = 1 To j - 1 Step 2Ly = Ly + Lpoint(i + 1) - Lpoint(i)LIyx = LIyx + 0.5 * (Lpoint(i + 1) ^ 2 - Lpoint(i) ^ 2)NextEnd SubPrivate Sub PaintY()For i = 1 To j - 2 Step 2Picture1.Line (runX + 1000, 6000 - Lpoint(i))-(runX + stepX + 1000, 6000 - Lpoint(i + 1)), RGB(118, 89, 255), BFNextEnd SubPrivate Sub GetAySyIy()Ay = Ay + Ly * stepXSy = Sy + (runX + 0.5 * stepX) * (Ly * stepX)Iy = Iy + (runX + 0.5 * stepX) ^ 2 * (Ly * stepX)Iyx = Iyx + (runX + 0.5 * stepX) * (LIyx * stepX)End SubPrivate Sub Command1_Click() '画线Label1.Caption = "输入第" & N + 1 & "点坐标:"Text1.Text = CLng(Text1.Text * 10) / 10: Text2.Text = CLng(Text2.Text * 10) / 10Xp = Text1.Text: Yp = Text2.TextX = Xp: Y = YpP(N, 1) = X: P(N, 2) = YIf M = 0 ThenQ1 = X: Q2 = YPicture1.PSet (Q1 + 1000, 6000 - Q2), RGB(0, 0, 255)Picture1.Circle (Q1 + 1000, 6000 - Q2), 90, RGB(180, 255, 180)If Shape = 0 ThenDecider = 0ElseDecider = 1End IfElseIf M <> 0 ThenPicture1.Line (P(N - 1, 1) + 1000, 6000 - P(N - 1, 2))-(P(N, 1) + 1000, 6000 - P(N, 2)), RGB(0, 0, 255)ElseEnd IfM = 1N = N + 1Command2.Enabled = FalseCommand4.Enabled = FalseCommand5.Enabled = FalseCommand9.Enabled = FalseLabel21.Caption = "点击以输入下一个点的坐标 .或点击当前图形起点(淡绿色圆圈内)以封闭图形"End SubPrivate Sub Command10_Click()Nn = Text19.TextRr = Text20.TextXx = Text22.TextYy = Text23.TextAng = Text21.TextCall PaintNnRrCall CloseLineCommand2_ClickCommand10.Enabled = FalseEnd SubPrivate Sub Command2_Click()N = N - 1Call GetstepXstepYrunX = minX: runY = minYAx = 0: Sx = 0: Ix = 0Do While runY < maxYCall GetLxLIxy 'Lx为与x轴平行的LCall PaintXCall GetAxSxIxrunY = runY + stepYLoopAy = 0: Sy = 0: Iy = 0Do While runX < maxXCall GetLyLIyxCall PaintYCall GetAySyIyrunX = runX + stepXLoopCall CalculateCall OutputCommand1.Enabled = FalseCommand2.Enabled = FalseN = N + 1Label21.Caption = "单击“重置程序”按钮以初始化程序"Form1.Width = 9750End SubPrivate Sub Command3_Click()Form_ActivateEnd SubPrivate Sub Command4_Click()Decider = 0Shape = 0Label21.Caption = "进入直线模式"If T = 1 ThenFrame6.Visible = FalseT = 0ElseEnd IfCommand1.Enabled = TrueCommand4.Enabled = FalseCommand5.Enabled = FalseCommand9.Enabled = FalseEnd SubPrivate Sub Command5_Click()Decider = 0Shape = 1Label21.Caption = "进入曲线模式"If T = 1 ThenFrame6.Visible = FalseT = 0ElseEnd IfCommand4.Enabled = FalseCommand5.Enabled = FalseCommand9.Enabled = FalseEnd SubPrivate Sub Command6_Click()Unload Form1Unload Form2End SubPrivate Sub Command7_Click()Shell "C:\windows\system32\notepad.exe" + " " + App.Path + "\帮助.txt", 3End SubPrivate Sub Command8_Click()Command3_ClickPicture1.Picture = LoadPicture(App.Path + "\截面.jpg")Label21.Caption = "请将截面图形大小修改为500×470,再将名字改为“截面”,并保存在程序根目录下"End SubPrivate Sub Command9_Click()If T = 1 ThenCommand4.Enabled = TrueCommand5.Enabled = TrueElseCommand4.Enabled = FalseCommand5.Enabled = FalseEnd IfIf T = 1 ThenFrame6.Visible = FalseT = 0Usual = 0ElseFrame6.Visible = TrueT = 1Usual = 3End IfIf T = 1 ThenLabel21.Caption = "选择一种正多边形"ElseEnd IfEnd SubPrivate Sub Form_Activate()Form1.Width = 7680Picture1.ClsPicture1.Picture = LoadPicture(App.Path + "\1.jpg")Command1.Enabled = TrueCommand4.Enabled = TrueCommand5.Enabled = TrueCommand9.Enabled = TrueCommand10.Enabled = TrueLabel21.Caption = "选择一种模式(默认为直线模式)并鼠标点击输入或键入第一点坐标"Command2.Enabled = FalseN = 1: Num = 1: M = 0: Can = 0: MoveN = 0: MoveM = 0Step = 10000: Decider = 0: Shape = 0: Usual = 0Label1.Caption = "输入第1点坐标:": Label6.Visible = False: Label7.Visible = FalseText3.Text = 0: Text4.Text = 0Text20.Text = 1500Text21.Text = 0Text22.Text = 3000Text23.Text = 3000Frame6.Visible = FalseT = 0Command1.Enabled = False End SubPrivate Sub Option1_Click() Form_ActivateCommand4.Enabled = False Command5.Enabled = False Command9_ClickText19.Text = 100Usual = 1Step = 10000End SubPrivate Sub Option2_Click() Form_ActivateCommand4.Enabled = False Command5.Enabled = False Command9_ClickText19.Text = 3Usual = 1Step = 10000End SubPrivate Sub Option3_Click() Form_ActivateCommand4.Enabled = False Command5.Enabled = False Command9_ClickText19.Text = 4Usual = 1Step = 10000End SubPrivate Sub Option4_Click() Form_ActivateCommand4.Enabled = False Command5.Enabled = False Command9_ClickText19.Text = 5Usual = 1Step = 10000End SubPrivate Sub Option5_Click()Form_ActivateCommand4.Enabled = FalseCommand5.Enabled = FalseCommand9_ClickText19.Text = 6Usual = 1Step = 10000End SubPrivate Sub Option6_Click()Form_ActivateCommand4.Enabled = FalseCommand5.Enabled = FalseCommand9_ClickText19.Text = 7Text19.SetFocusText19.SelLength = Len(Text1.Text)Label21.Caption = "输入N边形边数"Usual = 1Step = 10000End SubPrivate Sub Picture1_Click()If Usual = 0 ThenIf Sqr((Text1.Text - Q1) ^ 2 + (Text2.Text - Q2) ^ 2) <= 90 And N > 3 ThenLabel21.Caption = "单击“是”将封闭当前图形,单击“否”则可继续绘制下一点"Msg = MsgBox("是否封口?", 4, "")If Msg = 6 ThenCall CloseLineCommand2.Enabled = TrueElseCommand1_ClickEnd IfElseCommand1_ClickEnd IfElseIf Usual = 1 ThenText22.Text = Text1.Text: Text23.Text = Text2.TextPSet (Text1.Text + 1000, 6000 - Text2.Text), RGB(0, 0, 255)Usual = 2ElseIf Usual = 2 ThenUsual = 3ElseEnd IfEnd SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)Text1.Text = CLng((X - 1000) * 10) / 10: Text2.Text = CLng((6000 - Y) * 10) / 10If Usual = 0 ThenIf Decider = 1 ThenMoveN = MoveN + 1MoveM = MoveN Mod 2If MoveM = 0 ThenCommand1_ClickElseEnd IfElseEnd IfElseIf Usual = 2 ThenPicture1.ClsText20.Text = Sqr((Text1.Text - Xx) ^ 2 + (Text2.Text - Yy) ^ 2) Text20.Text = CLng(Text20.Text * 10) / 10Nn = Text19.TextRr = Text20.TextXx = Text22.TextYy = Text23.TextAng = Text21.TextCall PaintNnRrCall CloseLineNum = Num - 1ElseIf Usual = 3 ThenElseEnd IfEnd SubPrivate Sub Text19_LostFocus()Text19.Text = CLng(Text19.Text)End SubPrivate Sub Text21_LostFocus()Text21.Text = CLng(Text21.Text * 10) / 10End Sub注:以下为form2的代码Private N As IntegerPrivate Sub Form_Activate()N = 0End SubPrivate Sub Timer1_Timer()N = N + 30If N < 165 ThenLabel1.ForeColor = RGB(165 - N, 165, 165 - N) Label2.ForeColor = RGB(165 - N, 165, 165 - N) Label3.ForeColor = RGB(165 - N, 165, 165 - N) ElseIf N > 260 ThenForm2.HideForm1.ShowTimer1.Enabled = FalseEnd IfEnd Sub应用举例:1.圆形截面2.矩形截面3.组合截面。

哈工大材料力学上机大作业(VB编)

哈工大材料力学上机大作业(VB编)

应力状态分析一、问题的提出该程序可以解决的问题:①平面应力状态,已知σx,σy,τxy和角度的情况下计算不同任意截面的应力分量,还可以计算平面应力状态主应力的大小和方向并能画出应力圆;②空间应力状态,已知σx,σy,σz,τxy等的情况下计算主应力和最大切应力。

二、数学模型1、平面应力状态任一斜截面上既有正应力又有切应力,公式为:2、平面应力状态主应力大小及方向1、公式主应力计算公式主平面方位计算公式3、最大切应力:最大切应力发生在与主平面夹45度角的平面方位。

其公式4、应力圆应力圆原理:圆心:半径:5、三向应力状态三向应力计算公式:特征方程:222222x y x y xy αασσσσσττ+-⎛⎫⎛⎫-+=+ ⎪ ⎪⎝⎭⎝⎭2x y a σσ+=222x y xy R σστ-⎛⎫=+ ⎪⎝⎭三个不变量三、程序流程图㈠ 平面应力计算 打开界面选择平面应力计算 出现数据输入对话框 输入σx ,σy ,τxy 和角度 点击计算 可计算出任意截面的应力分量以及三个主应力和最大切应力 记录数据点击清除可进行重复计算㈡ 空间应力状态计算打开界面选择空间应力状态计算 出现数据输入对话框输入σx ,σy ,σz ,τxy ,τyz ,τxz 点击计算 得出结果可计算出三个主应力及最大切应力 记录数据点击清除可以重复计算四、程序说明本程序分为平面应力状态与空间应力状态,点击相应主菜单进行相应的计算。

平面应力状态:本程序能进行多次重复输入与计算根据提示输入数据进行计算输入X ,Y ,XY 方向上的应力值及X'转动的角度值,点击"计算"按扭,进行数值计算。

1x y z I σσσ=++2x yx y zy z xz xy y yz z zx x I στστσττστστσ=++3x yx zx xy y zy xz yz zI στττστττσ=可画出与数据相对应的应力圆空间应力状态:本程序能进行多次重复输入与计算根据提示输入数据进行计算输入X,Y,Z,XY,YZ,ZY方向上的应力值,点击"计算"按扭,可以计算出三个主应力及最大切应力。

哈工大材料力学上机编程报告

哈工大材料力学上机编程报告

材料力学电算实验压杆的临界力计算一.概述:本程序使用Microsoft Visual Basic编写,可以对不同材料、不同约束类型、不同截面类型的压杆进行临界力的计算。

杆件的参数可以输入,得出结果之后也可以清零。

二、问题分析及相关公式:1、压杆稳定当短粗杆受压时(图1),在压力F由小逐渐增大的过程中,杆件始终保持原有的直线平衡形式,直到压力F达到屈服强度载荷F s(或抗压强度载荷F b),杆件发生强度破坏时为止。

但是,如果用相同的材料,做一根与图1a所示的同样粗细而比较长的杆件(图1b),当压力F比较小时,这一较长的杆件尚能保持直线的平衡形式,而当压力F逐渐增大至某—数值F1时,杆件将突然变弯,不再保持原有的直线平衡形式,因而丧失了承载能力。

我们把受压直杆突然变弯的现象,称为丧失稳定或失稳。

此时,F1可能远小于F s (或F b)。

可见,细长杆在尚未产生强度破坏时,就因失稳而破坏。

图1在研究压杆稳定时,我们用一微小横向干扰力使处于直线平衡状态的压杆偏离原有的位置,如图1所示。

当轴向压力F由小变大的过程中,可以观察到:1)当压力值F1较小时,给其一横向干扰力,杆件偏离原来的平衡位置。

若去掉横向干扰力后,压杆将在直线平衡位置左右摆动,最终将恢复到原来的直线平衡位置。

2)当压力值F2超过其一限度F cr时,平衡状态的性质发生了质变。

这时,只要有一轻微的横向干扰,压杆就会继续弯曲,不再恢复原状,。

3)界于前二者之间,存在着一种临界状态。

当压力值正好等于F cr时,一旦去掉横向干扰力,压杆将在微弯状态下达到新的平衡,既不恢复原状,也不再继续弯曲,。

临界状态是杆件从稳定平衡向不稳定平衡转化的极限状态。

压杆处于临界状态时的轴向压力称为临界力或临界载荷,用F cr表示。

2、两端铰支细长压杆的临界力图2为一两端为球形铰支的细长压杆,其临界力公式为:图222lEIF cr π=(1)式(1)又称为欧拉公式。

3、不同杆端约束细长压杆的临界力(1)一端固定另一端自由细长压杆的临界力图3为—端固定另一端自由的压杆。

材力电算大作业梁的变形matlab

材力电算大作业梁的变形matlab

材料力学电算大作业题目名称:梁的变形计算作者班号:作者学号:作者姓名:指导教师:完成时间:评语:成绩(满分10分):签名:时间:说明:①当a≠0,b=0时,结构为简支梁;②当a=0,b≠0时,结构为悬臂梁;③当a≠0,b≠0时,结构为外伸梁。

2、源程序:clear%清屏clc;%清理变量disp('请输入所要求梁的信息')F=input('请输入集中力F(/N): ');a=input('请输入梁长度a(/m): ');b=input('请输入梁长度b(/m): ');c=input('请输入集中力作用位置c(/m): ');E=input('请输入弹性模量E(/GPa): ');I=input('请输入惯性矩I(/cm2): ');if (F<0|a<0|b<0|c<0|E<=0|I<=0|c>(a+b))|(a==0 & b==0) A='你的输入有误';elseif F==0|c==a|c==0B='你的输入有误¸该梁将不会弯曲';disp(B)elsex=0:0.01:(a+b);%构造0到a+b的a+b个点(每隔0.01画一个点)的x坐标轴if a~=0 & b==0n=length(x);v=zeros(1,n);%v是一个n列的零矩阵for i=1:(a/0.01+1)if x(i)<=cv(i)=-F*(a-c)*x(i)*(a^2-x(i).^2-(a-c)^2)/(6*E*I*10^5*a); u=-F*c*(a-c)*(2*a-c)/(6*E*I*a);w=-F*(a-c)*(28*a*c-c^2)^(3/2)/(15*E*I*a);q(i)=F*(a-c)*(a^2*x(i)-x(i)^3-(a-c)^2*x(i))/(6*E*I*a);z(i)= F*(a-c)*(a^2-3*x(i)^2-(a-c)^2)/(6*E*I*a);disp('x处挠度:')disp(q(i))disp('x处转角:')disp(z(i))disp('最大转角')disp(u)disp('最大挠度')disp(w)elsev(i)=-F*(a-c)*(a/(a-c)*(x(i)-c).^3+(a^2-(a-c)^2)*x(i)-x(i ).^3)/(6*E*I*10^5*a);u=-F*(a-c)*(a+c)/(6*E*I*a);w=- F*(a-c)*(28*a*c-c^2)^(3/2)/(15*E*I*a);q(i)=F*(a-c)*(a^2*x(i)-x(i)^3-(a-c)^2*x(i))/(6*E*I*a);z(i)= F*(a-c)*(a^2-3*x(i)^2-(a-c)^2)/(6*E*I*a);disp('x处挠度:')disp('x处转角:')disp(z(i))disp('最大转角')disp(u)disp('最大挠度')disp(w)endendendif a==0 & b~=0n=length(x);v=zeros(1,n);for i=1:(b/0.01+1)if x(i)<=cv(i)=-F*x(i).^2*(3*c-x(i))/(6*E*I*10^5);elsev(i)=-F*c^2*(3*x(i)-c)/(6*E*I*10^5);endendq(i)=F*(6*a*x(i)-3*x(i)^2)/(6*E*I);z(i)=6*F*(a-x(i))/(6*E*I);u=-F*c*c/(2*E*I);w=-F*c*c*(3*b-c)/(6*E*I);disp('x处挠度:')disp(q(i))disp('x处转角:')disp(z(i))disp('最大转角')disp(u)disp('最大挠度')disp(w)endif a~=0 & b~=0n=length(x);v=zeros(1,n);if c<afor i=1:((a+b)/0.01+1)if x(i)<=cv(i)=-F*(a-c)*x(i)*(a^2-x(i).^2-(a-c)^2)/(6*E*I*a*10^5);elseif x(i)>c & x(i)<=av(i)=-F*(a-c)*(a/(a-c)*(x(i)-c).^3+(a^2-(a-c)^2)*x(i)-x(i ).^3)/(6*E*I*a*10^5);elser=tan(F*c*(a-c)*(a+c)/(6*E*I*a*10^5));v(i)=(x(i)-a)*r;endendendif c>asyms td=-F*(t-a)*((c-a)*(3*t-a)-(t-a).^2)/(6*E*I*10^5);e=subs(diff(d),t,c);for i=1:((a+b)/0.01+1)if x(i)<=av(i)=F*(c-a)*x(i)*(a^2-x(i).^2)/(6*E*I*10^5*a);elseif x(i)>a & x(i)<=cv(i)=-F*(x(i)-a)*((c-a)*(3*x(i)-a)-(x(i)-a).^2)/(6*E*I*10 ^5);elseif x(i)>cg=-F*(c-a)*((c-a)*(3*c-a)-(c-a).^2)/(6*E*I*10^5);v(i)=g+(x(i)-c)*e;endendendv(i)=-F*(a-c)*x(i)*(a^2-x(i).^2-(a-c)^2)/(6*E*I*10^5*a); u=-F*c*(a-c)*(2*a-c)/(6*E*I*a);w=-F*(a-c)*(28*a*c-c^2)^(3/2);q(i)=F*(6*a*x(i)-3*x(i)^2)/(6*E*I);z(i)=6*F*(a-x(i))/(6*E*I);disp('x处挠度:')disp(q(i))disp('x处转角:')disp(z(i))disp('最大转角')disp(u)disp('最大挠度')disp(w)endfigureplot(x,v)title('挠曲线图');ylabel('v /m'),xlabel('x /m');end3、模拟1、算例:①取F=20,a=2,b=0,c=1,E=2,I=2运行结果为:②取F=20,a=0,b=3,c=2,E=2,I=2输出结果为:③取F=20,a=2,b=2,c=1,E=2,I=2运行结果为:总结:本算法运用迭代公式,先以梁的有关输入长度变量判断梁的类型和梁是否弯曲,然后再根据算法求出梁的某截面挠度和转角,最大挠度和最大转角和挠曲线的形状,本程序是计算梁受到恒定力时的挠度和转角,对于受到分布力的梁,程序类似,故没有写上。

(哈工大)材料力学上机程序

(哈工大)材料力学上机程序

H a r b i n I n s t i t u t e o f T e c h n o l o g y材料力学上机作业课程名称:材料力学设计题目:应力状态分析院系:XXXXXXXXX 班级:XXXXX姓名:XXXXX学号:XXXXXXXXX指导教师:XXXXX哈尔滨工业大学1.算法:枚举法、迭代法。

2.本程序用Matlab编程,程序如下:clear all;g=input('如果求二向应力,输入2,如果求三向应力,输入3 '); while g==3;clear allsx=input('sx(Mpa)=');sy=input('sy(Mpa)=');sz=input('sz(Mpa)=');txy=input('txy(Mpa)=');tyz=input('tyz(Mpa)=');txz=input('txz(Mpa)=');i1=sx+sy+sz;i2=sx*sy-txy*txy+sy*sz-tyz*tyz+sx*sz-txz*txz;i31=[sx,txy,txz;txy,sy,tyz;txz,tyz,sz];i3=det(i31);a=[1,-i1,i2,-i3];s=roots(a);s1=max(s);s3=min(s);for k=1:1:3if((s(k)~=s1)&&(s(k)~=s3))s2=s(k);endendg=1;tmax=(s1-s3)/2;r13=(s1-s3)/2;r12=(s1-s2)/2;r23=(s2-s3)/2;alpha1=0:pi/100:2*pi;%角度[0,2*pi]R=r13;%半径x1=R*cos(alpha1)+s3+r13;y1=R*sin(alpha1);plot(x1,y1,'*'),grid, hold onaxis equalv=axis;line([v(1),v(2)],[0,0]);line([0,0],[v(3),v(4)]) ;alpha2=0:pi/100:2*pi;%角度[0,2*pi]R=r12;%半径x2=R*cos(alpha2)+s2+r12;y2=R*sin(alpha2);plot(x2,y2,'*'),grid, hold onalpha3=0:pi/100:2*pi;%角度[0,2*pi]R=r23;%半径x3=R*cos(alpha3)+s3+r23;y3=R*sin(alpha3);plot(x3,y3,'k-'),grid, hold onfprintf('主应力1=%8.5fMpa\n',s1);fprintf('主应力2=%8.5fMpa\n',s2);fprintf('主应力3=%8.5fMpa\n',s3);fprintf('最大剪应力=%8.5fMpa\n',tmax);hold offendwhile g==2;sx=input('sx(Mpa)=');sy=input('sy(Mpa)=');txy=input('txy(Mpa)=');a=linspace(0,pi,37);sa=(sx+sy)/2;sd=(sx-sy)/2;sigma=sa+sd*cos(2*a)-txy*sin(2*a);tau=sd*sin(2*a)+txy*cos(2*a);plot(sigma,tau,sx,txy,'b-');axis equal;v=axis;line([v(1),v(2)],[0,0]);line([0,0],[v(3),v(4)])hold,plot(sa,0,'x')smax=max(sigma),smin=min(sigma),tmax=max(tau);asigma=((atan((2*txy)/(sx-sy)))/2)/pi*180;fprintf('主应力最大值=%8.5fMpa\n',smax);fprintf('主应力最小值=%8.5fMpa\n',smin);fprintf('切应力最大值=%8.5fMpa\n',tmax);fprintf('主方向角=%8.5f度和%8.5f度\n',asigma,asigma+90);h=input('如果不求应力,输入0,如果要再求应力,输入1 ');while h==1;a=input('给出斜截面方向角a=(弧度)')sigma=sa+sd*cos(2*a)-txy*sin(2*a)tau=sd*sin(2*a)+txy*cos(2*a)plot(sigma,tau,'or')h=input('如果不继续求应力,输入0,如果还要求应力,输入1 ');end,hold offg=0;end3.程序在Matlab中运行时的界面:(以三向应力为例)应力圆示意图:。

哈工大材料力学上机

哈工大材料力学上机

材料力学上机大作业院系:机电工程学院班级: 1208107 作者:吕肃学号: 1120810728 指导教师:张桂莲设计时间: 2014.6.12一、问题的提出:计算出6种梁的剪力,弯矩,挠度及角度,给出剪力图、弯矩图,挠曲线,角度曲线。

二、数学模型及算法算法实现:剪力,弯矩运用叠加法,挠度,角度运用积分法计算。

三、程序说明鉴于GUI界面复杂,回调函数众多,故只给出主回调函数,及对应的三个子函数。

需要输入分段矩阵x及载荷矩阵ZH。

输入分段矩阵为行矩阵,每个矩阵中的值对应载荷及支点位置或固定端,按从小到大顺序输入,从0开始。

载荷矩阵为多行矩阵,每行形式如:a b c d。

a对应载荷类型,1为力偶,2为集中力,3位分布力。

b对应载荷大小,单位为k。

c对应载荷起点位置,d对于载荷终点位置。

还可以选择不同截面类型,得到不同的E。

四、主回调程序global x ZH E I %定义所有的全局变量L1=get(handles.edit17,'string');L1=str2num(L1); %将文本格式转换到数值L2=get(handles.edit16,'string');L2=str2num(L2); %将文本格式转换到数值A=get(handles.edit18,'string');A=str2num(A); %将文本格式转换到数值B=get(handles.edit19,'string');B=str2num(B); %将文本格式转换到数值valu=get(handles.popupmenu2,'Value');value=get(handles.popupmenu3,'Value');switch valuecase 1I=pi*A^4/64;case 2I=pi*(A^4-B^4)/64;case 3I=A^3*B/12;case 4I=2450000;case 5I=23700000;case 6I=25000000;endE=get(handles.edit4,'string');E=str2num(E); %将文本格式转换到数值E=E*10^9;I=I/10^12;z=E*I;x=get(handles.edit1,'string');x=str2num(x); %将文本格式转换到数值ZH=get(handles.edit2,'string');ZH=str2num(ZH);switch valucase 1 %简支梁[n,m]=size(x);[a,b]=size(ZH);L=x(m);x1=[];for i=1:m-1x1=[x1,linspace(x(i),x(i+1),30*(x(i+1)-x(i)))]; endLO=zeros(size(x1));JL=zeros(size(x1));[PN,t]=size(ZH);[t,n]=size(x1);for i=1:PNswitch ZH(i,1) %不同类型的作用对梁的贡献case 1 %作用为弯矩M=ZH(i,2)*10^3;a=ZH(i,3);d=-M/L;JL=JL+d;LO=LO+d*x1;if a==0LO=LO+M;endif a>0&a<LLO=QLO(n,x1,a,M,LO);endcase 2 %作用为剪力P=ZH(i,2)*10^3;b=ZH(i,3);RA=(L-b)*P/L;if b>0&b<LJL(1:n)=JL+RA;LO=LO+RA*x1;[JL,LO]=QMP(n,x1,b,P,JL,LO);endcase 3 %作用为均布载荷q=ZH(i,2)*10^3;c=ZH(i,3);d=ZH(i,4);RA=(L-0.5*(c+d))*q*(d-c)/L;JL=JL+RA;LO=LO+RA*x1;[JL,LO]=QMQ(n,x1,c,d,q,JL,LO);endenddx=1/10;h=cumtrapz(LO)*dx/z;y=cumtrapz(h)*dx;D=-y(1);C=(-D-y(n))/L;h=cumtrapz(LO)*dx/z;h=h+C;y=cumtrapz(h)*dx;y=y+D;case 2 %左端固定悬臂梁[n,m]=size(x);L=x(m);x1=[];for i=1:m-1x1=[x1,linspace(x(i),x(i+1),30*(x(i+1)-x(i)))]; endLO=zeros(size(x1));JL=zeros(size(x1));[PN,t]=size(ZH);[t,n]=size(x1);for i=1:PNswitch ZH(i,1) %不同类型的作用对梁的贡献case 1 %作用为弯矩M=ZH(i,2)*10^3;a=ZH(i,3);if a>0&a<LLO=LO-M;LO=QLO(n,x1,a,M,LO);endif a==LLO=LO-M;endcase 2 %作用为剪力P=ZH(i,2)*10^3;b=ZH(i,3);RA=P;MA=-P*b;JL=JL+RA;LO=LO+RA*x1+MA;if b>0&b<L[JL,LO]=QMP(n,x1,b,P,JL,LO);endcase 3 %作用为均布载荷q=ZH(i,2)*10^3;c=ZH(i,3);d=ZH(i,4);RA=Q*(d-c);MA=-0.5*Q*(d-c)*(d+c);JL=JL+RA;LO=LO+RA*x1+MA;[JL,LO]=QMQ(n,x1,c,d,q,JL,LO);endendh=cumtrapz(LO)/z;y=cumtrapz(h);case 3 %右端固定悬臂梁[n,m]=size(x);L=x(m);x1=[];for i=1:m-1x1=[x1,linspace(x(i),x(i+1),30*(x(i+1)-x(i)))]; endLO=zeros(size(x1));JL=zeros(size(x1));[PN,t]=size(ZH);[t,n]=size(x1);for i=1:PNswitch ZH(i,1) %不同类型的作用对梁的贡献case 1 %作用为弯矩M=ZH(i,2)*10^3;a=ZH(i,3);if a==0LO=LO+M;endif a>0&a<LLO=QLO(n,x1,a,M,LO);endcase 2 %作用为剪力P=ZH(i,2)*10^3;b=ZH(i,3);if b==0JL=JL-P;LO=LO-P*x1;endif b>0&b<L[JL,LO]=QMP(n,x1,b,P,JL,LO);endcase 3 %作用为均布载荷q=ZH(i,2)*10^3;c=ZH(i,3);d=ZH(i,4);[JL,LO]=QMQ(n,x1,c,d,q,JL,LO);endenddx=1/10;h=cumtrapz(LO)*dx/z;y=cumtrapz(h)*dx;C=-h(n);D=-y(n)-C*L;h=cumtrapz(LO)*dx/z;h=h+C;y=cumtrapz(h)*dx;y=y+D;case 4 %左端外伸梁[n,m]=size(x);L=x(m);x1=[];for i=1:m-1x1=[x1,linspace(x(i),x(i+1),30*(x(i+1)-x(i)))]; endLO=zeros(size(x1));JL=zeros(size(x1));[PN,t]=size(ZH);[t,n]=size(x1);for i=1:PNswitch ZH(i,1) %不同类型的作用对梁的贡献case 1 %作用为弯矩M=ZH(i,2)*10^3;a=ZH(i,3);RA=-M/(L-L1);[JL,LO]=QMP(n,x1,L1,-RA,JL,LO);if a>0&a<LLO=QLO(n,x1,a,M,LO);endif a==0LO=LO+M;endcase 2 %作用为剪力P=ZH(i,2)*10^3;b=ZH(i,3);RA=P*(L-b)/(L-L1);[JL,LO]=QMP(n,x1,L1,-RA,JL,LO);if b>0&b<L[JL,LO]=QMP(n,x1,b,P,JL,LO);endif b==0JL=JL-P;LO=LO-P*x1;endcase 3 %作用为均布载荷q=ZH(i,2)*10^3;c=ZH(i,3);d=ZH(i,4);b=(c+d)*0.5;P=(d-c)*q;RA=P*(L-b)/(L-L1);[JL,LO]=QMP(n,x1,L1,-RA,JL,LO); [JL,LO]=QMQ(n,x1,c,d,q,JL,LO);endendfor i=1:nif x1(i)==L1t=i;endenddx=1/10;h=cumtrapz(LO)*dx/z;y=cumtrapz(h)*dx;C=(y(n)-y(t))/(t*dx-L);D=-y(n)-L*C;h=cumtrapz(LO)*dx/z;h=h+C;y=cumtrapz(h)*dx;y=y+D;case 5 %右端外伸梁[n,m]=size(x);L=x(m);x1=[];for i=1:m-1x1=[x1,linspace(x(i),x(i+1),30*(x(i+1)-x(i)))]; endLO=zeros(size(x1));JL=zeros(size(x1));[PN,t]=size(ZH);[t,n]=size(x1);for i=1:PNswitch ZH(i,1) %不同类型的作用对梁的贡献case 1 %作用为弯矩M=ZH(i,2)*10^3;a=ZH(i,3);RA=-M/L1;RB=-RA;JL=JL+RA;LO=LO+x1*RA;[JL,LO]=QMP(n,x1,L1,-RB,JL,LO);if a>0&a<LLO=QLO(n,x1,a,M,LO);endif a==0LO=LO+M;endcase 2 %作用为剪力P=ZH(i,2)*10^3;b=ZH(i,3);RA=P*(L1-b)/L1;RB=P*b/L1;JL=JL+RA;LO=LO+RA*x1;[JL,LO]=QMP(n,x1,L1,-RB,JL,LO);if b>0&b<L[JL,LO]=QMP(n,x1,b,P,JL,LO);endif b==0JL=JL-P;LO=LO-P*x1;endcase 3 %作用为均布载荷q=ZH(i,2)*10^3;c=ZH(i,3);d=ZH(i,4);b=(c+d)*0.5;P=(d-c)*q;RA=P*(L1-b)/L1;RB=P*b/L1;JL=JL+RA;LO=LO+RA*x1;[JL,LO]=QMP(n,x1,L1,-RB,JL,LO);[JL,LO]=QMQ(n,x1,c,d,q,JL,LO);endendfor i=1:nif x1(i)==L1t=i;endenddx=1/10;h=cumtrapz(LO)*dx/z;y=cumtrapz(h)*dx;D=-y(1);C=(-D-y(t))/(t*dx);h=cumtrapz(LO)*dx/z;h=h+C;y=cumtrapz(h)*dx;y=y+D;case 6 %两端外伸梁[n,m]=size(x);L=x(m);x1=[];for i=1:m-1x1=[x1,linspace(x(i),x(i+1),30*(x(i+1)-x(i)))]; endLO=zeros(size(x1));JL=zeros(size(x1));[PN,t]=size(ZH);[t,n]=size(x1);for i=1:PNswitch ZH(i,1) %不同类型的作用对梁的贡献case 1 %作用为弯矩M=ZH(i,2)*10^3;a=ZH(i,3);RA=-M/(L2-L1);RB=-RA;[JL,LO]=QMP(n,x1,L1,-RA,JL,LO);[JL,LO]=QMP(n,x1,L2,-RB,JL,LO);if a>0&a<LLO=QLO(n,x1,a,M,LO);endif a==0LO=LO+M;endcase 2 %作用为剪力P=ZH(i,2)*10^3;b=ZH(i,3);LL=L2-L1;bb=b-L1;RA=P*(LL-bb)/LL;RB=P*b/LL;[JL,LO]=QMP(n,x1,L1,-RA,JL,LO); [JL,LO]=QMP(n,x1,L2,-RB,JL,LO);if b>0&b<L[JL,LO]=QMP(n,x1,b,P,JL,LO);endif b==0JL=JL-P;LO=LO-P*x1;endcase 3 %作用为均布载荷q=ZH(i,2)*10^3;c=ZH(i,3);d=ZH(i,4);b=(c+d)*0.5;P=(d-c)*q;LL=L2-L1;bb=b-L1;RA=P*(LL-bb)/LL;RB=P*bb/LL;[JL,LO]=QMP(n,x1,L1,-RA,JL,LO); [JL,LO]=QMP(n,x1,L2,-RB,JL,LO); [JL,LO]=QMQ(n,x1,c,d,q,JL,LO);endendfor i=1:nif x1(i)==L1t=i;endendfor i=1:nif x1(i)==L2r=i;endenddx=1/10;h=cumtrapz(LO)*dx/z;y=cumtrapz(h)*dx;C=(y(r)-y(t))/(t*dx-r*dx);D=-y(t)-C*t*dx;h=cumtrapz(LO)*dx/z;h=h+C;y=cumtrapz(h)*dx;y=y+D;end[Qmax,i]=max(JL); %寻找最大剪力[Qmin,j]=min(JL); %寻找最小剪力if abs(max(JL))>=abs(min(JL))set(handles.text7,'string',Qmax); set(handles.text8,'string',x1(i)); elseset(handles.text7,'string',Qmin); set(handles.text8,'string',x1(j)); end[LOax,i]=max(LO); %寻找最大弯矩[LOin,j]=min(LO); %寻找最小弯矩if abs(max(LO))>=abs(min(LO))set(handles.text9,'string',LOax); set(handles.text10,'string',x1(i)); elseset(handles.text9,'string',LOin); set(handles.text10,'string',x1(j)); end[hmax,i]=max(h); %寻找最大弯矩[hmin,j]=min(h); %寻找最小弯矩if abs(max(h))>=abs(min(h))set(handles.text24,'string',hmax); set(handles.text25,'string',x1(i)); elseset(handles.text24,'string',hmin); set(handles.text25,'string',x1(j)); end[ymax,i]=max(y); %寻找最大弯矩[ymin,j]=min(y); %寻找最小弯矩if abs(max(y))>=abs(min(y))set(handles.text26,'string',ymax);set(handles.text27,'string',x1(i));elseset(handles.text26,'string',ymin);set(handles.text27,'string',x1(j));endaxes(handles.axes1); %绘制剪力图并显示在axe.1中stem(x1,JL);grid;title('剪力图')axes(handles.axes2); %绘制弯矩图并显示在axe.2中stem(x1,LO);grid;title('弯矩图');axes(handles.axes3);stem(x1,h);grid;title('转角图');axes(handles.axes4);stem(x1,y,'b');grid;title('挠度图');3个子函数%集中力偶对弯矩贡献的子程序:function LO=QLO(n,x1,a,M,LO)for j=1:nif x1(j)==an1=j;endendLO(n1:n)=LO(n1:n)+M;%集中力对剪力和弯矩贡献的子程序:function [JL,LO]=QMP(n,x1,b,P,JL,LO)for j=1:nif x1(j)==b;n1=j;endendJL(n1:n)=JL(n1:n)-P;LO(n1:n)=LO(n1:n)-P*(x1(n1:n)-b);%分布力对剪力和弯矩贡献的子程序:function [JL,LO]=QMQ(n,x1,c,d,q,JL,LO)for j=1:nif x1(j)>cJL(j)=JL(j)-q*(x1(j)-c);LO(j)=LO(j)-0.5*q*(x1(j)-c)^2;endif x1(j)>dJL(j)=JL(j)+q*(x1(j)-d);LO(j)=LO(j)+0.5*q*(x1(j)-d)^2;endend五、应用举例:O简支梁,长1.6m,在0.7m及1.3m处分别有力偶30KN m及集中力46KN,截面为圆形,直径200mm,弹性模量210Gp运行得出结果如下:可得出最大剪力-46000N在0m处,最大弯矩-89800N m在0m处。

哈工大材料力学上机大作业

哈工大材料力学上机大作业

材力作业题目:圆形组合截面几何性质计算姓名:叶怀木我的软件简介:该程序是用VB语言编写的。

由于水平有限,存在一些不足还请老师批评指正。

双击打开程序,在文本框输入已知数据,单击控制按钮进行操作与计算。

应用:输入2个圆形截面的直径和圆心位置坐标。

主界面如下所示。

计算主惯性矩I Z0,I Y0;生成截面构形图;标明形心位置点;形心坐标系下画出主轴。

注意事项:1、本程序仅限于2个圆的情况。

第二个圆的直径不能为0。

2、输入的圆形截面的直径和圆心位置坐标要求是整数。

3、由于本程序对坐标刻度比例尚未完全调试好,要求输入的两个直径之差不宜过大或两个圆心位置距离不宜过远,即两个圆要相对集中,否则可能不能显示完整图形。

计算过程:已知:第i个圆形截面的直径di,圆心坐标Xi,Yi,n=2计算:1、第i 圆面积24i i d A π=2、形心位置坐标101n i i i n i i X A X A===∑∑;101n i i i n ii Y A Y A ===∑∑3、在形心坐标系下画主轴421164nn i z i i i i d I X A π===+∑∑;421164n n i y i i i i d I Y A π===+∑∑;1n zy i i i i I X Y Z ==∑21()2zy z yI arctg I I α-=-主轴:00tan ()Y Y X X α-=⋅-;001()tan Y Y X X α-=-⋅-4、计算主惯性矩02z y z I I I +=+02z yy I I I +=-。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本程序只支持静定结构的梁(左端悬臂梁、简支梁)函数输入格式:beamsolver(L,EI,supports,loads,maxdx);参量的输入格式:L=10.0EI=2e8supports={{'f',0},{'v',10.0}} ----左端悬臂梁supports={{'p',2.0},{'r',8.0}} ----简支梁loads={{'f',[2.0,1000]},{'m',[4.0,500]},{'d',[7.0,9.0,3.0,20,100]}}maxdx=0.01输出为V,M,vy,x的一维行向量和三张坐标图----图1:剪力V图,图2:弯矩M图,图3:挠度vy图.范例:悬臂梁:纯受集中力:beamsolver(10.0,2e8,{{'f',0},{'v',10.0}},{{'f',[2.0,1000]}},0.01)纯受集中矩:beamsolver(10.0,2e8,{{'f',0},{'v',10.0}},{{'m',[4.0,500]}},0.01)纯受分布力(格式一):beamsolver(10.0,2e8,{{'f',0},{'v',10.0}},{{'d',[7.0,9.0,3.0,20,100]}},0.01) 纯受分布力(格式二):beamsolver(10.0,2e8,{{'f',0},{'v',10.0}},{{'d',[(7.0:0.01:9.0);(0:0.01:2.0).^2]} },0.01)受混合力:beamsolver(10.0,2e8,{{'f',0},{'v',10.0}},{{'f',[2.0,1000]},{'m',[4.0,500]},{'d', [7.0,9.0,3.0,20,100]}},0.01)简支梁:纯受集中力:beamsolver(10.0,2e8,{{'p',2.0},{'r',8.0}},{{'f',[5.0,1000]}},0.01)纯受集中矩:beamsolver(10.0,2e8,{{'p',2.0},{'r',8.0}},{{'m',[4.0,500]}},0.01)纯受分布力(格式一):beamsolver(10.0,2e8,{{'p',2.0},{'r',8.0}},{{'d',[7.0,9.0,3.0,20,100]}},0.01) 纯受分布力(格式二):beamsolver(10.0,2e8,{{'p',2.0},{'r',8.0}},{{'d',[(7.0:0.01:9.0);(0:0.01:2.0).^2] }},0.01)受混合力:beamsolver(10.0,2e8,{{'p',2.0},{'r',8.0}},{{'f',[5.0,1000]},{'m',[4.0,500]},{'d' ,[7.0,9.0,3.0,20,100]}},0.01)以上范例输出的剪力V图、弯矩M图都经过笔算检验完全正确。

悬臂梁的挠度经检验为正确的,简支梁的挠度有误(整个程序的唯一错误)。

function [x,V,M,vy]=beamsolver(L,EI,supports,loads,maxdx)%材料力学上机课作业(满分)%本DOC文件由M文件转换而成,可能有格式错误%班级;1036***(专业班级1036***)%支持两种梁的模型:%1.左端悬臂梁%2.一端pin一端roller的简支梁%输入格式:beamsolver(L,EI,supports,loads,maxdx);%例如:L=10.0,EI=2e8,supports={{'f',0},{'v',10.0}},loads={{'f',[2.0,1000]},{'m',[4.0,50 0]},{'d',[7.0,9.0,3.0,20,100]}},maxdx=0.01%输出为三张坐标图,图1:剪力V图,图2:弯矩M图,图3:挠度vy图.%fixed-freeif (supports{1}{1}=='f' && supports{2}{1}=='v')n=1;M=linspace(0,0,L/maxdx);V=linspace(0,0,L/maxdx);while n<=length(loads)%P------------------------fixed-free--------------------------------------if loads{n}{1}=='f'x=linspace(maxdx,L,L/maxdx); %将x分为小量n1=loads{n}{2}(1)/maxdx; %确定x=L1处对应的下标V1=linspace(loads{n}{2}(2),loads{n}{2}(2),n1); %第一段剪力赋值V2=zeros(1,L/maxdx-n1); %第二段剪力赋值M1=-loads{n}{2}(2)*(loads{n}{2}(1)-x(1:n1)); %第一段弯矩赋值M2=zeros(1,L/maxdx-n1); %第二段弯矩赋值M=M+[M1,M2]; %全梁的弯矩V=V+[V1,V2]; %全梁的剪力end%M-----------------------fixed-free----------------------------------------- if loads{n}{1}=='m'x=linspace(maxdx,L,L/maxdx); %将x分为小量n1=loads{n}{2}(1)/maxdx; %确定x=L1处对应的下标M1=linspace(loads{n}{2}(2),loads{n}{2}(2),n1); %第一段弯矩赋值M2=zeros(1,L/maxdx-n1); %第二段弯矩赋值M=M+[M1,M2]; %全梁的弯矩end%q-----------------------fixed-free---------------------------------------if loads{n}{1}=='d'x=linspace(maxdx,L,L/maxdx); %将x分为小量n1=loads{n}{2}(1)/maxdx; %确定x=L1处对应的下标n2=loads{n}{2}(2)/maxdx; %确定x=L2处对应的下标k=length(loads{n}{2})-4;A=size(loads{n}{2});if A(1)==1 %如果是第一种q的输入情况ks=1;q2=linspace(loads{n}{2}(4),loads{n}{2}(4),n2-n1+1); while ks<=kk0=loads{n}{2}(4+ks);q2=q2+k0*(x(n1:n2)-loads{n}{2}(3));ks=ks+1;endq1=zeros(1,n1-1);q3=zeros(1,L/maxdx-n2);q0=[q1,q2,q3];q=fliplr(q0); %求出qVq0=cumsum(q)*maxdx;Vq=fliplr(Vq0); %求出剪力VMq0=-cumsum(Vq0)*maxdx;Mq=fliplr(Mq0); %求出弯矩Mendif A(1)==2 %如果是q的第二种输入情况q2=loads{n}{2}(2,:); %表示出q2n1=loads{n}{2}(1,1)/maxdx; %定出q开始的坐标B=length(loads{n}{2}); %求q的长度n2=loads{n}{2}(1,B)/maxdx; %定出q结束的坐标q1=zeros(1,n1-1);q3=zeros(1,L/maxdx-n2);q0=[q1,q2,q3]; %求出q0q=fliplr(q0);Vq0=cumsum(q)*maxdx;Vq=fliplr(Vq0); %求出剪力VMq0=-cumsum(Vq0)*maxdx;Mq=fliplr(Mq0); %求出弯矩MendM=M+Mq; %全梁的弯矩V=V+Vq; %全梁的剪力endn=n+1;endV=VM=MA=cumsum(M)*maxdx/EI; %对弯矩积分求转角vy=cumsum(A)*maxdx %对转角积分求挠度subplot(3,1,1),plot(x,V),grid; %绘图subplot(3,1,2),plot(x,M),grid;subplot(3,1,3),plot(x,vy),grid;end%分割线---------------------------------------------------------------------------------%pin-roller-----------------------------------------------------------------------------if (supports{1}{1}=='p' || supports{1}{1}=='r')&&(supports{2}{1}=='p' || supports{2}{1}=='r')n=1;np=supports{1}{2}/maxdx;nr=supports{2}{2}/maxdx;M=linspace(0,0,L/maxdx);V=linspace(0,0,L/maxdx);while n<=length(loads)%P------------------------pin-roller--------------------------------------if loads{n}{1}=='f'x=linspace(maxdx,L,L/maxdx); %将x分为小量n1=loads{n}{2}(1)/maxdx; %确定x=L1处对应的下标Nr=loads{n}{2}(2)*(loads{n}{2}(1)-supports{1}{2})/(supports{2}{2}-supports{1}{2} );if n1<=np %力作用在在支架左边V1=zeros(1,n1-1);V2=-linspace(loads{n}{2}(2),loads{n}{2}(2),np-n1);V3=-linspace(Nr,Nr,nr-np);V4=zeros(1,L/maxdx-nr+1);V=V+[V1,V2,V3,V4];M1=zeros(1,n1-1);M2=-loads{n}{2}(2)*(x(n1:np-1)-loads{n}{2}(1));M30=Nr*x(1:nr-np);M3=fliplr(M30);M4=zeros(1,L/maxdx-nr+1);M=M+[M1,M2,M3,M4];endif (n1>np && n1<=nr) %力作用在两个支架之间V1=zeros(1,np-1);V2=linspace(loads{n}{2}(2)-Nr,loads{n}{2}(2)-Nr,n1-np);V3=-linspace(Nr,Nr,nr-n1);V4=zeros(1,L/maxdx-nr+1);V=V+[V1,V2,V3,V4];M1=zeros(1,np-1);M2=(loads{n}{2}(2)-Nr)*(x(np:n1-1)-supports{1}{2});M3=Nr*(supports{2}{2}-x(n1:nr-1));M4=zeros(1,L/maxdx-nr+1);M=M+[M1,M2,M3,M4];endif n1>nr %力作用在支架右边V1=zeros(1,np-1);V2=linspace(loads{n}{2}(2)-Nr,loads{n}{2}(2)-Nr,nr-np);V3=linspace(loads{n}{2}(2),loads{n}{2}(2),n1-nr);V4=zeros(1,L/maxdx-n1+1);V=V+[V1,V2,V3,V4];M1=zeros(1,np-1);M2=(loads{n}{2}(2)-Nr)*(x(np:nr-1)-supports{1}{2});M3=-loads{n}{2}(2)*(loads{n}{2}(1)-x(nr:n1-1));M4=zeros(1,L/maxdx-n1+1);M=M+[M1,M2,M3,M4];endend%M-----------------------pin-roller----------------------------------------- if loads{n}{1}=='m'x=linspace(maxdx,L,L/maxdx); %将x分为小量n1=loads{n}{2}(1)/maxdx; %确定x=L1处对应的下标if n1<=np %弯矩作用在支架左边Np=loads{n}{2}(2)/(supports{2}{2}-supports{1}{2});Nr=Np;V1=zeros(1,np-1);V2=linspace(Np,Np,nr-np);V3=zeros(1,L/maxdx-nr+1);V=V+[V1,V2,V3];M1=zeros(1,n1-1);M2=-linspace(loads{n}{2}(2),loads{n}{2}(2),np-n1);M3=-Nr*(supports{2}{2}-x(np:nr-1));M4=zeros(1,L/maxdx-nr+1);M=M+[M1,M2,M3,M4]; %全梁的弯矩endif (n1>np && n1<=nr) %弯矩作用在两支架中间Np=loads{n}{2}(2)/(supports{2}{2}-supports{1}{2});Nr=Np;V1=zeros(1,np-1);V2=linspace(Np,Np,nr-np);V3=zeros(1,L/maxdx-nr+1);V=V+[V1,V2,V3];M1=zeros(1,np-1);M2=Np*(x(np:n1-1)-supports{1}{2});M3=-Nr*(supports{2}{2}-x(n1:nr-1));M4=zeros(1,L/maxdx-nr+1);M=M+[M1,M2,M3,M4]; %全梁的弯矩endif n1>nr %弯矩作用在支架右边Np=loads{n}{2}(2)/(supports{2}{2}-supports{1}{2});Nr=NpV1=zeros(1,np-1);V2=linspace(Np,Np,nr-np);V3=zeros(1,L/maxdx-nr+1);V=V+[V1,V2,V3];M1=zeros(1,np-1);M2=Np*(x(np:nr-1)-supports{1}{2});M3=linspace(loads{n}{2}(2),loads{n}{2}(2),n1-nr);M4=zeros(1,L/maxdx-n1+1);M=M+[M1,M2,M3,M4]; %全梁的弯矩endend%q-----------------------pin-roller--------------------------------------- if loads{n}{1}=='d'x=linspace(maxdx,L,L/maxdx); %将x分为小量n1=loads{n}{2}(1)/maxdx; %确定x=L1处对应的下标n2=loads{n}{2}(2)/maxdx; %确定x=L2处对应的下标k=length(loads{n}{2})-4;A=size(loads{n}{2});if A(1)==1 %如果是第一种q的输入情况ks=1;q2=linspace(loads{n}{2}(4),loads{n}{2}(4),n2-n1+1);while ks<=kk0=loads{n}{2}(4+ks);q2=q2+k0*(x(n1:n2)-loads{n}{2}(3));ks=ks+1;endq1=zeros(1,n1-1);q3=zeros(1,L/maxdx-n2);q0=[q1,q2,q3];F=q0*maxdx; %等效为很多个力作用在杆上nF=length(F); %找出F的最后一点值得坐标X=1;while X<=nFif F(X)~=0Nr=F(X)*(X-np)/(nr-np);if X<=np %力作用在在支架左边V1=zeros(1,X-1);V2=-linspace(F(X),F(X),np-X);V3=-linspace(Nr,Nr,nr-np);V4=zeros(1,L/maxdx-nr+1);V=V+[V1,V2,V3,V4];M1=zeros(1,X-1);M2=-F(X)*(x(X:np-1)-(X*maxdx));M30=Nr*x(1:nr-np);M3=fliplr(M30);M4=zeros(1,L/maxdx-nr+1);M=M+[M1,M2,M3,M4];endif (X>np && X<=nr) %力作用在两个支架之间V1=zeros(1,np-1);V2=linspace(F(X)-Nr,F(X)-Nr,X-np);V3=-linspace(Nr,Nr,nr-X);V4=zeros(1,L/maxdx-nr+1);V=V+[V1,V2,V3,V4];M1=zeros(1,np-1);M2=(F(X)-Nr)*(x(np:X-1)-supports{1}{2}); M3=Nr*(supports{2}{2}-x(X:nr-1));M4=zeros(1,L/maxdx-nr+1);M=M+[M1,M2,M3,M4];endif X>nr %力作用在支架右边V1=zeros(1,np-1);V2=linspace(F(X)-Nr,F(X)-Nr,nr-np);V3=linspace(F(X),F(X),X-nr);V4=zeros(1,L/maxdx-X+1);V=V+[V1,V2,V3,V4];M1=zeros(1,np-1);M2=(F(X)-Nr)*(x(np:nr-1)-supports{1}{2}); M3=-F(X)*(X*maxdx-x(nr:X-1));M4=zeros(1,L/maxdx-X+1);M=M+[M1,M2,M3,M4];endendX=X+1;endendif A(1)==2 %如果是q的第二种输入情况q2=loads{n}{2}(2,:); %表示出q2n1=loads{n}{2}(1,1)/maxdx; %定出q开始的坐标B=length(loads{n}{2}); %求q的长度n2=loads{n}{2}(1,B)/maxdx; %定出q结束的坐标q1=zeros(1,n1-1);q3=zeros(1,L/maxdx-n2);q0=[q1,q2,q3]; %求出qF=q0*maxdx; %等效为很多个力作用在杆上nF=length(F); %找出F的最后一点值得坐标X=1;while X<=nFif F(X)~=0Nr=F(X)*(X-np)/(nr-np);if X<=np %力作用在在支架左边V1=zeros(1,X-1);V2=-linspace(F(X),F(X),np-X);V3=-linspace(Nr,Nr,nr-np);V4=zeros(1,L/maxdx-nr+1);V=V+[V1,V2,V3,V4];M1=zeros(1,X-1);M2=-F(X)*(x(X:np-1)-(X*maxdx));M30=Nr*x(1:nr-np);M3=fliplr(M30);M4=zeros(1,L/maxdx-nr+1);M=M+[M1,M2,M3,M4];endif (X>np && X<=nr) %力作用在两个支架之间V1=zeros(1,np-1);V2=linspace(F(X)-Nr,F(X)-Nr,X-np);V3=-linspace(Nr,Nr,nr-X);V4=zeros(1,L/maxdx-nr+1);V=V+[V1,V2,V3,V4];M1=zeros(1,np-1);M2=(F(X)-Nr)*(x(np:X-1)-supports{1}{2}); M3=Nr*(supports{2}{2}-x(X:nr-1));M4=zeros(1,L/maxdx-nr+1);M=M+[M1,M2,M3,M4];endif X>nr %力作用在支架右边V1=zeros(1,np-1);V2=linspace(F(X)-Nr,F(X)-Nr,nr-np);V3=linspace(F(X),F(X),X-nr);V4=zeros(1,L/maxdx-X+1);V=V+[V1,V2,V3,V4];M1=zeros(1,np-1);M2=(F(X)-Nr)*(x(np:nr-1)-supports{1}{2}); M3=-F(X)*(X*maxdx-x(nr:X-1));M4=zeros(1,L/maxdx-X+1);M=M+[M1,M2,M3,M4];endendX=X+1;endendendn=n+1;endV=VM=MA=cumsum(M)*maxdx/EI; %对弯矩积分求转角 vy=cumsum(A)*maxdx %对转角积分求挠度subplot(3,1,1),plot(x,V),grid; %绘图 subplot(3,1,2),plot(x,M),grid;subplot(3,1,3),plot(x,vy),grid;end。

相关文档
最新文档