请教高手: 这样的方程怎么求解?
已知kx,ky都属于,它们构成一个二维网格,格点数取N=16X16,每一个(kx,ky)对应网格上一点;又知 Jk=0.2*(cos(kx)+cos(ky)); wk=sqrt((mu-Jk)^2-1);
现在要求求解方程2*N=sum((mu-Jk)*coth(wk)/wk),解出mu的值.
注:其中sum表示对kx,ky求和.
还请高手帮忙指点一下.
[ 本帖最后由 xjzuo 于 2006-9-21 18:46 编辑 ] mu表示的是一个向量?还是一个数值?
如果是后者可以尝试用fsolve求解,不过这个对初值有一定的要求,需要选择合适的初值
function y=fun(mu)
kx=0:pi/15:pi;
ky=0:pi/15:pi;
jk=0.2*(cos(kx)+cos(ky));
wk=sqrt((mu*ones(size(jk))-jk).^2-1);
y=sum((mu*ones(size(jk))-jk).*coth(wk)./wk)-2*16*16;
x = fsolve(@fun,0,optimset('Display','iter'))
不过你这个函数非常的诡异
好像据大部分情况下的mu都是满足要求的
请教高手
非常感谢ABBYABBIE的回答!Mu是一个数值,而且应该是唯一的一个数值.
我想是不是可以这样处理:
先 kkx=linspace(0,pi,16);
kky=linspace(0,pi,16);
然后再网格化:
=meshgrid(kkx,kky);
然后再进行计算。
还请高手帮忙指点一下。
[ 本帖最后由 xjzuo 于 2006-9-22 09:59 编辑 ]
这样的方程怎么求解?
按ABBYABBIE的代码,检查了一下jk=0.2*(cos(kx)+cos(ky)),结果是一维向量而非矩阵.我用meshgrid网格化后,计算了一下,发现很不稳定,初值的影响很大,这与事实不符.
另外,mu应当大于1.4,但计算结果多数小于1.4.Why?
还请高手帮忙分析一下.
页:
[1]