声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1940|回复: 8

[综合讨论] matlab2011a怎样计算重积分啊?

[复制链接]
发表于 2013-8-3 21:15 | 显示全部楼层 |阅读模式

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

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

x
QQ图片20130803211437.jpg 怎样用matlab实现内积分限是外积分限函数的重积分?其中a,b是常数,谢谢

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2013-8-3 22:20 | 显示全部楼层
本帖最后由 coohit 于 2016-7-14 10:32 编辑

2012b版本之后,应能使用新函数:

  1. f=@(x,y) sin(x+y).*cos(x+2*y);
  2. g=@(y) sin(y);
  3. q = integral2(f,0,1,0,g)
  4. q =
  5.     0.0530
复制代码
老版本参看http://forum.vibunion.com/forum. ... =1&extra=#pid429038http://forum.vibunion.com/forum. ... p;page=1&extra=
不清楚2011a能不能用integral2这个函数,或可参见quad2d函数,这个一般区域积分的函数自2009a之后貌似就有了。

评分

1

查看全部评分

 楼主| 发表于 2013-8-4 07:54 | 显示全部楼层

嗯,谢谢了哈,刚才我试了试,integral2函数好像在matlab2011a不能用
发表于 2013-8-4 17:58 | 显示全部楼层
假设楼主的f(x,y)是x+y,而φ(y)=y^2吧 那么这个重积分可用下面的方法进行计算

s=quadl(@(x)arrayfun(@(xx)quadl(@(y)xx+y,0,xx.^2),x),a,b)

注意如果f(x,y)和φ(y)里面有*和/,一定要是.*和./

评分

1

查看全部评分

 楼主| 发表于 2013-8-4 20:46 | 显示全部楼层
米斯兰达 发表于 2013-8-4 17:58
假设楼主的f(x,y)是x+y,而φ(y)=y^2吧 那么这个重积分可用下面的方法进行计算

s=quadl(@(x)arrayfun(@( ...

嗯,谢谢了哈,现在能想到的函数基本上都用了,不大行啊,可能要自己编程了
发表于 2013-8-4 22:04 | 显示全部楼层
本帖最后由 bainhome 于 2013-8-4 22:08 编辑

就目前所给出这点有限的信息,没觉得哪里用quad2d解决不了,调用方式一样:
  1. q = quad2d(f,0,1,0,g)
  2. q =
  3. 0.3500
复制代码

正由于quadl、dblquad等函数系列的算法有局限,例如默认调用方式只能用于矩形区域、振荡积分的易奇异等等,09版本之后对这个积分系列连续做了几次调整,现在已经相对成熟,自编函数如果不是对MATLAB底层函数有所了解,很难比之更好——因为我自己很早前写过一些。
个人看法,仅供参考

发表于 2013-8-5 07:35 | 显示全部楼层
牛行天下 发表于 2013-8-4 20:46
嗯,谢谢了哈,现在能想到的函数基本上都用了,不大行啊,可能要自己编程了

是在不行就用蒙特卡洛法吧 点数取多一点
 楼主| 发表于 2013-8-5 07:43 | 显示全部楼层
bainhome 发表于 2013-8-4 22:04
就目前所给出这点有限的信息,没觉得哪里用quad2d解决不了,调用方式一样:
正由于quadl、dblquad等函数系 ...

嗯,非常感谢您的指点,也可能是我对这些函数不够了解,导致积分时老报错,
 楼主| 发表于 2013-8-5 07:44 | 显示全部楼层
米斯兰达 发表于 2013-8-5 07:35
是在不行就用蒙特卡洛法吧 点数取多一点

嗯,谢谢您的提示,可能的话就尝试一下
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-26 09:11 , Processed in 0.070675 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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