参考代码: t = 2004:2012;x = [71433 72022 73051 75967 78037 79862 83389 84323 85797];% 模型一: 指数增长模型。y = log(x);a = polyfit(t,y,1);r = a(1);x0 = exp(a(2));x1 = x0 exp(rt);% 模型二:阻滞增长模型f = @(a,t) a(1)/(1+(a(1)/x(1)-1)exp(-a(2)(t-t(1)))); a = lsqcurvefit(f,[880 1],t,x);plot(t,x,'o',t,x1,'r:')x2 = f(a,t);plot(t,x,'o',t,x1,'r:',t,x2,'g--')legend('原始数据','指数增长模型','阻滞增长模型',2)xlabel 年份; ylabel 人口(万人)
是可以的。MATLAB提供专门的有限元分析工具箱(Finite Element Analysis Toolbox)
可以下一个教程看一下。
>
clc
clear
tic;
% n 是行与列划分的格子数,对整个[0,1][0,1]有n^2个划分,can为方程中的参数k
%这里我们用1,2,3按逆时针来表示一个三角形的各个顶点
% s是一个n^210的关联矩阵,s(i,1)表示第i个三角形,s(i,2),s(i,3),s(i,4)分别表示第i个三角形的1,2,3所对应的顶点
% s(i,5),s(i,6);s(i,7),s(i,8);s(i,9),s(i,10)分别表示顶点1,2,3所代表的坐标
%生成关联矩阵s
%A是总刚矩阵
%声明符号变量x y
n=20;
can=20;
s=zeros(2n^2,10);
h=1/n;
st=1/(2n^2);
A=zeros((n+1)^2,(n+1)^2);
syms x y;
for k=1:1:2n^2
s(k,1)=k;
q=fix(k/(2n));
r=mod(k,(2n));
if (r~=0)
r=r;
else r=2n;q=q-1;
end
if (r<=n)
s(k,2)=q(n+1)+r;
s(k,3)=q(n+1)+r+1;
s(k,4)=(q+1)(n+1)+r+1;
s(k,5)=(r-1)h;
s(k,6)=qh;
s(k,7)=rh;
%%
%
% for x = 1:10
% disp(x)
% end
%
s(k,8)=qh;
s(k,9)=rh;
s(k,10)=(q+1)h;
else
s(k,2)=q(n+1)+r-n;
s(k,3)=(q+1)(n+1)+r-n+1;
s(k,4)=(q+1)(n+1)+r-n;
s(k,5)=(r-n-1)h;
s(k,6)=qh;
s(k,7)=(r-n)h;
s(k,8)=(q+1)h;
s(k,9)=(r-n-1)h;
s(k,10)=(q+1)h;
end
end
%下面生成基函数L(i)表示第i个点顶点的基函数
%生成单刚矩阵d
%生成单刚矩阵并将其加入总纲矩阵
d=zeros(3,3);
B=zeros((n+1)^2,1);
b=zeros(3,1);
%生成A的总刚
for k=1:1:2n^2
L(1)=(1/(2st))((s(k,7)s(k,10)-s(k,9)s(k,8))+(s(k,8)-s(k,10))x+(s(k,9)-s(k,7))y);
L(2)=(1/(2st))((s(k,9)s(k,6)-s(k,5)s(k,10))+(s(k,10)-s(k,6))x+(s(k,5)-s(k,9))y);
L(3)=(1/(2st))((s(k,5)s(k,8)-s(k,7)s(k,6))+(s(k,6)-s(k,8))x+(s(k,7)-s(k,5))y);
for i=1:1:3
for j=i:3
d(i,j)=int(int(((((diff(L(i),x))(diff(L(j),x)))+((diff(L(i),y))(diff(L(j),y))))-((can^2)L(i)L(j))),x,0,1),y,0,1);
d(j,i)=d(i,j);
end
end
for i=1:1:3
for j=1:1:3
A(s(k,(i+1)),s(k,(j+1)))=A(s(k,(i+1)),s(k,(j+1)))+d(i,j);
end
end
for i=1:1:3
b(i)=int(int((L(i)),x,0,1),y,0,1);
B(s(k,(i+1)),1)=B(s(k,(i+1)),1)+b(i);
end
end
%下面根据边界条件来求解有限元方程组Mx=B,齐次边界条件约掉了很多项
M=zeros((n+1)^2,n^2);
j=n^2;
for i=(n^2+n):-1:1
if ((mod(i,(n+1)))~=1)
M(:,j)=A(:,i);
j=j-1;
else continue
end
end
%preanswer是未知点的值是(n+1)^2(n^2)的
preanswer=M\B;
%得到所有节点的值
answer=zeros((n+1)^2,1);
j=1;
for i=1:1:(n^2+n)
if ((mod(i,(n+1)))~=1)
answer(i)=preanswer(j);
j=j+1;
else answer(i)=0;
end
end
%%
%
% for x = 1:10
%
% for x = 1:10
%
% for x = 1:10
% disp(x)
% end
%
% disp(x)
% end
%
% disp(x)
% end
%
%生成求解后的图
Z=zeros((n+1),(n+1));
for i=1:1:(n+1)^2
s=fix(i/(n+1))+1;
r=mod(i,(n+1));
if(r==0)
r=n+1;
s=s-1;
else
end
Z(r,s)=answer(i);
end
[X,Y]=meshgrid(1:-h:0,0:h:1);
surf(X,Y,Z);
toc;
t=toc;
好好看看矩阵位移法, 及计算结构力学 这些书上面有类似的源程序
★判读是否为可变体系吧? 一般涉及电算,应当都是超静定结构吧? 机动分析 知道了总单元和总结点,那就比较容易确定了吧!
如果你想好了用matlab编程 ,那你一定要对理论清楚,数学要好些。 因为matlab对于无解的方程,也能给你解出值来
推荐 使用其他语言,虽然可能会难些, 但推荐 (虽然matlab可能在矩阵处理方面有一定的优势)
推荐书籍 《杆系结构有限元分析与 matlab应用 》 中国水利水电出版社 刘树堂
我亲自编写过,用其他语言,不太难,建议 一定要把理论弄得非常清楚
总结历来解决的问题,在土木工程科研技术领域,MATLAB主要可以解决以下几类问题:
这一方面主要用于实验数据的基本处理。获取基本的工程、实验数据之后,往往需要对原始的数据进行运算处理、统计分析、以及图形化显示,以揭示我们预期传达的信息。
上图为弯矩图的插值,采用有限元计算得到的弯矩数值仅为少数结点的弯矩,而从概念可以知道,结构的弯矩分布是连续的,因此可以采用高次曲线或样条曲线对基本数据插值,从而获得平滑的弯矩图。
一张图,基本展示了MATLAB-2D绘图的全部潜力。
高度图形化的展示揭示了桥梁的受力状况特点。
最简单,最规范的实验数据绘图。横轴、纵轴、单位、网格线、曲线、图例,一切表达要素完备。
其他软件也能绘制基本的数据图形,如Excel、Origin,相比之下,MATLAB的可 *** 纵性最强,所想即可得。
土木工程的实验研究往往是经验性的,很难得到完全符合解析理论的结果,往往通过实验方法,测试出两个物理量的具体数值,如力-位移。
为了便于推广应用,往往拟合出形如y=a x^2+b x+c等拟合公式,以便工程实践应用。
此处缺少案例。
物理问题的精确表述往往都是微分方程,尤其偏微分方程的形式,如力学的结构振动问题、热传导问题。故而演化出了一大类数学物理方程。
然而,微分方程的解析求解非常困难,而时间问题又是复杂多变的。为了解决实际问题,往往使用数值方法(差分法)近似求解。
研究钢结构构件温度随空气温度的升高。本例与王浩合作解决。
中心差分法求解结构在地震激励下的运动方程。
方法同上,结构恢复力非线性,此时数值方法是实验以外的唯一求解手段。
物理问题在单自由度的条件下,往往以微分方程的形式表达。而实际的多自由度问题会变成 微分方程组 ,无法直接求解,往往引入多种简化假设,分离解耦,最终转化成矩阵方程的形式求解。
多自由度的结构振型求解,实质上是矩阵的特征值求解问题。
结构分析的数值方法主要为 有限元方法 ,在此基础上又演化出了一系列其他方法:边界元法、有限样条法、谱元法等等。
本例与赵诗宇合作实现。
土木工程的检测、监测技术正在兴起发展。利用仪器和设备对结构进行检测监测,首先获得的是一系列 物理量的时间序列 ,即 信号 。
所以,检测监测的关键技术之一就是————从信号中识别结构系统特征。
常用的信号处理技术有:
小波变换非常适合处理频率成分突变的非平稳信号,如超声导波检测信号。摘自Reference-free corrosion damage diagnosis in steel strands using guided ultrasonic waves。
除了以上各类具体的分析处理,为了避免直接 *** 作MATLAB源码引入的 技术门槛 ,需要采用图形化交互界面(GUI)来封装程序技术。
大二以来通过MATLAB解决的各类技术问题汇总:
在选取分析元素的时候忽略一些非主要元素,在确定哪些是非主要元素的过程中就需要使用边界条件来界定某元素的重要程度。比方把众多影响力低于百分之30的元素暂时不计入研究对象。就是一个选取的边界条件。 对于研究内容的不同选取元素数量和边界
首先:“用MATLAB建立模型,再把模型送入MATLAB进行分析,再把分析结果回送到MATLAB进行处理” 这里你应该是打错了。。。\x0d\一般来说,两者基本没什么联系的。\x0d\1、MATLAB是处理矩阵运算的很常见和高效的编程软件,当然它也可以运用有限元方法进行计算,但需要你对有限元方法和你具体实现的问题驾驭能力较高,需要具体推导计算过程的细节,以及求解方法。\x0d\2、ANSYS是最普及的有限元商业软件,它涉及领域很广。因为我主要做的是结构分析,对你说得噪声分析不是特别了解。我可以把它归为振动分析吧。应该也是可以实现的。但前提是你如果简化处理你要分析的问题,能够在软件中有效的建立有限元分析模型。\x0d\相对来说,两者是可以分开进行的,然后都得到结果后可以互相验证。MATLAB相对更开放自由一些,你可以求出理论解。而ANSYS只能用有限元方法得到数值解。\x0d\我想你老师的意思应该是两者都可以用,你自己根据情况去选择,如果都选用当然更好。\x0d\注意一点的是,选MATLAB需要你对整个分析的过程更清晰明了,很多细节需要你自己推导并求解。而选用ANSYS,你需要很熟悉整个分析的主要过程和关键点,找到合适的单元和合适的处理手段。\x0d\还有你打错的那句话,你是否想说用ANSYS建模,然后MATLAB算,然后再回到ANSYS后处理?据我了解,ANSYS对很多其他软件都有接口,而且workbench中的FEMODELER模块确实可以导出有限元建模分析语句,转化到其他软件中,但这个语句不是MATLAB能辨识的。反过来,MATLAB的语句,ANSYS也不认同,你倒是可以在ANSYS中用他的APDL语言进行定向编程。\x0d\好了说了这么多,其实对于具体问题主要还是看你个人对实际问题的化表象为本质的能力了。用什么都无所谓的。
以上就是关于Matlab有限元应变应力分析:全部的内容,包括:Matlab有限元应变应力分析:、请问一下matlab中能进行有限元分析吗、有限元方法求解Helmholtz方程的边值问题,matlab编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)