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

Posted

技术标签:

【中文标题】使用“bvp4c”Matlab 函数求解微分方程组,错误 --> 错误使用 bvp4c 输入参数过多【英文标题】:Solve a System of Differential Equations using" bvp4c" Matlab fuction , Error -->Error using bvp4c Too many input arguments 【发布时间】:2015-02-17 07:18:13 【问题描述】:

我在尝试使用“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】:

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

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

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

【讨论】:

谢谢hbadert,我仍然有错误,这次是:未定义函数'bvp4ode'用于'double'类型的输入参数。 bvparguments 中的错误(第 106 行)testODE = ode(x1,y1,odeExtras:); bvp4c 错误(第 130 行)[n,npar,nregions,atol,rtol,Nmax,xyVectorized,printstats] = ... callBvp4c 错误(第 6 行)sol=bvp4c(@bvp4ode,@bvp4bc,solinit);跨度> 三个函数是否都定义在一个文件中? 好的,我在答案中添加了一段应该可以解决这个问题的段落 你好 hbaderts,这就是我所做的,我创建了一个文件夹,其中包含三个文件:callBvp4c.m、bvpode.m 和 bvp4bc.m.,对于 bvpode.m 和 bvp4bc.m.,我写道在文件函数 bvpode 和函数 bvp4bc 中,而对于 callBvp4c,我在设置路径后使用它来运行代码。但是,不幸的是,我遇到了同样的错误。我不知道我是否完全按照您的程序进行操作。

以上是关于使用“bvp4c”Matlab 函数求解微分方程组,错误 --> 错误使用 bvp4c 输入参数过多的主要内容,如果未能解决你的问题,请参考以下文章

matlab微分方程的解?

如何用matlab求解微分方程并画图

如何用matlab求解微分方程并画图

matlab求解常微分方程

matlab用龙格库塔法求解变系数常微分方程

MATLAB-求解微分方程(组)