在Matlab中求解具有无限边界条件的微分方程

时间:2015-10-01 09:52:53

标签: matlab conditional-statements ode boundary infinity

我想解决以下等式:

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];

如果有人能解决这个问题,我会很高兴听到它!

0 个答案:

没有答案