求用matlab计算一个六重积分的具体程序,绘制仿真图

求用matlab计算一个六重积分的具体程序,绘制仿真图,第1张

问题

首先,说一下条件给的不清楚或可能有错的地方:

1、按照公式中使用的符号,下面的常数d、h应为D、H,a1、a2应为R1、R2;

2、公式中,第三重积分的下限确定是2*sqrt(R1^2-x)?【后面有讨论】

3、求积分得到的结果就是一个具体的数,标题要求的【绘制仿真图】是什么意思?

参考代码

下面给出我写的代码,供参考。

% 常数定义 

I=1 u0=4*pi*1e-007 D=0.15 H=11.4 R1=7.5 R2=14 

  

% 六元函数定义(注意把里面第二重积分的系数以及D^3折算到函数中) 

f=@(t,h,r,y,x,z)(-r*sin(t).*(y-sin(t))-r*cos(t).*(x-cos(t))) ./ ... 

    ((x-r*cos(t)).^2+(y-r*sin(t)).^2+(z-h).^2).^(3/2) * u0*I^2/(4*pi)/D^3 

  

% 积分参数设置 

tol = 1e-6 

quadf = @quadl

trace = 1

  

% 先使用triplequad计算内三重积分(积分限均为常数,h、r注意换算) 

Ithr = @(y,x,z) triplequad(f,0,2*pi,0,D*H,D*R1,D*R2,tol,quadf,y,x,z) 

  

% 由于被积分函数必须能够接受向量输入并返回向量输出,所以外面的三重积分必须逐层进行

Iy = @(x,z) quadf( @(Y)arrayfun(@(y)Ithr(y,x,z),Y),2*sqrt(R1^2-x),sqrt(R2^2-x.^2),tol,trace)

Ix = @(z) quadf( @(X)arrayfun(@(x)Iy(x,z),X),R1,R2,tol,trace)

Iz = quadf( @(Z)arrayfun(@(z)Ix(z),Z),0,D*H,tol,trace)

注解及讨论

1、对代码自身不想再多做解释,该说的注释里都说了。自己好好看看,实在看不懂再问吧(要更好地理解代码,需要好好熟悉一下匿名函数)。

2、需要注意:重积分的计算时间不是根据积分的重数成倍增加,而是按照幂级数规律增加的,所以,计算六重积分所需的时间是比较长的(这段代码在我电脑上求解时间近8分钟)。

3、按照当前的程序,求出的结果:

Iz =

  1.1554e-005

由于y的积分下限看起来有点怪,像是sqrt(R1^2-x.^2)之误,但仔细分析应该没错。如果积分下限取sqrt(R1^2-x.^2),则计算结果为复数:

Iz =

  5.4730e-005 -6.7361e-005i

原因是,对x的积分范围是R1-R2,也就意味着,x的取值范围最大可以是R2,而里面那一重积分的下限是sqrt(R1^2-x.^2),当x取值大于R1时就会出现复数。

4、上面的代码侧重于实现方法,具体的数学表达式不保证绝对没问题,请自行仔细核实。

很简单,你只要

积分器设置里面做两项工作,第一,把“External reset”选成rising,积分器会打开一个端口,这个端口就是用来接收外部清零的条件的;第二把“show state port”打开,这个端口其实输出的就是积分值,但是它只能用于积分的清零,不能作为输出;

积分器会出现两个新的端口,一个输出 state port,一个输入 external reset。

举例说,如果自变量我们取t,初条件是积分值为0.清零条件是积分值达到50,这样我们就从state port里引出来一条线和50做减法,然后输出线连到积分器的输入端,这个过程意思就是设定积分到50的时候就清零,表达式为 1/2 * t^2 - 50 之所以最初把外部重设条件设为 rising 是因为一开始t=0时,表达式为-50,随着t的增长,当t=10的时候,整个表达式由负变正,相当于上升过零。

这样运行仿真 你就看到积分结果不停地到0就重置。

如果仿真时间设的很长,则可能后来就发散了,这样你可以变换一下求解器,选个不同的 比如ode15s,收敛的比较好~ 具体为啥我现在也不知道~~

希望对你有帮助

已知单位反馈系统的开环出传递系数为(s+0.2)/(s^2+0.5s)。

直接连接一个惯性环节然后用step阶跃响应。

交互式的图形编辑器来组合和管理直观的模块图,以设计功能的层次性来分割模型,实现对复杂设计的管理,通过Model Explorer 导航、创建、配置、搜索模型中的任意信号、参数、属性,生成模型代码。

扩展资料:

功能:

Simulink可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。为了创建动态系统模型,Simulink提供了一个建立模型方块图的图形用户接口。

这个创建过程只需单击和拖动鼠标 *** 作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12150212.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存