我很难尝试使用“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)];
答案 0 :(得分:0)
您定义了一个函数bvp4c
,并在该函数内部尝试调用内置的MATLAB bvp4c
函数。这不起作用。定义与内置函数同名的函数时,MATLAB仅使用您的函数。这就是为什么你有一个错误Too many input arguments
:你的bvp4c
函数没有输入参数,而你在里面用三个参数调用它。
要解决此问题,请将您的功能重命名为例如callBvp4c
或MATLAB未使用的任何其他名称。此外,请确保您还将文件重命名为callBvp4c.m
,因为MATLAB通过其名称来处理函数。
我假设所有三个函数都保存在同一个.m文件中。这通常是可行的,但bvp4ode
和bvp4bc
只会在 callBvp4c
内显示。当你调用sol=bvp4c(@bvp4ode,...)
时,你给bvp4c
函数一个函数句柄,但它找不到相应的函数。这就是错误所说的:它找不到bvp4ode
。要解决此问题,您必须为每个函数创建一个单独的.m文件,并确保.m文件与该函数具有相同的名称。在您的情况下:callBvp4c.m
,bvpode.m
和bvp4bc.m
。