我有两个函数 f1 和 f2,其中 f1 是未知具体形式的自定义函数,但可以通过给定点可以生成函数值,f2则是已知的具体形式的函数,现在我想对两个函数的乘积 f1*f2 在区间 [a,b]上求数值积分。
本来我想用函数 quadl 来实现的,如下
F2 = @(zz2) rsplinec(z2,zz2,order,knots,k).*normpdf(zz2,0.5+4*(te(i)-0.5)^3,sqrt(0.04*te(i)^2-0.06*te(i)+0.25));
H2(i,k) = quadl(F2,z2l,z2r);
(上面是程序的一部分,其中rsplinec 是自定义函数),运行后报如下错误:
??? Error using ==> reshape
To RESHAPE the number of elements must not change.
Error in ==> spcol at 116
nrows = length(tau); tau = reshape(tau,1,nrows);
Error in ==> rsplinec at 16
Amatrix = spcol(tt2,m,ttt);
Error in ==>
@(zz2)rsplinec(z2,zz2,order,knots,k).*normpdf(zz2,0.5+4*(te(i)-0.5)^3,sqrt(0.04*te(i)^2-0.06*te(i)+0.25))
Error in ==> quadl at 70
y = feval(f,x,varargin{:}); y = y(:).';
Error in ==> sp4 at 39
H2(i,k) = quadl(F2,z2l,z2r);
根据以上错误和我对自定义函数 rspline 的测试,我理解上面的错误的意思是:由于 quadl 函数是首先在区间 [a,b]上等间距的生产一系列点,然后根据一定的规则来对积分进行数值逼近。但不巧的是自定义函数 rspline 的第二个参数如果是等间距产生的话,就会报如下部分的错误
??? Error using ==> reshape
To RESHAPE the number of elements must not change.
Error in ==> spcol at 116
nrows = length(tau); tau = reshape(tau,1,nrows);
Error in ==> rsplinec at 16
Amatrix = spcol(tt2,m,ttt);
因此,在这种情况下,是不是不可以用 quadl 函数了? 如果不可以用,我该怎么做呢?求指点,先谢谢了!