求一个复杂积分表

最近加入的礼品
共计 ?0.00+0积分
按分值浏览
积分:3750
积分:68250
积分:20080
积分:5670
积分:21590
积分:238340
积分:1000
积分:3000
积分:5000
积分:29090
积分:11170
积分:3000
积分:5000
积分:4170
积分:55840
积分:2000
积分:31590
积分:40750
积分:4500
积分:14170
积分:16500
积分:12500
积分:7920
积分:2420
积分:21750
积分:39420
积分:7920
积分:20750求一个定积分(1-cos(x))^(3/2),在x从0到2派的定积分,只要求过程.谢谢.
风记社六团vhz
利用倍角公式1-cosx=2(sinx/2)^2然后不是三次方么,其中的平方写成1-cos平方另一个凑微分变成dcos
为您推荐:
其他类似问题
扫描下载二维码操作成功!
操作失败!
2015年 知识清单(第4题)
利用定积分的几何意义求:
【正确答案】
【原题答案】
(1)被积函数的曲线是圆心在原点,半径为 的半圆周,由定积分的几何意义知此定积分计算的是半圆的面积,所以有 .
(2)∵被积函数为 ,其表示的曲线为以原点为圆心,
为半径的四分之一的圆,由定积分的几何意义可知,所求的定积分即为该四分之一圆的面积,
相关知识点查看: 3621|回复: 10|关注: 2
如何求解这样一个复杂的三重积分?
<h1 style="color:# 麦片财富积分
新手, 积分 12, 距离下一级还需 38 积分
关注者: 1
本帖最后由 苦逼青年 于
19:54 编辑
如图片所示,需要求解这样一个三重积分,积分变量从最外层到最内层分别为r,y,theta,其他参数均已给定。之前尝试过如下几种方法都不行:1. 利用int函数求解,由于最内层的积分上下限很复杂,包含三角函数和最外层的积分变量r,matlab求不出解析解,从而不能获得最终结果。
2. 利用定积分函数,定积分函数要求积分变量的上下限均为已知,在这里显然不适用。
3. 最后,我采用了一种近似的方法: 对于最内层的函数,分别先给定一个r和theta,然后利用quadl函数求解。
用第三种方法可以求解结果,但是发现跟想象中的差很多,不知道是不是理解不对,求大神帮忙看看哪里有问题,或者是否有更好的方法。不甚感激。程序代码如下:
function x = Pds_exact()
a&&= 2.548*10^(-5);
f = @(r) (exp(- a.*KK(r)));
x = quadl(f, 0, 200);
function [kk] = KK(r)
alpha = 4;
ls = 200;
c = 40;
n = length(r);
kk = zeros(1,n);
for i = 1:1:n
& & h = @(y) (y./(1+c.*(y./r(i)).^alpha));
& & for theta = 0:pi/100:pi
& && &&&a = quad(h, sqrt(ls.^2-(r(i).*sin(theta)).^2)+r(i).*cos(theta), ls + r(i));
& && &&&kk(i) = a + kk(i);
& & end
end
帖子最佳答案
关注者: 341
你可以将内部二重积分先单独计算,可以用 quad2d 或 integral2 函数,但这个积分结果你必须定义为关于 r 的向量化函数(用arrayfun对 r 做向量化扩展),将这个二重积分结果再对 r 做一重积分即可。注意一点是:你这里全部是数值计算,没有任何符号计算,所以,不要再出现syms 跟数值计算混合的现象了
<h1 style="color:# 麦片财富积分
关注者: 1
本帖最后由 苦逼青年 于
10:24 编辑
你可以将内部二重积分先单独计算,可以用 quad2d 或 integral2 函数,但这个积分结果你必须定义为关于 r 的 ...
刘老师,您好!多谢您的回复。昨天看了您的介绍,很庆幸跟您是校友,我也是西电通院的,最近在读博士。由于对MATLAB中的积分运算用的不多,所以感觉很棘手。根据刘老师的回答,我对代码进行了修改。但是下面不知道应该如何使用arrayfun函数,因为这里我的r的范围是[0,INF],不知道如何量化?不知老师能否将代码帮我补充一下?万分感激!最近在赶一篇论文,在这里磕了一周多了。
alpha = 4;
fun = @(theta,y) y./(1+c.*(y./r).^alpha);
ymin = @(theta) sqrt(ls.^2-(r.*sin(theta)).^2) + r.*cos(theta);
Q = quad2d(fun,0,2*pi,ymin,ls+r);
帖子最佳答案
关注者: 341
|此回复为最佳答案
刘老师,您好!多谢您的回复。昨天看了您的介绍,很庆幸跟您是校友,我也是西电通院的,最近在读博士。由 ...
你的代码基本上差不多了,就差arrayfun扩展了
alpha = 4;
a&&= 2.548*10^(-5);
fun = @(theta,y,r) y./(1+c.*(y./r).^alpha);
ymin = @(theta,r) sqrt(ls.^2-(r.*sin(theta)).^2) + r.*cos(theta);
Q = @(r) arrayfun(@(r) integral2(@(theta,y) fun(theta,y,r),0,2*pi,@(theta) ymin(theta,r), ls+r),r);
A = quadl(@(r) exp(-a*Q(r)), 0, ls)
<h1 style="color:# 麦片财富积分
关注者: 1
你的代码基本上差不多了,就差arrayfun扩展了
刘老师,太感谢了。这次可以成功运行了。解决了困扰我好多天的难题了,雪中送炭啊。我会根据您写的例子将arrayfun函数的用法好好学习下。 祝刘老师工作顺利,家庭幸福。
另外我运行了一下,由于我的是R2011a版本,还不支持integral2函数,所以我使用了quad2d,但是弹出了如下警告! 这是怎么回事呢?
Warning: Reached the maximum number of
function evaluations (2000). The result fails
the global error test.
帖子最佳答案
关注者: 341
刘老师,太感谢了。这次可以成功运行了。解决了困扰我好多天的难题了,雪中送炭啊。我会根据您写的例子将 ...
这个是一个警告,matlab数值积分quad2d是自适应积分,当积分精度不达标时,会取更多的点来计算。当取点数超过一定的MaxFunEvals,就会提示警告信息。默认的 MaxFunEvals 是2000,你可以自行设置大一些的 MaxFunEvals数值,以允许更多的计算。方法是:
Q = @(r) arrayfun(@(r) quad2d(@(theta,y) fun(theta,y,r),0,2*pi,@(theta) ymin(theta,r), ls+r, 'MaxFunEvals', 20000),r);
不过,我试了一下,改大后依然提示警告。但是警告不是错误,未必代表结果不对,这里的积分是否精确,取决于误差是多少,由于quadl不能返回误差估计,我换成了quadgk函数:
alpha = 4;
a&&= 2.548*10^(-5);
fun = @(theta,y,r) y./(1+c.*(y./r).^alpha);
ymin = @(theta,r) sqrt(ls.^2-(r.*sin(theta)).^2) + r.*cos(theta);
Q = @(r) arrayfun(@(r) quad2d(@(theta,y) fun(theta,y,r),0,2*pi,@(theta) ymin(theta,r), ls+r),r);
[A,errbnd] = quadgk(@(r) exp(-a*Q(r)), 0, ls)
&&187.2123
& &1.2054e-09
尽管此时会有警告,可以看出,误差在10的负9次方数量级,这个精度应该是满足要求的
另外,你的版本如果是不低于2012a的话,可以用integral2、integral函数
<h1 style="color:# 麦片财富积分
关注者: 1
这个是一个警告,matlab数值积分quad2d是自适应积分,当积分精度不达标时,会取更多的点来计算。当取点数 ...
刘老师回答得很细致,这个误差已经很小了,完全够用了,又学了一招。多谢刘老师。我还是装一个最新版的matlab,这样很多最新的函数就都可以用了。
另外一个问题,我发现我的matlab中注释只能写英文,如果用中文,下次打开时会乱码。不知道刘老师有没有遇到过这种情况?
再次感谢。
帖子最佳答案
关注者: 341
刘老师回答得很细致,这个误差已经很小了,完全够用了,又学了一招。多谢刘老师。我还是装一个最新版的ma ...
你检查一下你preferences设置里关于fonts部分
<h1 style="color:# 麦片财富积分
关注者: 1
本帖最后由 苦逼青年 于
15:19 编辑
你检查一下你preferences设置里关于fonts部分
刘老师,我又对上个帖子进行了修改,发现原因是两个函数句柄之间不能进行加减乘除的操作。如果需要先对两个函数进行四则运算,最后再对变量求积分,该如何操作?代码和错误提示如下:
alpha = 4;
a&&= 2.548*10^(-5);
C_ds = 6.0*10^(-5);
lamda_d = 1.27*10^(-5);
beta = 0.025*(r/(200+r))^
fun1 = @(u,r) beta^(2/alpha)/(1+u^(alpha/2));
xmin = @(r) beta^(-2/alpha);
P = @(r) arrayfun(@(r) quad(@(u) fun1(u,r),@(r) xmin(r),inf),r);
fun = @(theta,y,r) y./(1+c.*(y./r).^alpha);
ymin = @(theta,r) sqrt(ls.^2-(r.*sin(theta)).^2) + r.*cos(theta);
Q = @(r) arrayfun(@(r) quad2d(@(theta,y) fun(theta,y,r),0,2*pi,@(theta) ymin(theta,r), ls+r),r);
[A,errbnd] = quadgk(@(r) (C_ds.*r.*exp(-pi.*lamda_d.*(ls + r).^2.*P(r) - 0.9*10^(-6) - a.*Q(r))), 0, ls);
错误提示如下:
??? Undefined function or
method 'minus' for input
arguments of type
'function_handle'.
帖子最佳答案
关注者: 341
刘老师,我又对上个帖子进行了修改,发现原因是两个函数句柄之间不能进行加减乘除的操作。如果需要先对两 ...
只是帮你做了语法上的修改,另外,需要说明的是quad不支持积分限为无穷,考虑到你的版本,可以换成 quadgk
alpha = 4;
a&&= 2.548*10^(-5);
C_ds = 6.0*10^(-5);
lamda_d = 1.27*10^(-5);
beta = @(r) 0.025*(r./(200+r)).^
fun1 = @(u,r) beta(r).^(2/alpha)./(1+u.^(alpha/2));
xmin = @(r) beta(r).^(-2/alpha);
P = @(r) arrayfun(@(r) quadgk(@(u) fun1(u,r), xmin(r),inf),r);
fun = @(theta,y,r) y./(1+c.*(y./r).^alpha);
ymin = @(theta,r) sqrt(ls.^2-(r.*sin(theta)).^2) + r.*cos(theta);
Q = @(r) arrayfun(@(r) quad2d(@(theta,y) fun(theta,y,r),0,2*pi,@(theta) ymin(theta,r), ls+r),r);
[A,errbnd] = quadgk(@(r) (C_ds.*r.*exp(-pi.*lamda_d.*(ls + r).^2.*P(r) - 0.9*10^(-6) - a.*Q(r))), 0, ls);
站长推荐 /2
Powered by}

我要回帖

更多关于 复杂积分 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信