在 MATLAB 中解决冷凝物密度问题

计算科学 matlab 量子力学 积分方程
2021-12-24 03:23:17

我想解决n0对于固定值n,让我们说n=1

n=n0+121/21/2dq(eq+Un0ω1)
在哪里eq=2[1cos(2πq)]ω=(eq2+2Un0eq)1/2

然后我想在 Un0. 以下是MATLAB中的代码。

 eq = @(q) 2*(1-cos(2*pi*q));
 hq = @(q,U,n0) ((eq(q))^2+2*U*n0*(eq(q))).^(1/2);
 y = @(q,U,n0) (((eq(q))+(U*n0))/hq(q,U,n0))-1;
 a = -0.5;
 b = 0.5;
 v = @(U,n0) quad(@(q) y(q,U,n0),a,b);
 cv =@(U,n0) n0+(0.5*v)-1;
 n0 = 0.1;
 options = optimset('Display', 'iter'); 
 n = @(U) fsolve(vv,n0,0.1);
 U = 0:0.1:20;
 plot(U,n(U))

编辑 2 代码更正编辑 1。

编辑 3

但我仍然面临以下错误:

错误使用 ^ 输入必须是标量和方阵。要计算元素 POWER,请改用 POWER (.^)。

@(q,n0)((eq(q))^2+2*U n0 (eq(q))) 中的错误。^0.5

@(q,n0)(((eq(q))+(U*n0))/hq(q,n0))-1 中的错误

@(q)y(q,n0) 中的错误

quad 中的错误(第 72 行)y = f(x, varargin{:});

@(n0)quad(@(q)y(q,n0),a,b) 中的错误

@(n0)n0+(0.5*v(n0))-1 中的错误

simulv1 中的错误(第 12 行) n = fsolve(cv(n0),n0,0.1,options);

0个回答
没有发现任何回复~