Когда проблема граничного значения и граничные условия записываются в разные файлы и вызывается в функции bvp4c, кажется, что переменные, названные в этих внешних файлах, не распознаются.Как глобальные переменные могут использоваться в bvp4c в Matlab?
Чтобы уточнить, позвольте привести в качестве примера проблему, с которой я сейчас работаю. Основной файл
clearvars
% Creating a grid of x values for MATLAB to solve on and an initial guess for y(x) and y'(x)
solinit=bvpinit(linspace(0,1,100),[1 0]); % solinit = bvpinit(x,yinit) forms the initial guess for a boundary value problem solver.
solution=bvp4c(@bvp,@bc,solinit);
plot(solution.x,solution.y);
краевая probem (bvp.m) является
% Diff*y''+2*i*Epsilon*y=0
% Diff*y2'+2*i*Epsilon*y1=0, y2=y1'
% y1'= y2
% y2'=-2*i*Epsilon/Diff*y1
function yprime=bvp(t,y)
% Treating y1,y2 as components of y, [y1,y2], yprime as their derivative, [y1',y2']
yprime=[y(2);-2*i*Epsilon/Diff*y(1)];
и граничные условия (bc.m) задаются
% Boundary conditions
function res=bc(y0,y1)
% Return the residue
res=[-Ratio*y0(2)-y1(1);Ratio*y1(2)-y0(1)]; % The vectors y0 and y1 are the solutions at x=0 and x=1
При замене переменные Diff
, Epsilon
и Ratio
на 1, 3 и 100 соответственно, есть хорошее решение, данное на графике.
При написании этого с переменными, даже при добавлении
global Diff Epsilon Ratio
к главному файлу или ко всем файлам, я получаю ошибки, такие как
Undefined функции или переменной «Эпсилон ».
Предпочтительным способом обработки переменных было бы определить их один раз в основном файле. Есть ли способ сделать это?
«При замене переменных» «BC» и? ['bvp4c'] (http://www.mathworks.com/help/matlab/ref/bvp4c.html) - это численный решатель. Все параметры должны иметь определение для работы решателя. Он читается так, как будто вы используете ['global'] (http://www.mathworks.com/help/matlab/ref/global.html?refresh=true) правильно; хотя вы можете взглянуть на [более элегантный способ] (http://www.mathworks.com/help/matlab/math/parameterizing-functions.html) совместного использования данных между функциями. – TroyHaskin