参数传递后如何产生新的函数表达式进行quadl数值积分
对不起,我没有把我的问题描述清楚。其实这个问题应该是参数传递然后产生新的函数表达式的问题。比如,在主程序中我有一个参数t=1:1001; 然后我要积分quadl(@(x)fun(x,t),0,1), 由于大家都知道matlab的数值积分是不能带符号的,也就是matlab并不会主动赋值给t, 如果运行的话matlab一般会提示''t is undefined'. 这个时候我们需要用feval给这个函数赋上t的值(e.g. fa=feval(@fun,x,t)),然后fa才只含有x一个变量其他都是数值。现在就可以对fa用quadl进行数值积分了,但是fa并不是一个函数表达式,而是一个变量,如何把fa转换成一个函数表达式从而可以进行quadl数值积分呢??请注意fa是通过计算求的,并不知道具体的表达式。
[ 本帖最后由 longlongyang 于 2009-2-23 22:35 编辑 ] quadl/inline这些函数, 个人都不熟!
可否给个简易程序, 有空试试看!
回复 楼主 longlongyang 的帖子
doc subs看有没有用 在simwe里给你回了
如果表达式不甚复杂的话,这里给你一个用匿名函数的例子y = @(t) quadl(@(x) x.^2 + t ,0,1);对于不同的t,比方说t = 1,t = 2
求表达式的值y(1),y(2)即可 本帖最后由 coohit 于 2016-10-9 11:10 编辑
楼上的连接
http://forum.vibunion.com/forum.php?mod=viewthread&tid=148555&page=1 谢谢rocwoods! 我也在simwe里给你回复了:@) function_handle这东东好像新版才开始有! 害我不得不详看下Help!
旧版使用习惯了, 仍使用旧思维考虑, 有兴趣者参考下!
function F = myfun(x)
global t
F=x.^2+t;
主程序
y = @(t) quadl(@(x) x.^2 + t ,0,1);
global t
t=2; y2 = quadl('myfun' ,0,1), y(t)
t=6; y2 = quadl('myfun' ,0,1), y(t) 这个思路 好像对我的积分也有帮助。。。。
回复 8楼 leezzbb 的帖子
有帮助就好!原本还有点不好意思贴!
页:
[1]