qingqing5638 发表于 2008-12-5 19:44

strcat函数求积分

我想求解y=sin(kx)*x^2+m的积分,x,y是变量,mk是参数,参考了例子,但是仍然不知道该怎样写出来,请帮帮忙
pp=
k=
m=
for i=1:length(k)
    for j=1:3
    fun=strcat('sin(',num2str(k(i)),'*x).*x.^2+num2str(m(j))');%%有问题
    y(i,j)=quadl(inline(fun),1,pp(i))
end

end

bainhome 发表于 2008-12-6 11:36

没看出来跟strcat有什么必然联系。
将下面的代码保存为独立M函数:function y=MainFuncForQuadl(x,p1,p2)
y=sin(p2*x).*x.^2+p1;在command windows中运行如下代码,或者新开一个M文件,将其保存成一个cell单元,然后按ctrl+enter:%% 测试积分函数的循环
pp=;
k=;
m=;
for i=1:3
    IntResults(i)=quadl(@MainFuncForQuadl,1,pp(i),[],[],m(i),k(i));
end
disp('积分结果如下:')
IntResults计算结果:积分结果如下:
IntResults =
    2.2462   -3.0585    0.7970补充两句:这种含参数的积分、微分方程、非线性优化函数,只要是含有function handle的,都可以用上述方法调用,另外现在MATLAB也提供了很多种思路求解此类问题,而且更加简洁,例如nested function、arrayfun等等,不过这些方式某人比较熟悉,我就不献丑了。:victory:

[ 本帖最后由 bainhome 于 2008-12-6 11:40 编辑 ]

beyondhxf 发表于 2008-12-6 15:04

不过这些方式某人比较熟悉,我就不献丑了。:victory:


谁啊?

ChaChing 发表于 2008-12-6 16:53

"将其保存成一个cell单元,然后按ctrl+enter", 什麽意思?
v6.5之前版本有此功能吗?

bainhome 发表于 2008-12-6 17:30

6.5很长时间没用过,印象不深了,但是如果随便开一个M文件,把我那段最前面带两个"%"的代码拷贝进去,单击代码中任何一处,如果没有整段代码出现淡黄色的底色,那恐怕这种代码cell的方式就属于6.5不具备的功能了。
页: [1]
查看完整版本: strcat函数求积分