我想解决以下等式:
f''+tau(x)*f+f^3=0
f'(0)=0
f(inf)=1
tau(x)
可以是x
的任何函数。问题是将边界条件f(inf)=1
转换为matlab。我的第一个解决方案,通过阅读网络上的不同帖子,是通过一个大的有限数来近似无穷大,但它没有给出令人满意的解决方案。这是我使用的代码:
function f = solve_GL(tau)
options = bvpset('RelTol', 1e-5);
Xstart = 0;
Xend = 1000;
solinit = bvpinit(linspace(Xstart, Xend, 50), [0, 1]);
sol = bvp4c(@twoode, @twobc, solinit, options);
x = linspace(Xstart,Xend);
y = deval(sol,x);
plot(x,y(1,:))
function dydx = twoode(x,y)
dydx = [y(2); (-heaviside(x-2)+1).*y(1)+y(1).^3];
function res = twobc(ya,yb)
res = [ya(2); yb(1)-1];
如果有人能解决这个问题,我会很高兴听到它!