声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1433|回复: 3

[编程技巧] 请教高手: 这样的方程怎么求解?

[复制链接]
发表于 2006-9-21 18:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
已知kx,ky都属于[0,pi],它们构成一个二维网格,格点数取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 编辑 ]
回复
分享到:

使用道具 举报

发表于 2006-9-22 06:56 | 显示全部楼层
mu表示的是一个向量?还是一个数值?

如果是后者可以尝试用fsolve求解,不过这个对初值有一定的要求,需要选择合适的初值

  1. function y=fun(mu)
  2. kx=0:pi/15:pi;
  3. ky=0:pi/15:pi;
  4. jk=0.2*(cos(kx)+cos(ky));
  5. wk=sqrt((mu*ones(size(jk))-jk).^2-1);
  6. y=sum((mu*ones(size(jk))-jk).*coth(wk)./wk)-2*16*16;
复制代码

  1. x = fsolve(@fun,0,optimset('Display','iter'))
复制代码


不过你这个函数非常的诡异
好像据大部分情况下的mu都是满足要求的
未命名.GIF

评分

1

查看全部评分

 楼主| 发表于 2006-9-22 09:11 | 显示全部楼层

请教高手

非常感谢ABBYABBIE的回答!
Mu是一个数值,而且应该是唯一的一个数值.
我想是不是可以这样处理:

先  kkx=linspace(0,pi,16);
   kky=linspace(0,pi,16);
然后再网格化:
    [kx,ky]=meshgrid(kkx,kky);
然后再进行计算。

还请高手帮忙指点一下。

[ 本帖最后由 xjzuo 于 2006-9-22 09:59 编辑 ]
 楼主| 发表于 2006-9-23 08:33 | 显示全部楼层

这样的方程怎么求解?

按ABBYABBIE的代码,检查了一下jk=0.2*(cos(kx)+cos(ky)),结果是一维向量而非矩阵.
我用meshgrid网格化后,计算了一下,发现很不稳定,初值的影响很大,这与事实不符.
另外,mu应当大于1.4,但计算结果多数小于1.4.Why?
还请高手帮忙分析一下.
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-12 16:58 , Processed in 0.072294 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表