MATLAB求解偏微分方程的方法是数值解法,软件自带有求解亥姆霍兹方程的例程,在命令行中输入edit

PDEDEMO2查看代码,在该例程里边界条件是一个带方形孔的单位圆。

最终得到的结果是:

椭圆型偏微分方程的一般形式为

使用assempde()函数来求解这类偏微分方程,调用格式为

求解的边界条件由函数b确定,网格类型由p、e和t确定,c、a、f是椭圆型偏微分方程的参数,对于亥姆霍兹方程,c=1,a=-k^2,f=0。

为了方便查看,我将源代码做了注释,并删掉动态图的部分:

%% 在有方形孔的单位圆中求解亥姆霍兹方程

% 用assempde函数解椭圆型偏微分方程

% function in the Partial Differential

Toolbox(TM).

%

% The Helmholtz equation, an elliptic equation

that is the time-independent

% form of the wave equation, is

%

% 亥姆霍兹方程的形式为‘-\Delta^2u-k^2u = 0’.

%

% Solving this equation allows us to compute the

waves reflected by a

% square object illuminated by incident waves that

are coming from the

% right.

%

Copyright 1994-2014 The MathWorks, Inc.

%% Problem Definition

% The following variables will define our

problem:

%%

% * |g|: A specification function that is used by

|initmesh|. For more

% information, please see the documentation pages

for |scatterg| and |pdegeom|.

% * |k|, |c|, |a|, |f|: The coefficients and

inhomogeneous term.

g = @scatterg; %定义求解域

k = 60; %入射波有60个波数

c = 1; %椭圆型偏微分方程的三个参数

a = -k^2;

f = 0;

%% Boundary Conditions

% 绘制边界和确定边界条件

% condition definition.

figure;

pdegplot(g, 'edgeLabels', 'on');

%绘制pde几何图

axis equal %坐标轴的长度设为相等

title 'Geometry With Edge Labels Displayed';

%设置标题

% Create a pde entity for a PDE with a single

dependent variable

numberOfPDE = 1;

pb = pde(numberOfPDE);

% Create a geometry entity

pg = pdeGeometryFromEdges(g);

bOuter = pdeBoundaryConditions(pg.Edges(5:8), 'g',

0, 'q', -60i); %定义边界条件

innerBCFunc = @(thePde, loc, state)

-exp(-1i*k*loc.x);

bInner = pdeBoundaryConditions(pg.Edges(1:4), 'u',

innerBCFunc);

pb.BoundaryConditions = [bOuter

bInner];

%%设置网格

% We need a fine mesh to resolve the waves. To

achieve this, we

% refine the initial mesh twice.

[p,e,t] = initmesh(g); %将区域分解成三角形网络

[p,e,t] = refinemesh(g,p,e,t);

%加密一个三角型网络

[p,e,t] = refinemesh(g,p,e,t);

%再次加密,形成的三角型网络更为紧密,但处理的数据更多

figure

pdemesh(p,e,t); %绘制pde网格图

axis equal

%% Solve for Complex Amplitude

% The real part of the vector |u| stores an

approximation to a real-valued solution of the

% Helmholtz equation.

u = assempde(pb,p,e,t,c,a,f); %用assempde函数求出来的解

%% Plot FEM Solution

figure

pdeplot(p,e,t,'xydata',real(u),'zdata',real(u),'mesh','off');

colormap(cool) %设置颜色区间,有'jet'(默认),'hsv','hot','cool','spring','gray'等

这个方法在确定边界条件上有点麻烦,还是建议用图形化的Partial Differential

Toolbox来解偏微分方程。

在命令行中输入pdetool打开编辑器:

在’pde’-‘pdespecification’里选择Elliptic,椭圆型偏微分方程,并设置好参数使之成为亥姆霍兹方程。

绘制边界图形:

放置一个小矩形和一个大圆,并将它们的关系改为相减,通过查看‘boundary’-‘boundary

mode’得到边界图

