24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1753  |  回复: 21
本帖产生 1 个 数学EPI ,点击这里进行查看

丫头丫头2014

银虫 (小有名气)

[求助] 求助——积分求面积遇到问题已有3人参与

如图,x2,y2为转子方程,我想求x2,y2曲线围成的面积,用matlab编写程序如下:
z1=6;
z2=z1-1;
R=48.78;
r=8.13;
Q=R-r;
e=7.05;
syms theta
k=12.6;
f=r/e;
a=sin(z1*theta);
b=f+cos(z1*theta);
m=atan(a./b);
p=m-theta;       %theta
c=sin(theta+p);
n=asin(f*c);
o=n-p;          %phi
g=(z1/z2)*o;    %psi

x2t=Q*sin(theta)+e*sin(z2*theta)-k*sin(p);       %原始齿形
y2t=Q*cos(theta)-e*cos(z2*theta)+k*cos(p);
x3t=x2t.*cos(o-g)-y2t.*sin(o-g)-e*sin(g);        %共轭齿形
y3t=x2t.*sin(o-g)+y2t.*cos(o-g)-e*cos(g);


d2=diff(x3t);
ds2=inline(y3t.*d2);
s2=5*quadl(ds2,0,2*pi/5)
但是运行出来有问题,请高手指点,转子的面积该如何求,先谢谢啦

求助——积分求面积遇到问题
转子方程.png
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

wurongjun

专家顾问 (职业作家)

【答案】应助回帖

feixiaolin: 数学EPI+1, 2015-07奖励 2015-08-01 18:06:03
feixiaolin: 应助指数+1 2015-08-01 18:06:24
定子面积程序:
function dingz
y=4*rombg(@fdz,0,pi/2,1e-2);
disp(num2str(y,6))
function ds1=fdz(t)
z1=6;
z2=z1-1;
R=48.78;
r=8.13;
Q=R-r;
e=7.05;
syms tau;
k=12.6;    %re
f=r/e;
a=sin(z1*tau);
b=f+cos(z1*tau);
m=atan(a./b);
p=m-tau;       %theta
c=sin(tau+p);
n=asin(f*c);
o=n-p;          %phi
g=(z1/z2)*o;    %psi
x2t=Q*sin(tau)+e*sin(z2*tau)-k*sin(p);       %原始齿形
y2t=Q*cos(tau)-e*cos(z2*tau)+k*cos(p);
d1=diff(x2t);
ds1=subs(y2t.*d1,tau,t);
function y=rombg(f,a,b,er)
h=(b-a);
T(1,1)=h*(feval(f,a)+feval(f,b))/2;
i=2;h=h/2;
T(i,1)=T(1,1)/2+h*feval(f,(a+b)/2);
T(i,2)=(4*T(2,1)-T(1,1))/3;
while abs(T(i,i)-T(i-1,i-1))>er
    i=i+1;h=h/2;
    T(i,1)=T(i-1,1)/2+h*sum(feval(f,a+h:2*h:b));
    for k=2:1:i
        T(i,k)=(4^(k-1)*T(i,k-1)-T(i-1,k-1))/(4^(k-1)-1);
    end
end
y=T(i,i);
运行结果:
8768.86
转子面积程序:
function zhuanz
y=rombg(@fzz,0,16.65*pi/10,1e-2);
disp(num2str(y,6));
function ds2=fzz(t)
z1=6;
z2=z1-1;
R=48.78;
r=8.13;
Q=R-r;
e=7.05;
syms tau
k=12.6;
f=r/e;
a=sin(z1*tau);
b=f+cos(z1*tau);
m=atan(a./b);
p=m-tau;       %theta
c=sin(tau+p);
n=asin(f*c);
o=n-p;          %phi
g=(z1/z2)*o;    %psi
x2t=Q*sin(tau)+e*sin(z2*tau)-k*sin(p);       %原始齿形
y2t=Q*cos(tau)-e*cos(z2*tau)+k*cos(p);
x3t=x2t.*cos(o-g)-y2t.*sin(o-g)-e*sin(g);        %共轭齿形
y3t=x2t.*sin(o-g)+y2t.*cos(o-g)-e*cos(g);
d2=diff(x3t);
ds2=subs(y3t.*d2,tau,t);
function y=rombg(f,a,b,er)
h=(b-a);
T(1,1)=h*(feval(f,a)+feval(f,b))/2;
i=2;h=h/2;
T(i,1)=T(1,1)/2+h*feval(f,(a+b)/2);
T(i,2)=(4*T(2,1)-T(1,1))/3;
while abs(T(i,i)-T(i-1,i-1))>er
    i=i+1;h=h/2;
    T(i,1)=T(i-1,1)/2+h*sum(feval(f,a+h:2*h:b));
    for k=2:1:i
        T(i,k)=(4^(k-1)*T(i,k-1)-T(i-1,k-1))/(4^(k-1)-1);
    end
