|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
请教高手:PDE工具箱能解两个偏微分方程相互迭代求解吗
请教各位高手:PDE工具箱能解两个偏微分方程相互迭代求解吗?请求圆域上二维薛定谔方程泊松方程迭代自洽的MATLAB解法
眼看越来越快临近毕业了,老板催交论文时间很急!只是苦于遇到个技术性障碍一直没有解决,故在此恳请各位高手不吝赐教!小弟感激不尽!!!请教高手:
问题【1】——
PDE工具箱能解这两个偏微分方程相互迭代求解吗?(其中一个是本征值方程)能的话怎么实现?求圆域上二维薛定谔方程泊松方程迭代自洽的MATLAB解法,
这两个偏微分方程如下:
① 倒三角laplace算子*f(x,y)+V(x,y)*f(x,y)=E*f(x,y)E为本征值,这是薛定谔方程
② 倒三角laplace算子*V(x,y)=a+B(x,y)+c(E)*|f(x,y)|^2这是泊松方程
以上两个方程相互迭代。由①求出f(x,y)和E来代入②中。再由②求出V(x,y)代入①中,再由①重新求出f(x,y)和E来代入②中。。。。如此相互迭代直到相邻两次迭代的数值相差足够小则认为收敛。
求解区域是个圆域边界条件是圆周上f(x,y)和V(x,y)为0.其中a是常数,函数B(x,y)c(E)形式已知。倒三角laplace算子 是 偏比偏x平方+偏比偏y平方
现在遇到的最大的技术障碍是:
引申到
问题【2】——
末学发现PDE工具箱虽然很强大可视化也很好,但是不是只能解已知了“解析表达式”的系数的方程?换句话说只能求解一次已知系数的,不能连续解多次由上一次得出系数的?只能解单个偏微分方程,不能解两个相互迭代的偏微分方程?但这里由于要相互迭代,上一步PDE解出来的不可能是“解析”表达式的V(x,y),而是一堆离散的xi,yi数据点上的Vi“数值”的值,若这些离散数值能输出,请问这“数值”的系数【xi,yi,Vi】能代入作为下一个偏微分方程的系数用PDEtool来解吗?能的话怎么实现?
再引申到
问题【3】——
退一步想,如果能想办法找到二维曲面拟合函数把这些离散的xi,yi数据点上的Vi“数值”拟合出一个V(x,y)的表达式,但由于这个表达式预先并不知道,没法像这样一次性手动添加事先已知的表达式放在单引号里:
‘x.^2+y.^2’
用这样的pdetool代码来手动添加系数‘x.^2+y.^2’:
%PDEcoefficients:
pdeseteq(4,...
'2.0',...
'x.^2+y.^2',...%此处就是对应的系数,但问题是这个表达式事先不知道啊,怎么自动添加到pdeseteq里?
'10.0',...
'1.0',...
'0:10',...
'0.0',...
'0.0',...
'[0100]')
setappdata(pde_fig,'currparam',...
['2.0';...
'x.^2+y.^2';...%此处也是对应的系数,但问题是这个表达式事先不知道啊,怎么自动添加到setappdata里?
'10.0';...
'1.0'])
请问假如能拟合成功,能把此表达式自动让它生成函数表达式句柄,而自动添加到PDEtool的系数里【pdeseteq和setappdata】吗?
问题【1】【2】【3】中的任何一个技术障碍解决掉,整个问题都能解决掉
另外(最好用MATLAB的PDE函数解决,而不是差分法,因为一维的薛定谔方程泊松方程自洽用差分法的我是算过的,但二维极坐标下的用差分法各种细节实在太过繁琐麻烦也容易出错。。。。所以目前寄希望于MATLAB的PDE函数。而PDE工具箱用指令实现倒是大有希望,只可惜遇到以上的技术障碍,眼看毕业越来越近了,老板也催论文催的挺紧,可是在这个问题一直【困扰】耽搁了末学很久很久!迟迟得不到解决!恳请各位高手不吝赐教!末学在此感激不尽!!!末学邮箱cumtsyf03@163.com
财富不多,悬赏一半吧!若问题解决了末学悬赏您全部的财富都行哈!感激不尽!
PS:其中简单的只能运行一次的PDE代码如下:
function pdemodel
[pde_fig,ax]=pdeinit;
pdetool('appl_cb',1);
set(ax,'DataAspectRatio',[1 1 1]);
set(ax,'PlotBoxAspectRatio',[1.5 1 1]);
set(ax,'XLim',[-1.5 1.5]);
set(ax,'YLim',[-1 1]);
set(ax,'XTickMode','auto');
set(ax,'YTickMode','auto');
% Geometry description:
pdecirc(0,0,0.40305343511450353,'C1');
set(findobj(get(pde_fig,'Children'),'Tag','PDEEval'),'String','C1')
% Boundary conditions:
pdetool('changemode',0)
pdesetbd(4,...
'dir',...
1,...
'1',...
'0')
pdesetbd(3,...
'dir',...
1,...
'1',...
'0')
pdesetbd(2,...
'dir',...
1,...
'1',...
'0')
pdesetbd(1,...
'dir',...
1,...
'1',...
'0')
% Mesh generation:
setappdata(pde_fig,'Hgrad',1.3);
setappdata(pde_fig,'refinemethod','regular');
setappdata(pde_fig,'jiggle',char('on','mean',''));
pdetool('initmesh')
% PDE coefficients:
pdeseteq(4,...
'2.0',...
'x.^2+y.^2',...
'10.0',...
'1.0',...
'0:10',...
'0.0',...
'0.0',...
'[0 100]')
setappdata(pde_fig,'currparam',...
['2.0 ';...
'x.^2+y.^2';...
'10.0 ';...
'1.0 '])
% Solve parameters:
setappdata(pde_fig,'solveparam',...
str2mat('0','1000','10','pdeadworst',...
'0.5','longest','0','1E-4','','fixed','Inf'))
% Plotflags and user data strings:
setappdata(pde_fig,'plotflags',[1 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 0 1]);
setappdata(pde_fig,'colstring','');
setappdata(pde_fig,'arrowstring','');
setappdata(pde_fig,'deformstring','');
setappdata(pde_fig,'heightstring','');
% Solve PDE:
pdetool('solve')
总之:末学遇到的难点的关键点可以说就这么几点:
1. pdetool工具箱能否解 离散数值点形式的“系数” 的偏微分方程?能的话怎么实现?
2.二维离散数值点 拟合出表达式是否必须给出表达式形式?若不知道形式就没法拟合?
3.若2能,拟合后的表达式z=f(x,y)怎么自动导入到pdeseteq和setappdata中?
再次感谢各位高手!感激不尽! |
评分
-
1
查看全部评分
-
|