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. ...
随机推荐
- python引入模块时import与from ... import的区别(转)
import datetime是引入整个datetime包,如果使用datetime包中的datetime类,需要加上模块名的限定. 1 import datetime 2 3 print datet ...
- EasuyUI前后台传参
package com.cn.eport.util; import java.util.List; import java.util.Map; public class PageHelper impl ...
- Appuim学习路-Appuim介绍
(学一个东西,总的知道它支持什么.为什么要选择它吧?所以我就去看github上的介绍了.发现大家介绍的来源大多来自于此) Appium是一个开源的自动化框架,是跨平台的,允许所有平台使用同一套AP ...
- 慕课网access_token的获取
access_token的接口是微信公众号一个基础接口,access_token接口微信公众号一个非常重要的接口 access_token是微信公众号的全局唯一票据,公众号的所有接口的调用都需要使用到 ...
- Python int() 函数
Python int() 函数 Python 内置函数 描述 int() 函数用于将一个字符串或数字转换为整型. 语法 以下是 int() 方法的语法: class int(x, base=10) ...
- 两数之和-数据结构设计 · Two Sum - Data structure design
[抄题]: 设计b并实现一个 TwoSum 类.他需要支持以下操作:add 和 find.add -把这个数添加到内部的数据结构.find -是否存在任意一对数字之和等于这个值 [思维问题]: 不知道 ...
- postman 使用 - 连接不到接口
- php Pthread 多线程 (四) 共享内存
有些时候我们希望在多个线程中共享一些需要的数据,我们可以使用shmop扩展. <?php class Count extends Thread { private $name = ''; pub ...
- php多进程中的阻塞与非阻塞
我们通过pcntl_fork来创建子进程,使用pcntl_wait和pcntl_waitpid来回收子进程. 子进程退出后,父进程没有及时回收,就会产生僵尸进程. 例1: <?php def ...
- 创建和修改主键 (SQL)
添加主键, ALTER TABLE [表名:OrderInfo] Add PRIMARY KEY ([列名:ProductID, UserID...]) 多个列则是组合主键 删除主键, ALTER ...