matlab编了个小命令,出现错误,请高手看下?

来源:百度知道 编辑:UC知道 时间:2024/06/08 07:24:52
x=0:10;
f=inline('exp(x.^2)/(x.^2)');
quad(f,0,1);下面是错误提示
??? Index exceeds matrix dimensions.
还有一个问题就是能不能把这个积分函数编到lsqcurvefit命令里面?
麻烦高手指教下,先谢了!

换个数值积分的函数,用quadv或者quadl。

另外你的积分限是0到1的话算出来的是无限大了,用数值积分一般都会出错。

所以最好换个下限,用0的话会出错。

还有一种办法,可以用符号积分
>> y=int('exp(x^2)/(x^2)',0,1)

y =

Inf

>> y=int('exp(x^2)/(x^2)',0.1,1)

y =

-exp(1)-i*pi^(1/2)*erf(i)+10*exp(1/100)+i*pi^(1/2)*erf(1/10*i)

>> double(y)

ans =

10.107

>> f=inline('exp(x.^2)/(x.^2)');
>> quadv(f,0.1,1)

ans =

10.107

>> quadv(f,0,1)
Warning: Divide by zero.
> In inlineeval at 13
In inline.feval at 34
In quadv at 48
Error in ==> inline.feval at 35
end

x=0:10; %0 1 2 ... 10
f(1)=exp(1);
for i=2:11 %1 2 ... 10
f(i)=exp(x(i)^2)/(x(i)^2);
end
sum(f)
答案为:
ans =

2.6881e+041

矩阵维数不对