开始设置边界条件,选中小矩形,在’boundary’-‘specify boundary conditions’里设置,选择狄里克莱边界条件(Ay+By'=C,若B=0,A≠0,则称为第一类边界条件或狄里克莱(Dirichlet)条件;B≠0,A=0,称为第二类边界条件或诺依曼(Neumann)条件;A≠0,B≠0,则称为第三类边界条件或洛平(Robin)条件。)设置h=1,r=10,即在这个边界上解u=10。

选中大圆,设置边界条件为诺依曼条件,g=0,q=-50i。

然后绘制网格并加密:

绘出3D图得到

这样就绘制出了这个亥姆霍兹方程的解。

matlab解坐标方程,用MATLAB求解亥姆霍兹方程的方法相关推荐

  1. matlab在解线性方程组的应用,matlab解线性方程组线性方程组及MATLAB应用

    matlab解线性方程组线性方程组及MATLAB应用 1matlab 解线性方程组 线性方程组及 MATLAB 应用数值实验 线性方程组与 MATLAB 应用王1.实验目的:理解矩阵的范数与条件数. ...

  2. matlab解坐标方程,matlab程序(解泊松方程)

    求解泊松方程的 function Finite_element_tri(Imax) % 用有限元法求解三角形形区域上的Possion方程 Jmax=2*Imax; % 其中Imax Jmax分别表示x ...

  3. matlab解比例导引法方程,Matlab多式运算与方程求根.ppt

    Matlab多式运算与方程求根 Matlab多项式运算与方程求根 Matlab多项式运算 多项式四则运算 多项式四则运算(续) 多项式的导数:polyder 多项式求值 多项式求值(续) 多项式求根 ...

  4. matlab解带约束线性方程,Matlab求解带有约束条件的线性方程组

    研究了一会solve函数,发现Matlab对于带有约束条件的线性方程组可以用solve函数解答. 关于solve函数的全部用法,可以参考博客https://blog.csdn.net/ldj1208/ ...

  5. matlab解一元二次方程 函数,MATLAB函数文件(Function)和求解一元二次方程 来研究下吧...

    MATLAB函数文件是指可以定义输入参数和返回输出变量的M文件.本文介绍通过建立函数文件(Function)来求解一元二次方程的方法. 工具/材料 MATLAB Function 操作方法 01 第一 ...

  6. matlab解欠定方程组,matlab解欠定方程组

    0000 0.7408 0.4493 0.3329 0.2019 0.1003 ③欠定方程(系统中未知数的个数比方程式的个数多) 欠定方程的解都不唯一,Matlab会计算一组构成通解的 基解..... ...

  7. matlab 像素点坐标化,在matlab中进行地理坐标和像素坐标的相互转换

    clc;close all;clear; %地理坐标和像素坐标的相互转换 [pic,R]=geotiffread('boston.tif'); %读取带地理坐标信息的tif影像 [m,n,~]=siz ...

  8. matlab解算平差实例,MATLAB软件在测量平差解算中的应用

    MAT LAB 软件在测量平差解算中的应用 胡远新,赵奋军 (浙江省第七地质大队, 浙江丽水市 323000) 摘 要:阐述了4种经典的测量平差的解算过程,并结合平差实例,说明了MAT LAB 在测 ...

  9. 【MPC的前身方法二】(5.3)机器人动力学模型+反馈控制+齐次线性方程AX=B求解反作用力并优化方法

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 一.建立单刚体动力学模型(近似抽象模型) 二.建立单刚体模型的运动方 ...

最新文章

  1. win10 4步快速安装vue
  2. gx works怎么写入from指令_FANUC PMC 指令和应用
  3. JavaScript入门(part5)--数据类型转换
  4. 求最长回文串-从动态规划到马拉车之路(下)
  5. 二道Const,readonly 和 override, new的面试题
  6. 树莓派安装mysql并设置远程访问
  7. 1002: Prime Path
  8. 从小工到专家【借鉴】
  9. ubuntu 16.04安装vscode(visual-studio-code)操作步骤
  10. php钉钉机器人,PHP调用钉钉机器人
  11. 2021振兴杯参赛后感(部分writeup)
  12. 代码的坏味道之十七 :Inappropriate Intimacy(狎昵关系)
  13. 3D程序设计离不开各种坐标系统
  14. Google Play评论抓取
  15. Ice.ConnectFailedException
  16. 原生js由html创建节点,[js高手之路]HTML标签解释成DOM节点的实现方法
  17. RabbitMQ六种工作模式
  18. 软件工程之软件设计阶段
  19. 今日金融词汇---网格交易,是什么?
  20. 黑马程序员-java-小天教你使用eclipse

热门文章

  1. elementUI的table表格改变数据不更新问题解决
  2. HTML基本语法学习
  3. 基于ICMP的活跃主机发现技术
  4. 【Qt】实现一个计算器
  5. 计算异步FIFO的最小深度
  6. ssm+Vue计算机毕业设计学生在线请假管理系统(程序+LW文档)
  7. SBM模型测算代码,matlab,可算 sbm,超效率sbm,非期望sbm,非期望超效率sbm
  8. storm显微镜成像原理_超分辨率显微镜技术原理概述
  9. 只会复制粘贴?照样用python采集股票行情排行榜数据~
  10. 地下水环境监测技术规范中采样部分