longlongyang 发表于 2009-2-23 11:38

参数传递后如何产生新的函数表达式进行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 编辑 ]

ChaChing 发表于 2009-2-23 23:34

quadl/inline这些函数, 个人都不熟!
可否给个简易程序, 有空试试看!

ch_j1985 发表于 2009-2-23 23:39

回复 楼主 longlongyang 的帖子

doc subs
看有没有用

rocwoods 发表于 2009-2-24 00:12

在simwe里给你回了
如果表达式不甚复杂的话,这里给你一个用匿名函数的例子y = @(t) quadl(@(x) x.^2 + t ,0,1);对于不同的t,比方说t = 1,t = 2
求表达式的值y(1),y(2)即可

ChaChing 发表于 2009-2-24 08:58

本帖最后由 coohit 于 2016-10-9 11:10 编辑

楼上的连接
http://forum.vibunion.com/forum.php?mod=viewthread&tid=148555&page=1

longlongyang 发表于 2009-2-25 09:44

谢谢rocwoods! 我也在simwe里给你回复了:@)

ChaChing 发表于 2009-2-26 14:49

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)

leezzbb 发表于 2009-2-26 14:56

这个思路 好像对我的积分也有帮助。。。。

ChaChing 发表于 2009-2-26 16:05

回复 8楼 leezzbb 的帖子

有帮助就好!
原本还有点不好意思贴!
页: [1]
查看完整版本: 参数传递后如何产生新的函数表达式进行quadl数值积分