声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1645|回复: 8

[编程技巧] 参数传递后如何产生新的函数表达式进行quadl数值积分

[复制链接]
发表于 2009-2-23 11:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
对不起,我没有把我的问题描述清楚。其实这个问题应该是参数传递然后产生新的函数表达式的问题。比如,在主程序中我有一个参数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 编辑 ]

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2009-2-23 23:34 | 显示全部楼层
quadl/inline这些函数, 个人都不熟!
可否给个简易程序, 有空试试看!
发表于 2009-2-23 23:39 | 显示全部楼层

回复 楼主 longlongyang 的帖子

doc subs
看有没有用
发表于 2009-2-24 00:12 | 显示全部楼层
在simwe里给你回了
如果表达式不甚复杂的话,这里给你一个用匿名函数的例子
  1. y = @(t) quadl(@(x) x.^2 + t ,0,1);
复制代码
对于不同的t,比方说t = 1,t = 2
求表达式的值y(1),y(2)即可

评分

1

查看全部评分

发表于 2009-2-24 08:58 | 显示全部楼层
本帖最后由 coohit 于 2016-10-9 11:10 编辑

楼上的连接
http://forum.vibunion.com/forum. ... d=148555&page=1
 楼主| 发表于 2009-2-25 09:44 | 显示全部楼层
谢谢rocwoods! 我也在simwe里给你回复了:@)
发表于 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)

评分

1

查看全部评分

发表于 2009-2-26 14:56 | 显示全部楼层
这个思路 好像对我的积分也有帮助。。。。
发表于 2009-2-26 16:05 | 显示全部楼层

回复 8楼 leezzbb 的帖子

有帮助就好!
原本还有点不好意思贴!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-4 10:30 , Processed in 0.066836 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表