matlab pde瞄点,[转载]Matlab 中PDE一些函数的用法

Matlab 中PDE一些函数的用法

Matlab工具箱中任何功能都能用命令行的形式解决,对于一些复杂的问题,gui形式是解决不了的,这时就必须用命令行形式自己编程来解决问题。最近查看了一些pde工具箱中的函数,对两个函数的用法做一些说明。

PDE解决问题流程与一般的fam方法一样,先画出几何模型,再画网格,加边界、载荷,求解。MATLAB中的画几何命令有两种方式,其中一种方式是自己编写m文件,MATLAB中的命令是pdegeom,实际上这不是一个命令,而是要用户自己编写的一个几何m文件。在网上找了半天,也没见有人介绍过这个函数的用法,网上大多数只是列出pde中的函数而已,感叹一下….

这个函数名可以任意,假设为tt,参数有两个(bs,s)如果输入参数为0,1时,函数也必须要能有返回值。函数的意义为:

参数为0个,即没有参数时,返回边界总共段数。

参数为1个是,即只有bs,返回边界指定段的参变量范围。

参数为2个时,返回每段边界长度为s时的坐标。

函数参数意义bs表示几何边界段数,如矩形,边界为四段,三角开边界肯定为三段….s为第bs段时的长度,bs与s可以为向量,但是要一一对应,即bs为几个值,s也得为几个值。

下面具体来讲下函数如何实现当参数为2时的返回值。其实函数中实现的内容是指用一个参变量来控制指定段的边界坐标,也就是说对任意一段边界,上面的坐标设为参变量的函数,假设参变量为t,则对任一边界,坐标为(x(t),y(t)),参变量的范围由用户自己定义。由以上可以看出,参变量其实有无穷多种取法,看自己怎么设定而已。

例如:一个矩形,四条边,返回每一段对应长度的坐标,m文件为:

function [x,y]=tt(bs,s);

ux=1;

uy=1;

nbs=4;  //表示有四段

if nargin==0

x=nbs;

return

end

dl=[0,0,0,0; //参变量t范围,第一行为起始值,第二行为结束值,这两个值理论

3,1,2,3;

//可以任意设置,只要后面能对应求出边界上坐标(x(t),y(t))就行

1,1,1,1;

//第三行指面积在边界左侧

0,0,0,0,];

//第四行指面积在边界右侧

if nargin==1

x=dl(:,bs);

return;

end

x=zeros(size(s));

y=zeros(size(s));

[m,n]=size(bs);

if m==1 & n==1

bs=bs*ones(size(s));

end

ii=find(bs==1);

if ~isempty(ii)

x(ii)=interp1([dl(1,1),dl(2,1)],[0 3],s(ii));

y(ii)=interp1([dl(1,1),dl(2,1)],[0,0],s(ii));

//其实这一段是一条水平直线,

//x=(3-0)/(dl(2,1)-dl(1,1))*s(1)=s(1)

//y=(0-0)/(dl(2,1)-dl(1,1))*s(1)=0,

//如果dl(2,1)由3变成1,那么

//x(ii)=interp1([dl(1,1),dl(2,1)],[0 3],s(ii));结果也是一样的。

end

ii=find(bs==2);

if length(ii)

x(ii)=interp1([dl(1,2),dl(2,2)],[3*ux,3*ux],s(ii));

y(ii)=interp1([dl(1,2),dl(2,2)],[0,1],s(ii));

end

ii=find(bs==3);

if length(ii)

x(ii)=interp1([dl(1,3),dl(2,3)],[3*ux,-2*ux+2],s(ii));

y(ii)=interp1([dl(1,3),dl(2,3)],[uy,uy],s(ii));

end

ii=find(bs==4);

if ~isempty(ii)

x(ii)=interp1([dl(1,4),dl(2,4)],[0 0],s(ii));

y(ii)=interp1([dl(1,4),dl(2,4)],[uy,0],s(ii));

end

end

图形如下所示:

这个函数编制的关键是,函数内边界上的坐标((x(t),y(t))是用参变量表示的,返回值是求得边界任意长度时的坐标(x(t),y(t))值,明白这一点其它就很容易了。

另外,值得注意的是,函数所绘制图形必须是封闭的,否则之后划分网格会出错的。

MATLAB帮助文档中有一个曲线的例子,可以对照着看,之所以不用帮助文档上的例子是因为我在网上找了大半天,绝大多数都是对函数的罗列,还有一些就是对帮助文档的翻译,不知道是觉得太简单不想多说还是本来就没弄明白。

说了这么多也不知道讲清楚了没有,希望能对大家有帮助。

% pdegplot('tt'), axis equal

% [p,e,t]=initmesh('tt');

% pdemesh(p,e,t), axis equal

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB PDE 有限元方法(Finite Element Method,简称FEM)是MATLAB一种数值分析技术,用于求解偏微分方程(Partial Differential Equations,简称PDE)。 在MATLAB,有限元方法是通过将求解域(如二维或三维空间)分解为离散的子域,然后在每个子域上进行数值计算来求解PDE。这些子域被称为网格或者是四边形/三角形/四面体等形状的元素。网格的节点由有限元方法来确定。然后,通过构建一个描述系统行为的离散代数方程组来近似连续PDE的解。MATLABPDE Toolbox提供了一系列函数和工具,用于在有限元框架进行离散运算。 使用MATLAB PDE 有限元方法,我们可以求解各种类型的PDE,如椭圆型PDE、双曲型PDE和抛物型PDE等。这使得我们能够解决许多实际应用的问题,例如电磁场建模、结构力学分析和流体力学仿真等。 值得注意的是,MATLAB PDE 有限元方法的求解过程相对较为复杂,需要深入理解有限元方法的基本原理和数值计算的相关知识。此外,使用适当的网格和元素类型对结果的准确性也有重要影响。因此,在进行MATLAB PDE 有限元求解时,我们需要仔细选择合适的参数和方法,并进行调试和验证,确保结果的可靠性和精确性。 总的来说,MATLAB PDE 有限元方法是一种强大的数值分析工具,可以用于求解各种实际问题的偏微分方程。通过合理地设置网格和参数,并结合MATLABPDE Toolbox,我们可以方便地进行PDE的离散化计算和解析,得到满足实际需求的数值解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值