找回密码
 注册
Simdroid-非首页
查看: 119|回复: 8

matlab 中实测函数的积分、求导问题

[复制链接]
发表于 2010-12-31 15:06:28 | 显示全部楼层 |阅读模式 来自 湖北武汉
本帖最后由 youf 于 2010-12-31 15:23 编辑

在matlab中,如何从txt文件中的数据生成一个函数,并且在matlab 中进行 积分、求导操作啊?
这样的数据是一些散点,可能要用到插值,这些怎么弄啊?
发表于 2010-12-31 15:44:53 | 显示全部楼层 来自 河北廊坊
Simdroid开发平台
请lz给出具体问题
回复 不支持

使用道具 举报

 楼主| 发表于 2010-12-31 16:27:38 | 显示全部楼层 来自 湖北武汉
本帖最后由 youf 于 2010-12-31 16:29 编辑

问题是这样的:
现有数据:
x      y1
1      4
2      5
3      2
4      8
5      8
6      6
7      5
8      9
9      7
...

这些数据可以构成函数 y1(x)

又有数据:

x      y2
0      73
5      56
10      44
15      34
20      23
25      56
30      23
35      12
40      10
...

这些数据可以构成函数 y2(x)

需要算出一个复杂的积分:int(y1(x)*y2(x)*sin(y1(x)*beta),beta,10,30)

即对 y1(x)*y2(x)*sin(y1(x)*beta) 积分,积分对象是 beta, 定积分,从10 积分到 30.

matlab怎么处理这个问题啊,貌似很复杂。
回复 不支持

使用道具 举报

发表于 2010-12-31 16:41:10 | 显示全部楼层 来自 四川成都
一步一步来呗,本来数据拟合就比较复杂的。还不知道你要拟合成什么函数?
先把数据提取出来,根据根据自己想拟合的函数拟合,转化成字符串形式的,再用内联函数构造函数,最后积分,一步一步。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2010-12-31 17:44:58 | 显示全部楼层 来自 湖北武汉
一步一步来呗,本来数据拟合就比较复杂的。还不知道你要拟合成什么函数?
先把数据提取出来,根据根据自己想拟合的函数拟合,转化成字符串形式的,再用内联函数构造函数,最后积分,一步一步。
chenzhian 发表于 2010-12-31 16:41


好像有不用拟合的方法吧,可以插值啊。
拟合太麻烦了啊。
回复 不支持

使用道具 举报

发表于 2010-12-31 18:25:11 | 显示全部楼层 来自 北京海淀
如何从txt文件中的数据生成一个函数

这是你自己提的要求,你光插值能生成函数?
况且都是调别人写好的函数,拟合又能有什么麻烦的?更不用提版子里有那么多现成例子。
回复 不支持

使用道具 举报

 楼主| 发表于 2010-12-31 18:56:43 | 显示全部楼层 来自 湖北武汉
本帖最后由 youf 于 2010-12-31 18:58 编辑

拟合肯定是一个好方法,这是不能否定的。
但是如果对一组毫无规律的数据,找到一个好的拟合函数都比较困难,即使拟合出来了,也不准啊。
所以我才想到:从现有数据→需要的结果,直接来。结果中需要什么数据,就从数据中插值得到什么数据,这不是更好吗?
省去了拟合函数的误差,但是增加了插值的误差,只是方便一些。
这里我是从有限元的思想出发的,把区间mesh成有限的节点。
回复 不支持

使用道具 举报

发表于 2010-12-31 19:25:37 | 显示全部楼层 来自 北京海淀
还是那句话:插值不能生成具体函数形式,只是更密集的数据,单纯再好的插值方法也没法达到你首帖的要求,关于这点,4#的思路没错。
至于数据分区间插值的思想,早就有了,已经可以直接套用,不需要想:试试MATLAB的三次样条拟合与B样条拟合,后者对于例如由:

这样的高振荡函数所生成的数据进行检测,可以做到3阶甚至更高阶导数的准确性,做你三楼给的那种数据的求导和积分跟玩儿似的。这些代码里面已经包含了拟合与插值两种思想的糅合,比自己想的好多了。
对了,我之所以敢说这话,是因为这个例子好像我自己做过测试,包括样条求导和积分与原函数的比较,但是时间太久,不知道放在哪里,你可以试试搜索。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-1-1 21:10:32 | 显示全部楼层 来自 湖北武汉
本帖最后由 youf 于 2011-1-1 21:12 编辑
还是那句话:插值不能生成具体函数形式,只是更密集的数据,单纯再好的插值方法也没法达到你首帖的要求,关于这点,4#的思路没错。
至于数据分区间插值的思想,早就有了,已经可以直接套用,不需要想:试试MATLAB的 ...
bainhome 发表于 2010-12-31 19:25


我又深入想了下,离散的数据如果不拟合,在matlab中只能以矩阵的形式存在,这种形式对于复杂的多重求导、积分,即使用有限元,似乎也很难处理。
所以我还是试试 chenzhian bainhome 的思路,即先拟合,相信能够给力。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-5 03:24 , Processed in 0.040900 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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