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
Best Answer