matlab解坐标方程,用MATLAB求解亥姆霍兹方程的方法
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求解亥姆霍兹方程的方法相关推荐
- matlab在解线性方程组的应用,matlab解线性方程组线性方程组及MATLAB应用
matlab解线性方程组线性方程组及MATLAB应用 1matlab 解线性方程组 线性方程组及 MATLAB 应用数值实验 线性方程组与 MATLAB 应用王1.实验目的:理解矩阵的范数与条件数. ...
- matlab解坐标方程,matlab程序(解泊松方程)
求解泊松方程的 function Finite_element_tri(Imax) % 用有限元法求解三角形形区域上的Possion方程 Jmax=2*Imax; % 其中Imax Jmax分别表示x ...
- matlab解比例导引法方程,Matlab多式运算与方程求根.ppt
Matlab多式运算与方程求根 Matlab多项式运算与方程求根 Matlab多项式运算 多项式四则运算 多项式四则运算(续) 多项式的导数:polyder 多项式求值 多项式求值(续) 多项式求根 ...
- matlab解带约束线性方程,Matlab求解带有约束条件的线性方程组
研究了一会solve函数,发现Matlab对于带有约束条件的线性方程组可以用solve函数解答. 关于solve函数的全部用法,可以参考博客https://blog.csdn.net/ldj1208/ ...
- matlab解一元二次方程 函数,MATLAB函数文件(Function)和求解一元二次方程 来研究下吧...
MATLAB函数文件是指可以定义输入参数和返回输出变量的M文件.本文介绍通过建立函数文件(Function)来求解一元二次方程的方法. 工具/材料 MATLAB Function 操作方法 01 第一 ...
- matlab解欠定方程组,matlab解欠定方程组
0000 0.7408 0.4493 0.3329 0.2019 0.1003 ③欠定方程(系统中未知数的个数比方程式的个数多) 欠定方程的解都不唯一,Matlab会计算一组构成通解的 基解..... ...
- matlab 像素点坐标化,在matlab中进行地理坐标和像素坐标的相互转换
clc;close all;clear; %地理坐标和像素坐标的相互转换 [pic,R]=geotiffread('boston.tif'); %读取带地理坐标信息的tif影像 [m,n,~]=siz ...
- matlab解算平差实例,MATLAB软件在测量平差解算中的应用
MAT LAB 软件在测量平差解算中的应用 胡远新,赵奋军 (浙江省第七地质大队, 浙江丽水市 323000) 摘 要:阐述了4种经典的测量平差的解算过程,并结合平差实例,说明了MAT LAB 在测 ...
- 【MPC的前身方法二】(5.3)机器人动力学模型+反馈控制+齐次线性方程AX=B求解反作用力并优化方法
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 一.建立单刚体动力学模型(近似抽象模型) 二.建立单刚体模型的运动方 ...
最新文章
- win10 4步快速安装vue
- gx works怎么写入from指令_FANUC PMC 指令和应用
- JavaScript入门(part5)--数据类型转换
- 求最长回文串-从动态规划到马拉车之路(下)
- 二道Const,readonly 和 override, new的面试题
- 树莓派安装mysql并设置远程访问
- 1002: Prime Path
- 从小工到专家【借鉴】
- ubuntu 16.04安装vscode(visual-studio-code)操作步骤
- php钉钉机器人,PHP调用钉钉机器人
- 2021振兴杯参赛后感(部分writeup)
- 代码的坏味道之十七 :Inappropriate Intimacy(狎昵关系)
- 3D程序设计离不开各种坐标系统
- Google Play评论抓取
- Ice.ConnectFailedException
- 原生js由html创建节点,[js高手之路]HTML标签解释成DOM节点的实现方法
- RabbitMQ六种工作模式
- 软件工程之软件设计阶段
- 今日金融词汇---网格交易,是什么?
- 黑马程序员-java-小天教你使用eclipse