- 积分
- 15
- 注册时间
- 2013-8-29
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2014-8-28 00:31:14
|
显示全部楼层
来自 加拿大
你代码的错误主要在于匿名函数的定义部分。去掉文件读写,直接修改你的代码为(修改部分已经注释):
A = linspace(1.0,200.0);
eta = zeros(size(A));
for n=1:length(A);
a=A(n);
q1=@(x)(a-x).*(x+1.0); % 函数定义 @(x)
q2=@(x)sqrt(log(x+1.0)); % 函数定义 @(x)
fun1=@(x)q1(x).*q2(x); % 函数定义
q3=quadl(fun1,0,a);
fun2=@(x)q1(x)./q2(x); % 函数定义
q4=quadl(fun2,0,a);
eta(n)=2.0*q3/q4;
end
plot(A,eta)
另外,这类问题如果想高效计算的话,matlab提供了向量化积分解决方案(只要版本不低于2012a),效率为大幅度提升
a = linspace(1,200);
f1 = @(x) (a-x).*(x+1).*sqrt(log(x+1));
f2 = @(x) (a-x).*(x+1)./sqrt(log(x+1));
eta = 2*integral(@(x) f1(a*x).*a,0,1,'ArrayValued',true)./integral(@(x) f2(a*x).*a,0,1,'ArrayValued',true);
plot(a,eta) |
评分
-
1
查看全部评分
-
|