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命令里面?
麻烦高手指教下,先谢了!
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
矩阵维数不对