潮音洞主 发表于 2011-6-21 10:54

菜鸟求助,含参积分那个贴看了,不是很懂,求指点。

本帖最后由 潮音洞主 于 2011-6-21 13:36 编辑

clear all
k=linspace(1,5);
for i=1:length(k)
    kk=k(i);
    fun=inline(subs('sin(k*x)*x^2','k',kk));
    y(i)=quadl(fun,1,5);
end
hold on;
plot(k,y,'r')

求教,k=linspace(1,5); kk=k(i);和inline()函数的作用不甚清楚。
我想我自己的公式代替'sin(k*x)*x^2'吧?积分限怎么改呢?我的积分限是0到350000.
谢谢!


rocwoods 发表于 2011-6-21 15:08

本帖最后由 rocwoods 于 2011-6-21 15:09 编辑

不要再用inline这种老掉牙又低效的函数结构,效率低还不如匿名函数好使。 fun = @(k)@(x) sin(k*x).*x.^2;
k=linspace(1,5);
y = zeros(size(k));
for i = 1:length(k)
y(i) = quadgk(fun(k(i)),0,350000);
end
或者用arrayfun,更简洁,一句话: y = arrayfun(@(k)quadgk(@(x) sin(k*x).*x.^2,0,350000),linspace(1,5));

潮音洞主 发表于 2011-6-21 15:27

回复 2 # rocwoods 的帖子

非常感谢,可惜用的matlab7.0,没有quadgk。{:{33}:}
请问k=linspace(1,5);是什么作用?1,5何意?
页: [1]
查看完整版本: 菜鸟求助,含参积分那个贴看了,不是很懂,求指点。