使用“bvp4c”Matlab函数求解微分方程组,错误 - >使用bvp4c错误输入参数太多

时间:2015-02-17 07:18:14

标签: matlab

我很难尝试使用“bvp4c”Maltab函数运行微分方程代码,总是发出相同的错误“使用bvp4c错误输入参数太多”我尝试了太多来自不同作品的其他代码但是结果是一样的!有什么帮助吗?代码如下所示:

function bvp4c
L=0.2;
xlow=0;
xhigh=L;
solinit=bvpinit(linspace(xlow,xhigh,20),[1 -1]);
sol=bvp4c(@bvp4ode,@bvp4bc,solinit);
xint=linspace(xlow,xhigh);
sxint=deval(sol,xint);
plot(xint,sxint(1,:))
%-----------------
function dydx=bvp4ode(x,y)
L=0.2;
V=1;
E0=8.85e-12;
Er1=2.64;
Er2=3.25;
K11=6.95e-12;
AE=Er2-Er1;
Vth=pi*(K11/(E0*AE))^1/2;
dydx=[y(2) (V^2/Vth^2)*(pi^2/L^2)*sin(y(1))*cos(y(1))];
%-----------------
function res=bvp4bc(ya,yb)
res=[ya(1) yb(1)];

1 个答案:

答案 0 :(得分:0)

您定义了一个函数bvp4c,并在该函数内部尝试调用内置的MATLAB bvp4c函数。这不起作用。定义与内置函数同名的函数时,MATLAB仅使用您的函数。这就是为什么你有一个错误Too many input arguments:你的bvp4c函数没有输入参数,而你在里面用三个参数调用它。

要解决此问题,请将您的功能重命名为例如callBvp4c或MATLAB未使用的任何其他名称。此外,请确保您还将文件重命名为callBvp4c.m,因为MATLAB通过其名称来处理函数。

我假设所有三个函数都保存在同一个.m文件中。这通常是可行的,但bvp4odebvp4bc只会在 callBvp4c内显示。当你调用sol=bvp4c(@bvp4ode,...)时,你给bvp4c函数一个函数句柄,但它找不到相应的函数。这就是错误所说的:它找不到bvp4ode。要解决此问题,您必须为每个函数创建一个单独的.m文件,并确保.m文件与该函数具有相同的名称。在您的情况下:callBvp4c.mbvpode.mbvp4bc.m