You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab bvp5c求解含特征值边值问题时特征值不一致的求助

含特征值的边值问题求解求助

我正在参考一篇论文,用Matlab的bvp5c函数求解含特征值的边值问题。控制方程为二阶常微分方程,其中α、At为常数,Q(σ)是已知的误差函数,ϕ为未知函数,Ψ是待求的特征值;边界条件设置为左侧固定函数值与导数值,右侧需满足渐近衰减条件(有时需调整右侧边界条件)。

多数情况下代码运行结果和论文图1趋势相似,但渐近值和论文结果不符。最关键的问题是:修改特征值初始猜测值Psi1时,求解结果差异极大——比如初始猜1时,渐近值约11;改成11时,渐近值变成13左右;设为0时,渐近值仅8.5。

我试过用更熟悉的Mathematica求解,但它始终返回Psi的线性解,得不到渐近行为。下面是我的Matlab代码,恳请各位提供解决建议或替代方法:

eigenvalues0 = zeros(1, 30);
global alpha;
global At;
options = bvpset('RelTol',1e-5,'AbsTol',1e-5);
At = 0;
for i=1:30    
alpha=1/i;
Psi1 = 1;
solinit = bvpinit(linspace(-3,6,30000),@mat4init,Psi1);
sol = bvp5c(@mat4ode, @mat4bc, solinit,options);
 eigenvalues0(1,i) = sol.parameters;
end
figure(Color="white");
plot(eigenvalues0);
grid on;
legend('0','0.243','0.5','0.843','0.999','FontSize', 14)
xlabel('\alpha^{-1}','FontSize', 14);
ylabel('\Psi','FontSize', 14);
set(gca, 'FontSize', 14);
function dydx = mat4ode(x,y,Psi1) % equation being solved
global alpha;
global At;
dydx = [y(2)
        (-alpha^2*At*2/sqrt(pi)*exp(-x.^2)*y(2)+(1+At*erf(x)-alpha*Psi1*2/sqrt(pi)*exp(-x.^2))*y(1))/(alpha^2*(1+At*erf(x)))];
end
function res = mat4bc(ya,yb,Psi1) % boundary conditions
global alpha;
res = [ya(2)-1/alpha*exp(-3/alpha)
       abs(yb(1))+abs(yb(2))
       %yb(2)
       ya(1)-exp(-3/alpha)];
end
function yinit = mat4init(x) % initial guess function
global alpha;
yinit = [exp(-abs(x)/alpha)
        -sign(x)*1/alpha*exp(-abs(x)/alpha)];
end

内容的提问来源于stack exchange,提问作者Repentanze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 11:25:08