24小时热门版块排行榜    

查看: 1382  |  回复: 14

Mr__Right

专家顾问 (著名写手)

【答案】应助回帖

引用回帖:
10楼: Originally posted by cooooldog at 2016-03-22 08:59:16
楼主还在不?

这个问题简单,只须用Newton法反向迭代求解就可以了

只是牛顿法需要求解的方程组表达式对应于曲线围成的面积的求解函数。

楼主如果能冒个泡出来,免费求解。

sweety   hsd3521...

边学习,边回答这个问题。

工具:用Mathematica 解决。求解这类问题,Mathematica首屈一指。

首先是描述两条曲线的代码:
CODE:
ClearAll["Global`*"];
R = 4878/100;
z1 = 6;
r = R/z1;
z2 = z1 - 1;
e = 705/100;
f = r/e;
re = 126/10;
θ = ArcTan[Sin[z1 τ]/(f + Cos[z1 τ])] - τ;
φ = ArcSin[f Sin[θ + τ]] - θ;
ψ = z1/(z1 - 1) φ;

(* 两个参数方程 *)
curve01 = {(R - r) Sin[τ] + e Sin[z2 τ] -  re Sin[θ], (R - r) Cos[τ] - e Cos[z2 τ] +  re Cos[θ]} // Simplify;

(*定子*)
ParametricPlot[curve01,{τ,0,2 π},Exclusions\[Rule]None,MaxRecursion\[Rule]15,PlotPoints->
500,PlotStyle->Red]


(*转子*)
curve02 = {curve01[[1]] Cos[φ - ψ] -  curve01[[2]] Sin[φ - ψ] - e Sin[ψ],
    curve01[[1]] Sin[φ - ψ] +   curve01[[2]] Cos[φ - ψ] - e Cos[ψ]} //Simplify;

base=ParametricPlot[curve02,{τ,0,2 π},Exclusions->None,MaxRecursion->15,PlotPoints->500,PlotStyle->Blue]; Show[base]

上面代码定义各个常数,以及两条曲线的参数方程。因为 并不是一个自然的参数,需要计算曲线封闭的情况下实际的周期是多少,算出来是 ; 并显示根据对称性和Green定理需要求解的1/10图形的样子
CODE:
τp = (y - x) /.FindRoot[(curve02 /. τ -> x) == (curve02 /. τ -> y), {x, Pi/20}, {y, 2 Pi}];

arc = Table[curve02, {τ, 0, τp/10, .00001}];

Show[base,Graphics[{{Red,Line[{curve02 /. τ -> 0, {0, 0},curve02 /. τ -> τp/10}], Line@arc}}]]

然后用Green定理计算转子曲线的面积:
CODE:
τp = 5 Pi/3;
5 (NIntegrate[-First[curve02] D[Last@curve02, τ] +  Last[curve02] D[First@curve02, τ], {τ, 0, τp/10}, Method -> "LocalAdaptive", MaxRecursion -> 100]) // NumberForm[#, 15] &

结果是:
6557.97718280445

现在开始求已知面积是  6557.19 时的 , 需要先把面积表示成   的函数,其它参数都不变; 然后用牛顿法迭代:
CODE:
curveArea[r_]:=Module[{z1,z2,e,f,re,R,θ,φ,ψ,τ,curve01,curve02},
z1=6;
R=r z1;
z2=z1-1;
e=705/100;
f=r/e;
re=126/10;
θ=ArcTan[Sin[z1 τ]/(f+Cos[z1 τ])]-τ;
φ=ArcSin[f Sin[θ+τ]]-θ;
ψ=z1/(z1-1) φ;
curve01={(R-r) Sin[τ]+e Sin[z2 τ]-re Sin[θ],(R-r) Cos[τ]-e Cos[z2 τ]+re Cos[θ]};curve02={curve01[[1]] Cos[φ-ψ]-curve01[[2]] Sin[φ-ψ]-e Sin[ψ],curve01[[1]] Sin[φ-ψ]+curve01[[2]] Cos[φ-ψ]-e Cos[ψ]};
(5 (NIntegrate[-First[curve02] D[Last@curve02,τ]+Last[curve02] D[First@curve02,τ],{τ,0,τp/20,τp/10},MaxRecursion->100,Method->"LocalAdaptive"]))
]

FindRoot[curveArea[x] == 6557.19, {x, 7.5}, Evaluated -> False,Method -> {"Newton", "StepControl" -> "TrustRegion"}] // AbsoluteTiming

我的电脑比较破,用的时间很久, 结果是:
用时间172.41342746027159秒,
对应的
CODE:
r=8.1294128480878

要不是误以为楼主是另外一位同学,我也许就不来解这道题了。不过,总算解完了。希望楼主能够举一反三。

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

文章乃身外之物,要多考虑编辑、审稿人和读者的感受。
11楼2016-03-22 20:57:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

丫头丫头2014

银虫 (小有名气)

送红花一朵
引用回帖:
11楼: Originally posted by Mr__Right at 2016-03-22 20:57:03
边学习,边回答这个问题。

工具:用Mathematica 解决。求解这类问题,Mathematica首屈一指。

首先是描述两条曲线的代码:


ClearAll;
R = 4878/100;
z1 = 6;
r = R/z1;
z2 = z1 - 1;
e = 705/100;
...

在呢 不知道还可以问吗

发自小木虫IOS客户端
12楼2016-05-17 10:49:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

丫头丫头2014

银虫 (小有名气)

送红花一朵
引用回帖:
10楼: Originally posted by cooooldog at 2016-03-22 08:59:16
楼主还在不?

这个问题简单,只须用Newton法反向迭代求解就可以了

只是牛顿法需要求解的方程组表达式对应于曲线围成的面积的求解函数。

楼主如果能冒个泡出来,免费求解。

sweety   hsd3521...

在呢 还能解答吗

发自小木虫IOS客户端
13楼2016-05-17 10:53:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

丫头丫头2014

银虫 (小有名气)

送红花一朵
引用回帖:
11楼: Originally posted by Mr__Right at 2016-03-22 20:57:03
边学习,边回答这个问题。

工具:用Mathematica 解决。求解这类问题,Mathematica首屈一指。

首先是描述两条曲线的代码:


ClearAll;
R = 4878/100;
z1 = 6;
r = R/z1;
z2 = z1 - 1;
e = 705/100;
...

无论怎样 还是很感谢 我会认真学习一下 吸收整理为自己的知识 而不是简单提问

发自小木虫IOS客户端
14楼2016-05-17 10:56:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Mr__Right

专家顾问 (著名写手)

引用回帖:
12楼: Originally posted by 丫头丫头2014 at 2016-05-17 10:49:39
在呢 不知道还可以问吗
...

你问吧。
文章乃身外之物,要多考虑编辑、审稿人和读者的感受。
15楼2016-05-17 16:51:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 丫头丫头2014 的主题更新
信息提示
请填处理意见