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 没看出来跟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 编辑 ] 不过这些方式某人比较熟悉,我就不献丑了。:victory:
谁啊? "将其保存成一个cell单元,然后按ctrl+enter", 什麽意思?
v6.5之前版本有此功能吗? 6.5很长时间没用过,印象不深了,但是如果随便开一个M文件,把我那段最前面带两个"%"的代码拷贝进去,单击代码中任何一处,如果没有整段代码出现淡黄色的底色,那恐怕这种代码cell的方式就属于6.5不具备的功能了。
页:
[1]