Errors in passing a constant to a function in boundary value problem (bvp4c function)

1 view (last 30 days)
Hello all, I am trying to solve a boundary value problem and I wish to pass value of variable E to odefunction() and bcfunction(), instead of declaring E separately in 2 different functions. Anyone has any suggestion? Or can't we pass constants for the function?
function [] = bvp3
% AEd2y/dx2 + 10Ax = 0; 0<x<2
%y(0)=1e-4, E*(dy/dx)=10 x=2
clc;
clear all;
close all;
%%function script
xmin=0;
xmax=2;
A=100;
%global E
E=2e5;
solinit = bvpinit(linspace(xmin,xmax,100),[-5,5]);
solution=bvp4c(@odefunction,@bcfunction,solinit);
xvar=linspace(xmin,xmax,1000);
desolution=deval(solution,xvar);
figure(1);
plot(xvar,desolution(1,:),'-k');
hold on;
plot(xvar,desolution(2,:),':k');
hold off;
title('sol');
legend('y','d^{2}y/dx^{2}');
xlabel('x');
ylabel('y');
end
%%ODE function
function odevector = odefunction(x,y,E)
%E=2e5;
odevector = [y(2),(-10/E)*x];
end
%%BC function
function bcvector = bcfunction(ya,yb,E)
%E=2e5;
bcvector = [ya(1)-1e-4,yb(2)-(10/E)];
end

Accepted Answer

Mischa Kim
Mischa Kim on 25 Mar 2014
Edited: Mischa Kim on 25 Mar 2014
Amit, replace this one command
solution = bvp4c(@odefunction,@bcfunction,solinit);
by
options = [];
solution = bvp4c(@odefunction,@bcfunction,solinit,options,E);
Of course, you can use options to control the solver via bvpset.
  3 Comments
Mischa Kim
Mischa Kim on 26 Mar 2014
I just checked, the function works as expected with my suggested changes with the lastest releases all the way back to R2012b, see attachment.
  • What release are you working with?
  • What're the error messages?
Amit Kumar
Amit Kumar on 26 Mar 2014
Hi Mischa, Thanks for your reply. Your method did work. It was mistake from my side. Thanks a lot!

Sign in to comment.

More Answers (0)

Tags

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!