APP下载

例谈算法在求解超越方程中的应用

2020-09-10宋美芸谢佐杰

语数外学习·高中版上旬 2020年3期
关键词:差值圆弧等式

宋美芸 谢佐杰

算法是高中数学中的重要内容,也是计算机科学的基础,是连接问题与计算机程序语言之间的桥梁.若一元方程[f(x)=0]的左端函数[f(x)]不是关于x的多项式,那么我们就将类方程称之为超越方程.超越方程一般没有解析解,而只有数值解或近似解.求解超越方程近似解的方法有很多,而利用算法或者计算机程序语言来求解是最为简便的一种方法.笔者结合一个实际应用问题,来谈一谈算法在求解超越方程中的应用.

问题:内江某玻璃厂的工人需要切割一块如图1所示的玻璃窗.若该窗户的横梁长为a、竖梁高为b、圆弧长为[l],为了能准确切割出这块玻璃,工人必须知道此圆弧半径[R].求该圆弧的半径[R].

解析:如图2,我们先作辅助线,将扇形扩充为一个完整的圆,连接AB、AO、BO,其中AO、BO为圆的半径,[AB]为圆的一条弦,作弦[AB]的中垂线DO,则DO必过圆心且平分[∠AOB],令弧[AB]所对的圆心角∠AOB=θ(θ为弧度角),建立等式[l=θ⋅R],[sinθ2=a2+b22R],两式联立消去[θ]得[sinl2R=a2+b22R].该方程属于超越方程,其中R是要求的未知量,该方程无法直接求解.一般,我们会采用常规方法,利用函数与方程的思想,令[fR=sinl2R][=a2+b22R],在同一个平面直角坐标中分别作出这两个函数的图象,于是两图象交点的横坐标即为方程的解.此方法在理论上可行,但在实际操作中存在很大的困难.因为一般我们很难作出准确的图形,并且通过画图得出的结果必然存在很大的误差,所以这种方法并不是解答这个问题的最好方法.

我们可以转换思路,利用算法来求解.首先,我们需要确保数据的准确性,将数据的单位设置为毫米,这样可以将误差控制在0.01毫米内.然后,我们可以从0.01毫米开始取值,让R的值逐次递增0.01,分别将其代入方程左边和右边的两个等式[M=sinl2R]、[N=a2+b22R]中,并算出M和N的值,判断|M-N|是否小于或等于0.001,其程序框圖如图3所示.如果该值小于或等于0.001,我们就可以近似认为m=n,此时R的值就是方程的解.人工计算肯定需要很长的时间,但计算机可以以每秒上亿次的计算速度来进行计算,得出结果所花的时间不足一秒,所以此方法可行.

该算法的关键是在R值递增的过程中,判断等式两边的差值是否小于或等于0.001.由于三角函数的正弦值不会大于1,我们可以将程序设计为:当等式两边的差值大于或等于1时,R每次递增1;当等式两边的差值小于1时,R每次递增0.01,这样可以有效地提高运算的效率,并且使最终计算出的结果误差在0.01内.如果我们想提高计算的精确度,就可以把当差值小于1时,R每次递增的值设置得更小,这样可以按照我们的需要来设置算法.

该算法的程序如下:

$(function ( ) {

var $a = $("#input-a");

var $b = $("#input-b");

var $l = $("#input-l");

$("#getResult").on("click", function (      ) {

var l = parseFloat($l.val( )); //弧长

var a = parseFloat($a.val( )); //长

var b = parseFloat($b.val( )); //高

if (isNaN(l) || isNaN(a) || isNaN(b))

{ alert("只能输入数字");

return; }

var r = 1; var d = null;//差值小于0.001

var count = 0; //计算次数

var c = Math.sqrt(a * a + b * b);

do { var nd = Math.abs(Math.sin(l / (2 * r)) * (2 * r) - c);

if (nd <= 1) { //差值小于1

r += 0.01;  }

else { r += 1;  }

count++;    d = nd;

if (count > 200000) { alert('无法计算出结果');

return;   }

} while (d > 0.001);

alert("r=" + r.toFixed(2));

return false;  })});

其程序架构过程如图4所示,其运算过程如图5所示.

如果所输入的参数不合要求,出现如[l≤a2+b2]的情况,则计算结果会提示“无法计算出结果”.为了防止程序进入死循环,我们需要增加内容:在计算200000次后,仍然没有找到满足条件的解,则为无解.此方法还可以推广到解答其它不易直接求解的方程中.

(作者单位:四川省内江市第一中学)

猜你喜欢

差值圆弧等式
半圆与半圆弧
一个连等式与两个不等式链
如何让学生更好地掌握圆弧连接的画法
关注
清丰县新旧气象观测站气温资料对比分析
智力冲关·奇怪的等式
一个等式的应用
阳泉站站址迁移对观测资料的影响分析
任意一个角三等分的尺规画法