matlab想用ode45求解一个二阶常微分方程
想用ode45求解一个二阶常微分方程,但边界条件是y(0)=某值,y(10)=某值,这应该怎么去求解?
1、首先我们应该理清ode函数应用条件,由于二阶常微分方程的解有两个变量(y和y'),一般来说,给出的初始条件为 y(0)=某值和y'(0)=某值,这类问题是适合用ode函数求解。
2、对于题主提出另一种初始条件(同一变量的),即y(0)=某值,y(10)=某值,则不能用ode函数,而应使用bvp4c四阶边界值问题 求解函数,求解格式
sol = bvp4c(odefun,bcfun,solinit)
3、下面举例说明bvp4c函数使用方法
求微分方程 y′′+y=0,y(0)=0,y(π/2)=2。
第一步:自定义微分方程函数,其内容
function dydx = bvpfcn(x,y)
dydx = [y(2) -y(1)];
第二步:自定义微分方程边界条件函数,其内容
function res = bcfcn(ya,yb)
res = [ya(1), yb(1)-2];
第三步:创建初始估计值函数
function g = guess(x)
g = [sin(x), cos(x)];
第四步:使用bvpinit函数,得出边界值问题求解器的初始估计值
第五步:使用bvp4c函数求解方程
sol = bvp4c(@bvpfcn, @bcfcn, solinit);
第六步:使用plot函数
对解进行绘图
plot(sol.x, sol.y, '-o')
4、完善上述代码,运行结果如下。