matlab有限元解二维抛物方程
更新时间:2024-04-16 13:01:01 阅读量: 综合文库 文档下载
- Matlab有限元推荐度:
- 相关推荐
%%%%% 真解 u=sin(pi*x)*sin(pi*y)*sin(t) %%%%% 方程 diff(u,t)-Laplace(u)=f
%%%%% f=sin(pi*x)*sin(pi*y)*cos(t)+2*pi^2*sin(pi*x)*sin(pi*y)*sin(t) %clear all % clc
%%%%finite element code for parabolic equation with constant coefficient %%%mesh%%
node=[0,0;1,0;1,1;0,1]; elem=[2,3,1;4,1,3]; T=1;
bdEdge=setboundary(node,elem,’Dirichlet’); n=input(‘Please input initial mesh:’); M=input(‘M=’); for i=1:n
[node,elem,bdEdge]=uniformrefine(node,elem,bdEdge); end
N=size(node,1); NT=size(elem,1); S=1/NT; r=1/M;
A=zeros(N,N); u=zeros(N,M+1); u1=zeros(N,1);
f=inline(‘sin(pi*xx(1,1))*sin(pi*xx(1,2))*cos(t)+2*pi^2*sin(pi*xx(1,1))*sin(pi*xx(1,2))*sin(t)’,’xx’,’t’);
[lambda,weight]=quadpts(5); p=node’; T=elem’;
totalEdge=[elem(:,[2,3]);elem(:,[3,1]);elem(:,[1,2])]; isBdEdge=reshape(bdEdge,3*NT,1); Dirichlet=totalEdge(isBdEdge==1),:); isBdNode=false(N,1); isBdNode(Dirichlet)=true; bdNode=find(isBdNode); freeNode=find(~isBdNode); for j=2:M+1 for i=1:NT
F=zeros(N,1); F_ele=zeros(1,3); T_ele=elem(i,:); for m=1:7
xx(m,1)=(p(1,t(1,i))-p(1,t(3,i)))*lambda(m,1)+(p(1,t(2,i))-p(1,t(3,i))*lambda(m,2)+p(1,t(3,i)); xx(m,1)=(p(2,t(1,i))-p(2,t(3,i)))*lambda(m,1)+(p(2,t(2,i))-p(2,t(3,i))*lambda(m,2)+p(2,t(3,i)); end
for i=1:3 for k=1:7
F_ele(i)=F_ele(i)+S*weight(k)*lambda(k,i)*f(xx(k,:),(j-1)*r); end end
x=node(T_ele,:); [a,b]=Basis_coeff(x); A_ele=[a,b]’*[a,b]/(4*s); B_ele=zeros(3,3); for i=1:3 for j=1:3 if i==j
B_ele(i,j)=1/12; else
B_ele(i,j)=1/24; end end end
A(T_ele,T_ele)=A(T_ele,T_ele)+S*B_ele+r*A_ele; F(T_ele,1)=F(T_ele,1)+r*F_ele’+S*B_ele; end
uj=zeros(N,1);
uj(freeNode)=A(freeNode,freeNode)\\F(freeNode); u(:,j)=uj; end
showresult(node,elem,uj) u_exact=zeros(N,M+1); for j=1:M+1 u_exact(:,j)=inline(‘sin(pi*pxy(:,1)).*sin(pi*pxy(:,2)).*sin((j-1)*r)’,’pxy’);
end
L2_err=getL2error(node,elem,u_exact(:,j),u(:,j),5); %t=(j-1)*r L’2_err=getL2error(node,elem,u_exact,u,5);
Du(:,j)=inline(‘[pi*cos(pi*pxy(:,1)).*sin(pi*pxy(:,2)).*sin((j-1)*r),pi*sin(pi*pxy(:,1)).*cos(pi*pxy(:,2)).*sin((j-1)*r)]’,’pxy’);
H1_err=getH1error((node,elem,Dut(:,j),u(:,j),5);
正在阅读:
matlab有限元解二维抛物方程04-16
基于LM3S1138的SPWM逆变器设计01-17
我得到了信任作文600字06-24
2015广西壮族自治区教师资格证考试《小学综合素质》考试题库07-26
新版标日初级上册13-19课讲稿05-19
幼儿园体能教学计划 - 图文09-20
第3讲线面垂直与面面垂直(学生版)12-30
余姚市2019-2020届九年级科学上学期期中试题 浙教版03-16
浅谈塔吉克斯坦进20年经济发展状况12-02
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 二维
- 抛物
- 有限元
- 方程
- matlab