Hello, I am struggling with a problem, which I am not sure if possible to solve with bvp4c. Since my problem involves many long equations, I will use a modified example from the MATLAB manual to illustrate it.
So let us say that I want to solve the system: y'' = -|y| + G(x) where the solution of G(x) is known, but its form is not. I.e., for x = [0 0.4 … 4], G(x) = [0 0.4 … 4]. In this example I have used G(x) = x for simplicity, however in my real problem it is a numerical solution from another bvp.
Here is the Code:
function test()x = linspace(0,4,11);Gx = [0 0.4 0.8 1.2 1.6 2 2.4 2.8 3.2 3.6 4]solinit = bvpinit(x,[1 0]);sol = bvp4c(@twoode,@twobc,solinit);y = deval(sol,x);plot(x,y(1,:))function dydx = twoode(x,y)dydx = [ y(2,:); -abs(y(1,:)) + Gx ];endfunction res = twobc(ya,yb)res = [ ya(1); yb(1) + 2 ];endend
When I run it, I get the error:
Error using vertcatDimensions of matrices being concatenated are not consistent.Error in test/twoode (line 12)dydx = [ y(2,:); -abs(y(1,:)) + Gx ];Error in bvparguments (line 105) testODE = ode(x1,y1,odeExtras{:});Error in bvp4c (line 130) bvparguments(solver_name,ode,bc,solinit,options,varargin);Error in test (line 7)sol = bvp4c(@twoode,@twobc,solinit);
I have also tried to transpose G(x). Then I get the error:
Error using bvparguments (line 108)Error in calling BVP4C(ODEFUN,BCFUN,SOLINIT): The derivative function ODEFUN should return a column vector of length 2.Error in bvp4c (line 130) bvparguments(solver_name,ode,bc,solinit,options,varargin);Error in test (line 7)sol = bvp4c(@twoode,@twobc,solinit);
I will appreciate any suggestions or comments.
Best Answer