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)的更多相关文章

  1. [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, ...

  2. 双二次Lagrange 有限元计算特征值程序(基于iFEM)

    function lambda = c0P2(h) %% Mesh [node,elem] = squarequadmesh([,,,],h); elem = elem(:,[,,,]); showm ...

  3. Node.js入门:事件机制

    Evented I/O for V8 JavaScript     基于V8引擎实现的事件驱动IO.   事件机制的实现     Node.js中大部分的模块,都继承自Event模块(http://n ...

  4. 深入浅出Node.js(上)

    (一):什么是Node.js Node.js从2009年诞生至今,已经发展了两年有余,其成长的速度有目共睹.从在github的访问量超过Rails,到去年底Node.jsS创始人Ryan Dalh加盟 ...

  5. HDU - 5875 Function(预处理)

    Function The shorter, the simpler. With this problem, you should be convinced of this truth.      Yo ...

  6. jQuery.data() 与 jQuery(elem).data()源码解读

    之前一直以为 jQuery(elem).data()是在内部调用了 jQuery.data(),看了代码后发现不是.但是这两个还是需要放在一起看,因为它们内部都使用了jQuery的数据缓存机制.好吧, ...

  7. node.js传参给PHP失败,headers加上'Content-Length': Buffer.byteLength(content)

    node.js需要传参给PHP,执行计划任务 var events = require('events'); start_cron(,,{"auth":"7wElqW6v ...

  8. Angularjs+node+Mysql实现地图上的多点标注

    注:本文适合对于node有一定基础的人,如果您是小白,请先用1个小时学习node.node文档https://nodejs.org/en/docs/ 该片博文的源码地址:https://github. ...

  9. javascript --- Function模式

    回调函数 在javascript中,当一个函数A作为另外一个函数B的其中一个参数时,则称A函数为回调函数,即A可以在函数B的运行周期内执行(开始,中间,结束). 举例来说,有一个函数用于生成node. ...

随机推荐

  1. 查询中mybatis的if判断里传入0

    1.传入的是long 或者 Integer类型 ,<if test="id != null "> 但是id传值为0时(前提是id对应的类型为long 或者 Intege ...

  2. url获取参数

    参考http://www.runoob.com/w3cnote/js-get-url-param.html function getQueryVariable(variable) { var quer ...

  3. android笔记:Service

    服务:在后台运行,没有界面的组件. 服务生命周期如下: 两种启动方式: 1.startService(): onCreate()-->onStartCommand()-->onDestro ...

  4. 用Git发布版本笔记

    1.首先,如果是发布的Develop分支,先从master建立HotFix分支,提交到git并指定关联关系 (git branch --set-upstream-to=D..) 2.对H分支进行功能完 ...

  5. hdoj1257(DP-LIS/贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257 方法1--贪心: 定义一个数组f[30005],由于题目没给数据量大小,故为了保险,开到最大(高 ...

  6. ArrayList与LinkedList的基本添加删除方法 模拟栈 队列

    ArrayList  LinkedList ArrayList的add是在末尾添加 linkedlist也是 offer加在末尾 poll获取并移除此列表的头(第一个元素) peek 获取第一个但不移 ...

  7. sqlserver数据库维护常用sql

    1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份 ...

  8. 在iframe框架中全屏不好使的原因

    遇到的问题:我是在iframe框架中添加了一个插件在360和火狐中不好使,将allowfullscreen="true" 属性配置好就没问题了: 可能出现的原因:将allowful ...

  9. Oracle增加一列、修改一列数据类型

    Oracle增加一列.修改一列数据类型: 添加一列: alter   table   A   add( CFYJSNR  varchar2(20)); 修改列: alter  table A  ren ...

  10. PAT 1058 选择题(20)(代码+思路)

    1058 选择题(20 分) 批改多选题是比较麻烦的事情,本题就请你写个程序帮助老师批改多选题,并且指出哪道题错的人最多. 输入格式: 输入在第一行给出两个正整数 N(≤ 1000)和 M(≤ 100 ...