end
y=T(i,i);
结果:
6546.81
说明:注意积分区间不是[0,2*pi],我取了一个近似值[0,16.65*pi/10]

» 本帖已获得的红花(最新10朵)

善恶到头终有报,人间正道是沧桑.
18楼2015-07-22 20:34:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

丫头丫头2014

银虫 (小有名气)

送红花一朵
引用回帖:
18楼: Originally posted by wurongjun at 2015-07-22 20:34:19
定子面积程序:
function dingz
y=4*rombg(@fdz,0,pi/2,1e-2);
disp(num2str(y,6))
function ds1=fdz(t)
z1=6;
z2=z1-1;
R=48.78;
r=8.13;
Q=R-r;
e=7.05;
syms tau;
k=12.6;    %re
f=r/e;
a=sin(z1* ...

您好 我特别不好意思 这段时间有些忙 没能及时上论坛 之前查看该贴的时候 竟然没有注意到您给了如此详细的回复 我真的是特别特别不好意思 也再次感谢您的用心
19楼2015-08-04 17:52:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

丫头丫头2014

银虫 (小有名气)

引用回帖:
4楼: Originally posted by cooooldog at 2015-07-18 08:32:42
下面的曲线外轮廓所包围的面积用数值近似计算得到大约是
7936.86...

您好,我已经尽自己最大努力,尽量把问题说清楚了,写成word形式,麻烦您再看一下,如果哪块不清楚,我再解释,这个问题困扰了我很久,不知道该怎么解决,先谢谢您啦

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 定转子求面积.docx
  • 2015-07-20 10:49:36, 42.39 K
5楼2015-07-20 10:50:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

丫头丫头2014

银虫 (小有名气)

引用回帖:
2楼: Originally posted by wurongjun at 2015-07-17 11:09:33
以前回答过这个类似问题!
quad函数里面调用的函数你没有写好,写成表达式啦!
要写成function形式的!
关键是你的问题里面其他参数!
这个新版的Matlab里面已经可以解决啦!
搜索匿名函数的用法!完全可以解决你的问 ...

您好,之前您帮我解决了类似的问题,但是转子图形不是四个象限对称的,所以用相同的方法,出现了问题,我把问题,用word写出来了,麻烦您再给看一下,工作中急需要解决,实在是困扰我很久了,请高手帮忙,先谢谢啦

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 定转子求面积.docx
  • 2015-07-20 10:52:01, 42.39 K
6楼2015-07-20 10:52:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

wurongjun

专家顾问 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
以前回答过这个类似问题!
quad函数里面调用的函数你没有写好,写成表达式啦!
要写成function形式的!
关键是你的问题里面其他参数!
这个新版的Matlab里面已经可以解决啦!
搜索匿名函数的用法!完全可以解决你的问题!
善恶到头终有报,人间正道是沧桑.
2楼2015-07-17 11:09:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cooooldog

铁杆木虫 (著名写手)

ส็็็

【答案】应助回帖

感谢参与,应助指数 +1
1. 问问题自己先把问题尽可能描述清清楚楚很重要;

2. 定子曲线方程是一条闭合的曲线
求助——积分求面积遇到问题-1

但是转子曲线方程无法在0~2 pi之内闭合
求助——积分求面积遇到问题-2

3. 你自己的代码除了有一些已知量的赋值可参考之外,其它几乎毫无意义,而且theta跟tau混用,描述不一致而让人思维混乱;

你求的到底是哪个面积?
ส็็็็็็็็็็็็็็็็็็็็
3楼2015-07-17 11:18:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cooooldog

铁杆木虫 (著名写手)

ส็็็

引用回帖:
3楼: Originally posted by cooooldog at 2015-07-17 11:18:14
1. 问问题自己先把问题尽可能描述清清楚楚很重要;

2. 定子曲线方程是一条闭合的曲线


但是转子曲线方程无法在0~2 pi之内闭合


3. 你自己的代码除了有一些已知量的赋值可参考之外,其它几乎毫无意义,而且t ...

下面的曲线外轮廓所包围的面积用数值近似计算得到大约是
7936.86
ส็็็็็็็็็็็็็็็็็็็็
4楼2015-07-18 08:32:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cooooldog

铁杆木虫 (著名写手)

ส็็็

【答案】应助回帖

引用回帖:
5楼: Originally posted by 丫头丫头2014 at 2015-07-20 10:50:01
您好,我已经尽自己最大努力,尽量把问题说清楚了,写成word形式,麻烦您再看一下,如果哪块不清楚,我再解释,这个问题困扰了我很久,不知道该怎么解决,先谢谢您啦...

主要不清楚的地方是,您到底求定子,转子面积,还是求曲线的外轮廓包围的面积?

正如前面已经给出的两个曲线的图片一样

1. 定子对应的曲线是封闭的,但是有两个环绕在曲线内的圈,这个是\tau 在0-2 \Pi 正好封闭的曲线;
2. 另外一条曲线如果封闭, \tau取值范围是 0 - 5 \pi , 而且从我画出来的图上您应该可以看到,曲线一共走了三圈才恰好闭合;这时您要的是内圈还是外圈的面积?

您用Matlab绘制的曲线是有问题的,可能跟软件设定的取点间隔或者您自己设置的\tau 的区间不正确有关,如果这个不弄清楚,没办法往下做的。

根据我绘制出来的曲线,以外轮廓(最外圈)计算,则,定子曲线包围的面积是:
8976.331834403554,
转子曲线包围的面积,也用最外一圈的轮廓计算,面积是:
7945.51935111237

跟您所说的结果有相当大的明显的差异。

可能的原因:
您想要计算的跟我求的并不是同一个面积;
如果我前面的理解正确,则可能您的设备软件设置或计算有误,或者算法精度不高
ส็็็็็็็็็็็็็็็็็็็็
7楼2015-07-20 14:01:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

丫头丫头2014

银虫 (小有名气)

引用回帖:
7楼: Originally posted by cooooldog at 2015-07-20 14:01:43
主要不清楚的地方是,您到底求定子,转子面积,还是求曲线的外轮廓包围的面积?

正如前面已经给出的两个曲线的图片一样

1. 定子对应的曲线是封闭的,但是有两个环绕在曲线内的圈,这个是\tau 在0-2 \Pi 正好 ...

您之前给出的两个图形是不正确的 我在文本中附上了正确的图片,两个图形都是要0-2pi内闭合曲线围成的面积,定子方程在0-2pi是差一点点闭合的,这个是为什么,我也不是特别清楚,转子的方程,是依赖定子方程产生的,所以tau的值是在0-3*pi/2+0.5275时,接近闭合的,您看到我传的文本了吗?
8楼2015-07-20 14:35:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Mr__Right

专家顾问 (著名写手)

【答案】应助回帖

引用回帖:
8楼: Originally posted by 丫头丫头2014 at 2015-07-20 14:35:49
您之前给出的两个图形是不正确的 我在文本中附上了正确的图片,两个图形都是要0-2pi内闭合曲线围成的面积,定子方程在0-2pi是差一点点闭合的,这个是为什么,我也不是特别清楚,转子的方程,是依赖定子方程产生的, ...

明白是怎么回事了.

我把 z2=z1-1 写成 z2=1-z1 了

这样你的问题反而简化了, 因为曲线都是比较简单的.

第一条曲线周期 0-2 Pi
面积:
8768.85621710424,
跟你说的软件的结果很相似.

第二天曲线, 关键问题在于周期不容易表达, 先用牛顿法和合适的初值求出来这个积分区间应该是:
0~5.235987807991032

然后,同样在这个区间上对这个封闭曲线使用格林公式求面积,在我看来用不到任何坐标变换的东西
但是积分的时候所要求的精度不能太高,否则可能报错
6557.98006735277
这个跟你说得软件结果就更加相近了.

看起来软件没什么问题; 至多精度有差异,跟所用算法可能有关系.
文章乃身外之物,要多考虑编辑、审稿人和读者的感受。
9楼2015-07-20 18:49:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cooooldog

铁杆木虫 (著名写手)

ส็็็

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
丫头丫头2014: 金币+10, ★★★★★最佳答案, 真的很棒 困扰我已久的问题解决了 谢谢 2015-07-21 08:51:32
引用回帖:
8楼: Originally posted by 丫头丫头2014 at 2015-07-20 14:35:49
您之前给出的两个图形是不正确的 我在文本中附上了正确的图片,两个图形都是要0-2pi内闭合曲线围成的面积,定子方程在0-2pi是差一点点闭合的,这个是为什么,我也不是特别清楚,转子的方程,是依赖定子方程产生的, ...

从新画了下, 发现定子:

求助——积分求面积遇到问题-3

转子曲线:

求助——积分求面积遇到问题-4

我没有用Matlab, 因为不喜欢, 用Mathematica计算, 也是Green定理求面积,

代码如下:
CODE:
ClearAll["Global`*"];
R = 4878/100;
r = 813/100;
z1 = R/r;
z2 = z1 - 1;
e = 705/100;
f = r/e;
re = 126/10;
\[Theta] = ArcTan[Sin[z1 \[Tau]]/(f + Cos[z1 \[Tau]])] - \[Tau];
\[CurlyPhi] = ArcSin[f Sin[\[Theta] + \[Tau]]] - \[Theta];
\[Psi] = z1/(z1 - 1) \[CurlyPhi];
curve01 = {(R - r) Sin[\[Tau]] + e Sin[z2 \[Tau]] -
     re Sin[\[Theta]], (R - r) Cos[\[Tau]] - e Cos[z2 \[Tau]] +
     re Cos[\[Theta]]} // FullSimplify;
curve02 = {curve01[[1]] Cos[\[CurlyPhi] - \[Psi]] -
     curve01[[2]] Sin[\[CurlyPhi] - \[Psi]] - e Sin[\[Psi]],
    curve01[[1]] Sin[\[CurlyPhi] - \[Psi]] +
     curve01[[2]] Cos[\[CurlyPhi] - \[Psi]] - e Cos[\[Psi]]} //
   Simplify;

base = ParametricPlot[Evaluate[curve01], {\[Tau], 0, 2 \[Pi]},
   Exclusions -> None, MaxRecursion -> 15, PlotPoints -> 1500,
   AxesStyle -> Arrowheads[.035],
   AxesLabel -> {Style[#, Black, Bold, 21 ,
        FontFamily -> "Times New Roman", Italic] &@"x",
     Style[#, Black, Thick, 21 , FontFamily -> "Times New Roman",
        Italic] &@"y"},
   TicksStyle -> Directive[Black, 14, FontFamily -> "Arial"],
   PlotRangePadding -> Scaled[.1], ImageSize -> 450] /.
  Line[x_] :> {Blue, Thickness[.001], Line[x]}


ParametricPlot[Evaluate[curve02], {\[Tau], 0, 2 \[Pi]},
  Exclusions -> None, MaxRecursion -> 15, PlotPoints -> 1500,
  AxesStyle -> Arrowheads[.035],
  AxesLabel -> {Style[#, Black, Bold, 21 ,
       FontFamily -> "Times New Roman", Italic] &@"x",
    Style[#, Black, Thick, 21 , FontFamily -> "Times New Roman",
       Italic] &@"y"},
  TicksStyle -> Directive[Black, 14, FontFamily -> "Arial"],
  PlotRangePadding -> Scaled[.1], ImageSize -> 450] /.
Line[x_] :> {Red, Thickness[.001], Line[x]}

NIntegrate[
   curve01[[2]] D[curve01[[1]], \[Tau]] -
    curve01[[1]] D[curve01[[2]], \[Tau]], {\[Tau], 0, 2 Pi}]/2 //
NumberForm[#, 10] &

NIntegrate[
   curve02[[2]] D[curve02[[1]], \[Tau]] -
    curve02[[1]] D[curve02[[2]], \[Tau]], {\[Tau],
    0, \[Tau] /. FindRoot[curve02[[2]] == 783/20, {\[Tau], 1.6 Pi}]},
   PrecisionGoal -> 6, Method -> "LocalAdaptive"]/2 //
NumberForm[#, 10] &

你找个Mathematica运行下就可以了:

面积分别是
8768.856217

6557.980067

变成Matlab代码似乎没有特别的必要,解这种问题, Matlab似乎并没有特殊的优势,只不过用的人多而已.

» 本帖已获得的红花(最新10朵)

ส็็็็็็็็็็็็็็็็็็็็
10楼2015-07-20 19:13:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 丫头丫头2014 的主题更新
信息提示
请填处理意见