function [eigf,eigv,dof]=laplaceeig(node,elem,problem)
function [eigf,eigv,dof]=laplaceeig(node,elem,problem)
% -boundary eigenvalue problem
% problem='0-boundary'
[bdNode,Dirichet,inNode]=findboundary(elem);
%找出边界节点、边界边的节点编号、内部节点
N=size(node,); %节点个数
NT=size(elem,); %单元个数
Nin=N-size(bdNode,); %内部节点个数
ve1=node(elem(:,),:)-node(elem(:,),:);
%单元第三个节点坐标减去第二个坐标
ve2=node(elem(:,),:)-node(elem(:,),:);
%单元第一个节点坐标减去第三个坐标
ve3=node(elem(:,),:)-node(elem(:,),:);
%单元第二个节点坐标减去第一个坐标
area=0.5*(ve3(:,).*ve2(:,)+ve3(:,).*ve2(:,)) %求每个单元的面积
Dlambda(:NT,:,)=[-ve1(:,)./(*area),ve1(:,)./(*area)];
% 求 dlambda1/dx,dlambda1/dy
Dlambda(:NT,:,)=[-ve2(:,)./(*area),ve2(:,)./(*area)];
% 求 dlambda2/dx,dlambda2/dy
Dlambda(:NT,:,)=[-ve3(:,)./(*area),ve3(:,)./(*area)];
% 求 dlambda3/dx,dlambda3/dy
clear ve1,ve2,ve3
A=sparse(N,N); %生成N*N的零矩阵
B=sparse(N,N); %生成N*N的零矩阵
for i=:
for j=i:
Aij=(Dlambda(:,,i).*Dlambda(:,,j)+Dlambda(:,,i).*Dlambda(:,,j)).*area;
% 求出去 Aij的出去对角的上三角剖分
if(j==i)
A=A+sparse(elem(:,i),elem(:,j),Aij,N,N);% 求Aij的对角元
B=B+sparse(elem(:,i),elem(:,j),area/,N,N); % lambda^2在边上的积分
else
A=A+sparse([elem(:,i);elem(:,j)],[elem(:,j);elem(:,i)],[Aij;Aij],N,N);
B=B+sparse([elem(:,i);elem(:,j)],[elem(:,j);elem(:,i)],[area;area]/,N,N);
%lambda_i*lambda_j在单元的积分
end
end end
clear Aij
% -boundary 注意节点个数不够需要进行一致加密
A(bdNode,:)=[];A(:,bdNode)=[];
B(bdNode,:)=[];B(:,bdNode)=[]; %去掉边界节点
[eigf,eigv]=eigs(A,B,,'sm'); %按模最小求第一个特征值及对应的特征向量
eigf=eigf/(eigf'*A*eigf)^0.5; %按1模把特征值向量规范化 u/(u'*A*u)
eigf=accumarray([inNode,ones(Nin,)],eigf,[N,]);% 表 u 组装成与节点个数大小
dof=Nin;
function [eigf,eigv,dof]=laplaceeig(node,elem,problem)
function [eigf,eigv,dof]=laplaceeig(node,elem,problem)的更多相关文章
- [A,D]=solverAdini(node,elem,bdEdge,h1,h2)
>> [A,D]=solverAdini(node,elem,bdEdge,h1,h2) A = (1,1) 14.5000 (2,1) 11.0000 (3,1) 11.5000 (4, ...
- 双二次Lagrange 有限元计算特征值程序(基于iFEM)
function lambda = c0P2(h) %% Mesh [node,elem] = squarequadmesh([,,,],h); elem = elem(:,[,,,]); showm ...
- Node.js入门:事件机制
Evented I/O for V8 JavaScript 基于V8引擎实现的事件驱动IO. 事件机制的实现 Node.js中大部分的模块,都继承自Event模块(http://n ...
- 深入浅出Node.js(上)
(一):什么是Node.js Node.js从2009年诞生至今,已经发展了两年有余,其成长的速度有目共睹.从在github的访问量超过Rails,到去年底Node.jsS创始人Ryan Dalh加盟 ...
- HDU - 5875 Function(预处理)
Function The shorter, the simpler. With this problem, you should be convinced of this truth. Yo ...
- jQuery.data() 与 jQuery(elem).data()源码解读
之前一直以为 jQuery(elem).data()是在内部调用了 jQuery.data(),看了代码后发现不是.但是这两个还是需要放在一起看,因为它们内部都使用了jQuery的数据缓存机制.好吧, ...
- node.js传参给PHP失败,headers加上'Content-Length': Buffer.byteLength(content)
node.js需要传参给PHP,执行计划任务 var events = require('events'); start_cron(,,{"auth":"7wElqW6v ...
- Angularjs+node+Mysql实现地图上的多点标注
注:本文适合对于node有一定基础的人,如果您是小白,请先用1个小时学习node.node文档https://nodejs.org/en/docs/ 该片博文的源码地址:https://github. ...
- javascript --- Function模式
回调函数 在javascript中,当一个函数A作为另外一个函数B的其中一个参数时,则称A函数为回调函数,即A可以在函数B的运行周期内执行(开始,中间,结束). 举例来说,有一个函数用于生成node. ...
随机推荐
- tesseract 4.0 编译安装(CentOS)
1.安装依赖工具 yum install autoconf automake libtool libjpeg-devel libpng-devel libtiff-devel zlib-devel 2 ...
- IntelliJ IDEA project module
在IDEA 创建一个project,目录结构是这样的:在project下创建一个module之后目录结构是这样的: 简单的概括如下: IntelliJ系中的 Project 相当于Eclipse系中 ...
- django创建工程,用命令
django创建工程的命令 >>python C:\Python33\Lib\site-packages\django\bin\django-admin.py startproject p ...
- 第八章 高级搜索树 (b5)B-树: 删除
- Winform关于OpenFileDialog的使用方法
1.OpenFileDialog控件有以下基本属性InitialDirectory 对话框的初始目录Filter 要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.txt|所 ...
- python学习——sys.argv
sys.argv[]:用于获取命令行参数,sys.argv[0]即所运行的代码自身的文件路径,因此真正的其他参数是从1开始 sys.argv[1]:表示第一个参数 sys.argv[1][2:]:表示 ...
- 获取APP的启动图 -Launch Image
http://adad184.com/2015/10/15/tips-access-current-launch-image/
- apache配置防盗链
1.确保apache已开启rewrite. 2.在.htaccess文件中添加如下: RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://X ...
- Paypal支付
<!--Paypal支付数据开始--> <input type="hidden" name="charset" value="utf ...
- Linux tcpdump命令
一.简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据 ...