Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 什么是;输入参数太多“;什么意思?_Matlab - Fatal编程技术网

Matlab 什么是;输入参数太多“;什么意思?

Matlab 什么是;输入参数太多“;什么意思?,matlab,Matlab,我试图用quadtx在matlab中计算一个函数,但是我的代码给了我一个“输入参数太多”的错误,我不确定是什么错了?我是否为varargin输入了一个错误的值,或者是其他值 我在MATLAB命令提示符中输入: >f = @(t)(1./sin(sqrt(abs(t)))); >quadtx(f, -1, 2, 1.e-6, 3) 但收到以下信息: 使用@(t)(1./sin(sqrt(abs(t))时出错) 输入参数太多 quadtx(第29行)中出现错误 fa=feval(F,a

我试图用quadtx在matlab中计算一个函数,但是我的代码给了我一个“输入参数太多”的错误,我不确定是什么错了?我是否为varargin输入了一个错误的值,或者是其他值

我在MATLAB命令提示符中输入:

>f = @(t)(1./sin(sqrt(abs(t))));
>quadtx(f, -1, 2, 1.e-6, 3)
但收到以下信息:

使用
@(t)(1./sin(sqrt(abs(t))时出错)

输入参数太多

quadtx
(第29行)中出现错误
fa=feval(F,a,varargin{:})

以下是MATLAB
quadtx
代码:

function [Q,fcount] = quadtx(F,a,b,tol,varargin)
%QUADTX  Evaluate definite integral numerically.
%   Q = QUADTX(F,A,B) approximates the integral of F(x) from A to B
%   to within a tolerance of 1.e-6.  F is a string defining a function
%   of a single variable, an inline function, a function handle, or a
%   symbolic expression involving a single variable.
%
%   Q = QUADTX(F,A,B,tol) uses the given tolerance instead of 1.e-6.
%
%   Arguments beyond the first four, Q = QUADTX(F,a,b,tol,p1,p2,...),
%   are passed on to the integrand, F(x,p1,p2,..).
%
%   [Q,fcount] = QUADTX(F,...) also counts the number of evaluations
%   of F(x).
%
%   See also QUAD, QUADL, DBLQUAD, QUADGUI.
% Make F callable by feval.
if ischar(F) & exist(F)~=2
   F = inline(F);
elseif isa(F,'sym')
   F = inline(char(F));
end 
% Default tolerance
if nargin < 4 | isempty(tol)
   tol = 1.e-6;
end
% Initialization
c = (a + b)/2;
fa = feval(F,a,varargin{:});
fc = feval(F,c,varargin{:});
fb = feval(F,b,varargin{:});
% Recursive call 
[Q,k] = quadtxstep(F, a, b, tol, fa, fc, fb, varargin{:});
fcount = k + 3;
% ---------------------------------------------------------
function [Q,fcount] = quadtxstep(F,a,b,tol,fa,fc,fb,varargin)
% Recursive subfunction used by quadtx.
h = b - a; 
c = (a + b)/2;
fd = feval(F,(a+c)/2,varargin{:});
fe = feval(F,(c+b)/2,varargin{:});
Q1 = h/6 * (fa + 4*fc + fb);
Q2 = h/12 * (fa + 4*fd + 2*fc + 4*fe + fb);
if abs(Q2 - Q1) <= tol
   Q  = Q2 + (Q2 - Q1)/15;
   fcount = 2;
else
   [Qa,ka] = quadtxstep(F, a, c, tol, fa, fd, fc, varargin{:});
   [Qb,kb] = quadtxstep(F, c, b, tol, fc, fe, fb, varargin{:});
   Q  = Qa + Qb;
   fcount = ka + kb + 2;
end
函数[Q,fcount]=quadtx(F,a,b,tol,varargin)
%用数值方法计算定积分。
%Q=QUADTX(F,A,B)近似于F(x)从A到B的积分
%在1.e-6的公差范围内。F是定义函数的字符串
%单个变量、内联函数、函数句柄或
%包含单个变量的符号表达式。
%
%Q=QUADTX(F、A、B、tol)使用给定公差,而不是1.e-6。
%
%前四个参数之外的参数,Q=QUADTX(F,a,b,tol,p1,p2,…),
%传递给被积函数F(x,p1,p2,…)。
%
%[Q,fcount]=QUADTX(F,…)还统计评估的数量
%F(x)的性质。
%
%另请参见QUAD、QUADL、DBLQUAD、QUADGUI。
%使F可由feval调用。
如果ischar(F)&存在(F)~=2
F=内联(F);
elseif isa(F,'sym')
F=内联(字符(F));
结束
%默认公差
如果nargin<4,则为空(tol)
tol=1.e-6;
结束
%初始化
c=(a+b)/2;
fa=feval(F,a,varargin{:});
fc=feval(F,c,varargin{:});
fb=feval(F,b,varargin{:});
%递归调用
[Q,k]=quadtxstep(F,a,b,tol,fa,fc,fb,varargin{:});
fcount=k+3;
% ---------------------------------------------------------
函数[Q,fcount]=quadtxstep(F,a,b,tol,fa,fc,fb,varargin)
%quadtx使用的递归子函数。
h=b-a;
c=(a+b)/2;
fd=feval(F,(a+c)/2,varargin{:});
fe=feval(F,(c+b)/2,varargin{:});
Q1=h/6*(fa+4*fc+fb);
Q2=h/12*(fa+4*fd+2*fc+4*fe+fb);
如果abs(Q2-Q1)
f=@(t)(1./sin(sqrt(abs(t)))
只有一个输入变量
t
。 删除
quadtx(f,-1,2,1.e-6,3)
-->
quadtx(f,-1,2,1.e-6)

varargin的含义

三角函数通常用附加参数
n
定义,即 它们的周期性。 例如
fn(x)=sin(2*n*pi*x)
。 要评估此函数,您需要首先修复
n
,假设
n=3
, 然后计算f3(x)

总之

例如,要在
quadtx
中使用第四个
varargin
,请更新
f

f=@(x,n)=(1./sin(n*sqrt(abs(t)))
-->
quadtx(f,-1,2,1.e-6,3)

作为参考,您可以检查贝塞尔函数