zoukankan      html  css  js  c++  java
  • [从头学数学] 第162节 锐角三角函数

    剧情提要:
    [机器小伟]在[project师阿伟]的陪同下进入了筑基后期的修炼,
    这次要修炼的目标是[锐角三角函数]。

    正剧開始:
    星历2016年04月05日 10:20:54, 银河系厄尔斯星球中华帝国江南行省。

    [project师阿伟]正在和[机器小伟]一起研究[锐角三角函数]。






    这座塔真的非常壮观,不知如今还是否同意游客上去观光。







    <span style="font-size:18px;">	if (1) {
    		config.setSector(1,1,1,1);
    		var r = 20;
    		config.graphPaper2D(0, 0, r);
    		config.axis2D(0, 0, 180);
    		
    		//绘制三角形
    		var triangle = new Triangle();		
    		var array = triangle.know2edges([10, 6], -90);
    		var scale = r;
    		shape.angleDraw([].concat(array), 'red', scale, 'ABC');
    		
    		//求角的三角函数值
    		var angle = 36.87 / 180*Math.PI;
    		var sinA = Math.sin(angle), cosA = Math.cos(angle), tanA = Math.tan(angle);
    		
    		//打印结果
    		var x = -200, y = -170;
    		var result = [];
    		result.push(['sinA = ', sinA]);
    		result.push(['cosA = ', cosA]);
    		result.push(['tanA = ', tanA]);
    		
    		for (var i = 0; i < 3; i++) {
    			plot.fillText(result[i][0]+result[i][1].toFixed(3), x, y, 100);
    			y += 30;
    		}
    
    	}</span>



    <span style="font-size:18px;">//第1题
    	if (1) {
    		config.setSector(1,1,1,1);
    		var r = 20;
    		config.graphPaper2D(0, 0, r);
    		config.axis2D(0, 0, 180);
    		
    		//绘制三角形
    		var triangle = new Triangle();		
    		var array = triangle.know2edges([13, 12], -90);
    		var scale = r;
    		shape.angleDraw([].concat(array), 'red', scale, 'BAC');
    		
    		//求角的三角函数值
    		var angle = 22.62 / 180*Math.PI;
    		var sinA = Math.sin(angle), cosA = Math.cos(angle), tanA = Math.tan(angle);
    		
    		//打印结果
    		var x = -200, y = -170;
    		var result = [];
    		result.push(['sinA = ', sinA]);
    		result.push(['cosA = ', cosA]);
    		result.push(['tanA = ', tanA]);
    		
    		for (var i = 0; i < 3; i++) {
    			plot.fillText(result[i][0]+result[i][1].toFixed(3), x, y, 100);
    			y += 30;
    		}
    
    		//求角的三角函数值
    		angle = Math.PI/2- angle;
    		sinA = Math.sin(angle);
    		cosA = Math.cos(angle);
    		tanA = Math.tan(angle);
    		
    		//打印结果
    		x = -200, y = 30;
    		result = [];
    		result.push(['sinB = ', sinA]);
    		result.push(['cosB = ', cosA]);
    		result.push(['tanB = ', tanA]);
    		
    		for (var i = 0; i < 3; i++) {
    			plot.fillText(result[i][0]+result[i][1].toFixed(3), x, y, 100);
    			y += 30;
    		}
    	}
    	</span>



    <span style="font-size:18px;">	if (1) {
    		config.setSector(1,1,1,1);
    		var r = 20;
    		config.graphPaper2D(0, 0, r);
    		config.axis2D(0, 0, 180);
    		
    		//绘制三角形
    		var triangle = new Triangle();		
    		var array = triangle.know2edges([2, 3], 90);
    		var scale = 3*r;
    		shape.angleDraw([].concat(array), 'red', scale, 'ACB');
    		
    		//求角的三角函数值
    		var angle = 56.31 / 180*Math.PI;
    		var sinA = Math.sin(angle), cosA = Math.cos(angle), tanA = Math.tan(angle);
    		
    		//打印结果
    		var x = -200, y = -170;
    		var result = [];
    		result.push(['sinA = ', sinA]);
    		result.push(['cosA = ', cosA]);
    		result.push(['tanA = ', tanA]);
    		
    		for (var i = 0; i < 3; i++) {
    			plot.fillText(result[i][0]+result[i][1].toFixed(3), x, y, 100);
    			y += 30;
    		}
    
    		//求角的三角函数值
    		angle = Math.PI/2- angle;
    		sinA = Math.sin(angle);
    		cosA = Math.cos(angle);
    		tanA = Math.tan(angle);
    		
    		//打印结果
    		x = -200, y = 30;
    		result = [];
    		result.push(['sinB = ', sinA]);
    		result.push(['cosB = ', cosA]);
    		result.push(['tanB = ', tanA]);
    		
    		for (var i = 0; i < 3; i++) {
    			plot.fillText(result[i][0]+result[i][1].toFixed(3), x, y, 100);
    			y += 30;
    		}
    	}</span>




    <span style="font-size:18px;">>>> import math;
    >>> math.sin(18)
    -0.750987246771676
    >>> math.sin(18/180*math.pi)
    0.3090169943749474
    >>> math.tan(30.6/180*math.pi)
    0.5913983513994712</span>


    <span style="font-size:18px;">>>> math.asin(0.5018);
    0.5256784866432485
    >>> _*180/math.pi
    30.119158665482352
    >>> a = _;
    >>> (a-math.floor(a))*60;
    7.149519928941146
    >>> b = _;
    >>> (b-math.floor(b))*60;
    8.971195736468758</span>



    为了方便以后的计算。阿伟制作了一件法器:

    <span style="font-size:18px;">###
    # @usage   三角函数调用封装
    # @author  mw
    # @date    2016年04月05日  星期二  09:36:50 
    # @param
    # @return
    #
    ###
    def triFun():
        #须要计算的任务
        #输入量为角度制,依次为度。分,秒
        #可输出显示度、分、秒的表达式
        #用于计算锐角三角函数
        #对于角度变换,还没有经过測试
        #以后可扩展加入其他多种数学函数
        task = [
            ['sin', 20],
            ['cos', 70],
            ['sin', 35],
            ['cos', 55],
            ['sin', 15, 32],
            ['cos', 74, 28],
            ['tan', 3, 8],
            ['tan', 80, 25, 43],
            ['asin', 0.6275],
            ['asin', 0.0547],
            ['acos', 0.6252],
            ['acos', 0.1659],
            ['atan', 4.8425],
            ['atan', 0.8816],
            ['sin', 18],
            ['tan', 30, 36],
            ['asin', 0.5018]
            ];
        size = len(task);
        result = [];
        import math;
    
        for i in range(size):        
            if task[i][0] == 'sin' or task[i][0] == 'cos' or task[i][0] == 'tan' 
               or task[i][0] == 'cot':
                size_1 = len(task[i]);
                angle = 0;
                if size_1 == 2:
                    angle = task[i][1];
                elif size_1 == 3:
                    angle = task[i][1]+task[i][2]/60;
                elif size_1 == 4:
                    angle = task[i][1]+task[i][2]/60+task[i][3]/3600;
    
                angle = angle/180*math.pi;
    
                if task[i][0] == 'sin':
                    s = '';
                    if size_1 == 2:
                        s = task[i][0]+str(task[i][1])+'°';
                    elif size_1 == 3:
                        s = task[i][0]+str(task[i][1])+'°'+str(task[i][2])+''';
                    elif size_1 == 4:
                        s = task[i][0]+str(task[i][1])+'°'+str(task[i][2])+'''+str(task[i][3])+'″';
    
                    s += ' = ';
                    s += str(round(math.sin(angle), 3));
                    s += '
    ';
                    result.append(s);
                elif task[i][0] == 'cos':
                    s = '';
                    if size_1 == 2:
                        s = task[i][0]+str(task[i][1])+'°';
                    elif size_1 == 3:
                        s = task[i][0]+str(task[i][1])+'°'+str(task[i][2])+''';
                    elif size_1 == 4:
                        s = task[i][0]+str(task[i][1])+'°'+str(task[i][2])+'''+str(task[i][3])+'″';
    
                    s += ' = ';
                    s += str(round(math.cos(angle), 3));
                    s += '
    ';
                    result.append(s);
                elif task[i][0] == 'tan':
                    s = '';
                    if size_1 == 2:
                        s = task[i][0]+str(task[i][1])+'°';
                    elif size_1 == 3:
                        s = task[i][0]+str(task[i][1])+'°'+str(task[i][2])+''';
                    elif size_1 == 4:
                        s = task[i][0]+str(task[i][1])+'°'+str(task[i][2])+'''+str(task[i][3])+'″';
    
                    s += ' = ';
                    s += str(round(math.tan(angle), 3));
                    s += '
    ';
                    result.append(s);
                elif task[i][0] == 'cot':
                    s = '';
                    if size_1 == 2:
                        s = task[i][0]+str(task[i][1])+'°';
                    elif size_1 == 3:
                        s = task[i][0]+str(task[i][1])+'°'+str(task[i][2])+''';
                    elif size_1 == 4:
                        s = task[i][0]+str(task[i][1])+'°'+str(task[i][2])+'''+str(task[i][3])+'″';
    
                    s += ' = ';
                    s += str(round(1/math.tan(angle), 3));
                    s += '
    ';
                    result.append(s);
            else:
                if task[i][0] == 'asin':
                    s = '';
                    s = task[i][0]+str(task[i][1])+' = ';
                    res = math.asin(task[i][1])/math.pi*180;
                    if res < 0:
                        s += '-';
                    absres = abs(res);
                    s += str(math.floor(absres))+'°'+str(math.floor(absres*60)%60)+'''+str(round(absres*3600)%60)+'″';
                    s += '
    ';
                    result.append(s);
                elif task[i][0] == 'acos':
                    s = '';
                    s = task[i][0]+str(task[i][1])+' = ';
                    res = math.acos(task[i][1])/math.pi*180;
                    if res < 0:
                        s += '-';
                    absres = abs(res);
                    s += str(math.floor(absres))+'°'+str(math.floor(absres*60)%60)+'''+str(round(absres*3600)%60)+'″';
                    s += '
    ';
                    result.append(s);
                elif task[i][0] == 'atan':
                    s = '';
                    s = task[i][0]+str(task[i][1])+' = ';
                    res = math.atan(task[i][1])/math.pi*180;
                    if res < 0:
                        s += '-';
                    absres = abs(res);
                    s += str(math.floor(absres))+'°'+str(math.floor(absres*60)%60)+'''+str(round(absres*3600)%60)+'″';
                    s += '
    ';
                    result.append(s);
                elif task[i][0] == 'acot':
                    s = '';
                    s = task[i][0]+str(task[i][1])+' = ';
                    res = 90-math.atan(task[i][1])/math.pi*180;
                    if res < 0:
                        s += '-';
                    absres = abs(res);
                    s += str(math.floor(absres))+'°'+str(math.floor(absres*60)%60)+'''+str(round(absres*3600)%60)+'″';
                    s += '
    ';
                    result.append(s);
                    
                else:
                    pass;
                
        size = len(result);
        for i in range(size):
            print(result[i]);
            
    if __name__ == '__main__':
        triFun();
    	</span>

    这样就能够非常快得到全部结果:

    <span style="font-size:18px;">>>> 
    sin20° = 0.342
    
    cos70° = 0.342
    
    sin35° = 0.574
    
    cos55° = 0.574
    
    sin15°32' = 0.268
    
    cos74°28' = 0.268
    
    tan3°8' = 0.055
    
    tan80°25'43″ = 5.93
    
    asin0.6275 = 38°51'57″
    
    asin0.0547 = 3°8'8″
    
    acos0.6252 = 51°18'11″
    
    acos0.1659 = 80°27'2″
    
    atan4.8425 = 78°19'56″
    
    atan0.8816 = 41°23'58″
    
    sin18° = 0.309
    
    tan30°36' = 0.591
    
    asin0.5018 = 30°7'9″</span>








    <span style="font-size:18px;">//例1
    	if (1) {
    		config.setSector(1,1,1,1);
    		var r = 20;
    		config.graphPaper2D(0, 0, r);
    		config.axis2D(0, 0, 180);
    		
    		//绘制三角形
    		var triangle = new Triangle();		
    		var array = triangle.know2edges([Math.sqrt(6), Math.sqrt(2)], 90);
    		var scale = 3*r;
    		shape.angleDraw([].concat(array), 'red', scale, 'BCA');
    		
    		//求角的三角函数值
    		var angle = 60 / 180*Math.PI;
    		var sinA = Math.sin(angle), cosA = Math.cos(angle), tanA = Math.tan(angle);
    		
    		//打印结果
    		var x = -200, y = -170;
    		var result = [];
    		result.push(['sinA = ', sinA]);
    		result.push(['cosA = ', cosA]);
    		result.push(['tanA = ', tanA]);
    		
    		for (var i = 0; i < 3; i++) {
    			plot.fillText(result[i][0]+result[i][1].toFixed(3), x, y, 100);
    			y += 30;
    		}
    
    		//求角的三角函数值
    		angle = Math.PI/2- angle;
    		sinA = Math.sin(angle);
    		cosA = Math.cos(angle);
    		tanA = Math.tan(angle);
    		
    		//打印结果
    		x = -200, y = 30;
    		result = [];
    		result.push(['sinB = ', sinA]);
    		result.push(['cosB = ', cosA]);
    		result.push(['tanB = ', tanA]);
    		
    		for (var i = 0; i < 3; i++) {
    			plot.fillText(result[i][0]+result[i][1].toFixed(3), x, y, 100);
    			y += 30;
    		}
    	}</span>



    <span style="font-size:18px;">//例2
    	if (1) {
    		config.setSector(1,1,1,1);
    		var r = 20;
    		config.graphPaper2D(0, 0, r);
    		config.axis2D(0, 0, 180);
    		
    		//绘制三角形
    		var triangle = new Triangle();		
    		//此处两角分别为B, A,即第三、一两顶点。边则是AC, 即一、二两顶点
    		var array = triangle.know2angles([35, 55], 20);
    		var scale = r/4;
    		shape.angleDraw([].concat(array), 'red', scale, 'ACB');
    		
    		//求角的三角函数值
    		var angle = 55 / 180*Math.PI;
    		var sinA = Math.sin(angle), cosA = Math.cos(angle), tanA = Math.tan(angle);
    		
    		//打印结果
    		var x = -200, y = -170;
    		var result = [];
    		result.push(['sinA = ', sinA]);
    		result.push(['cosA = ', cosA]);
    		result.push(['tanA = ', tanA]);
    		
    		for (var i = 0; i < 3; i++) {
    			plot.fillText(result[i][0]+result[i][1].toFixed(3), x, y, 100);
    			y += 30;
    		}
    
    		//求角的三角函数值
    		angle = Math.PI/2- angle;
    		sinA = Math.sin(angle);
    		cosA = Math.cos(angle);
    		tanA = Math.tan(angle);
    		
    		//打印结果
    		x = -200, y = 30;
    		result = [];
    		result.push(['sinB = ', sinA]);
    		result.push(['cosB = ', cosA]);
    		result.push(['tanB = ', tanA]);
    		
    		for (var i = 0; i < 3; i++) {
    			plot.fillText(result[i][0]+result[i][1].toFixed(3), x, y, 100);
    			y += 30;
    		}
    	}
    	</span>



    <span style="font-size:18px;">//神舟飞船
    	if (1) {
    		config.setSector(1,1,1,1);
    		var r = 20;
    		config.graphPaper2D(0, 0, r);
    		config.axis2D(0, 0, 180);
    		
    		//绘制三角形
    		var triangle = new Triangle();		
    		//此处两边分别为FO,即第一二两顶点,OQ, 即二三两顶点,直角为Q
    		var array = triangle.know2edges([6400+343, 6400], -90);
    		var scale = 0.035;
    		shape.angleDraw([].concat(array), 'red', scale, 'FOQ');
    		
    		//求角的三角函数值
    		var angle = 18.35 / 180*Math.PI;
    		var sinA = Math.sin(angle), cosA = Math.cos(angle), tanA = Math.tan(angle);
    		
    		//打印结果
    		var x = -200, y = -170;
    		var result = [];
    		result.push(['sinA = ', sinA]);
    		result.push(['cosA = ', cosA]);
    		result.push(['tanA = ', tanA]);
    		
    		for (var i = 0; i < 3; i++) {
    			plot.fillText(result[i][0]+result[i][1].toFixed(3), x, y, 100);
    			y += 30;
    		}
    
    		//求角的三角函数值
    		angle = Math.PI/2- angle;
    		sinA = Math.sin(angle);
    		cosA = Math.cos(angle);
    		tanA = Math.tan(angle);
    		
    		//打印结果
    		x = -200, y = 30;
    		result = [];
    		result.push(['sinB = ', sinA]);
    		result.push(['cosB = ', cosA]);
    		result.push(['tanB = ', tanA]);
    		
    		for (var i = 0; i < 3; i++) {
    			plot.fillText(result[i][0]+result[i][1].toFixed(3), x, y, 100);
    			y += 30;
    		}
    		
    		y += 50;
    		plot.fillText('A => O , B => Q', x, y, 150);
    	}
    	
    	
    >>> 18.35/180*3.142*6400
    2049.9804444444444</span>



    本节到此结束。欲知后事怎样。请看下回分解。

  • 相关阅读:
    升级salt导致进程kill问题记录
    记一次centos6升级salt-minion启动失败的问题
    3.ElasticSearch的倒排索引
    4.ElasticSearch的基本api操作
    1.ElasticSearch介绍及基本概念
    10.openldap备份与恢复
    1.Python3.6环境部署
    8.openldap mirrormode(主主同步)
    7.openldap使用ssl加密认证
    Python json解析
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7256146.html
Copyright © 2011-2022 走看看