码迷,mamicode.com
首页 > 其他好文 > 详细

用数值分析方法做一道平面解析几何数学题

时间:2015-07-15 11:12:35      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:解析几何   非线性方程   matlab   mathematica   geogebra   

问题

看到有人问:

已知拱高10.4米的圆弧弧长36.7米,求圆的半径和圆心角(最好附带Matlab程序)。怎么限制x是锐角?

解答

顺便把三个软件都用一遍,用它们各自擅长的。实际上,这个问题而言,单独用任何一款都能画图和解方程(是的,Geogebra不但画图厉害,解这个方程也实际上顶呱呱)。

先根据大致情况推导一番(Geogebra作图)
技术分享

因为rθ有如下关系,只须求一个r即可:

s=r?θ

可以利用的关系从图上看出还有:

x2=h(2r?h)

sinθ2=xr

由此三个关系知道:

x2=r2sin2θ2=r2sin2(s2r)

?f(r):=r2sin2(s2r)?h(2r?h)=0

或等价形式(三角函数倍角公式):
?f(r):=2h2?4hr+r2(1?cos(sr))=0

只须求解这个关于 r 的非线性方程的非负实根就可以了。通过导数判断趋势的方式是常规而严谨的方法,不过,这里就不啰嗦了,直接上图(Mathematica作图):

Plot[f[x],{x,1,20},PlotPoints->1000,AspectRatio->1,AxesOrigin->{0,0},PlotStyle->Red,AxesStyle->Arrowheads[.035],AxesLabel->(Style[#,Bold,Italic,18,FontFamily->"TimesNewRoman"]&/@{"x","y"}),ImageSize->600,TicksStyle->Directive[{FontFamily->"Arial",Black,12}],AspectRatio->2,Ticks->{Range[21]-1,Automatic},PlotRange->{{0,18},{-80,50}}]

技术分享

从图上曲线趋势以及从导数的取值和符号应可以得到满足条件的r有三个。可以通过数值迭代的方法通过取相应初值得到对应根的数值解。这种方程求符号解难度稍高了些,不清楚是否已经有现成的方法,但数值解是必然可以的。

比如Matlab中fsolve可以轻松得到:

s=36.7;h=10.4; 
x0=1.0;
r=fsolve(@(r)2*h^2+r^2-4*h*r-r^2*cos(s/r),x0);
disp(num2str(r,‘%10.8lf‘))

得到:

5.32327124

s=36.7;h=10.4; 
x0=10;
r=fsolve(@(r)2*h^2+r^2-4*h*r-r^2*cos(s/r),x0);disp(num2str(r,‘%16.9f‘))

得到:

11.183055764

s=36.7;h=10.4; 
x0=18;
r=fsolve(@(r)2*h^2+r^2-4*h*r-r^2*cos(s/r),x0);disp(num2str(r,‘%16.9f‘))

得到:

13.999546228

到这里关键的问题就算解决了。

关于限制“锐角”的问题,则不在本解答范畴。因为,原问题表达非常模糊,如果问题如所问已经给出,则θ有没有锐角完全取决于实际的s, h之类 的已知条件,已知条件给定的情况下,结果是无法调整的。只是讨论不同情形下的可能性。——如果是想讨论如何给定s,h才可能有锐角θ的可能才有一些意义。不过就不讨论了。

版权声明:stereohomology原创本文于CSDN博客,无原始链接之转载视为认可“10欧元每字符”之报酬。

用数值分析方法做一道平面解析几何数学题

标签:解析几何   非线性方程   matlab   mathematica   geogebra   

原文地址:http://blog.csdn.net/stereohomology/article/details/46887851

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!