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

[从头学数学] 第209节 带着计算机去高考(一)

时间:2016-05-18 18:46:54      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:

剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第八转的修炼。设想一个场景:
如果允许你带一台不连网的计算机去参加高考,你会放弃选择一个手拿计算器和草稿本吗
?阿伟决定和小伟来尝试一下用计算机算高考题会是怎样的感觉。

正剧开始:

星历2016年05月16日 17:25:11, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起做着2000年的江苏省数学高考题]。



技术分享

技术分享


<span style="font-size:18px;">#题1
>>> 
4

def tmp():
    a = [2, 3, 4, 5];
    f = '2**n+n';

    for i in range(len(a)):
        n = a[i];
        if eval(f) == 20:
            print(n);</span>

技术分享

<span style="font-size:18px;">#题2
>>> 
(2.999955999354648+1.732076211353316j)

def tmp2():
    a = (3-1.732j);
    thita = math.pi/3;
    b = complex(math.cos(thita), math.sin(thita));
    c = a*b;
    print(c);</span>


技术分享

<span style="font-size:18px;">#题3
>>> 
D 2.449489742783178

def tmp3():
    ab=2**0.5;
    bc=3**0.5;
    ac=6**0.5
    # => sqrt(a**2+b**2+c**2)

    a2 = ab*ac/bc;
    b2 = ab*bc/ac;
    c2 = bc*ac/ab;

    table = 'ABCD';
    answer = math.sqrt(a2+b2+c2);
    choice = [2*3**0.5, 3*2**0.5, 6, 6**0.5];

    for i in range(len(choice)):
        if abs(choice[i]-answer) < 0.1:
            print(table[i], answer);</span>

技术分享

<span style="font-size:18px;">#题4
>>> 
象限 1
cos ---  -0.03291312439684896
tan ---  0.11633650601051977
象限 2
cos ---  0.032913124396848896
tan ---  -0.08753362531749721
象限 3
cos ---  -0.032913124396848875
tan ---  -0.11633650601051942
象限 4
cos ---  0.032913124396848896
tan ---  0.08753362531749721


def tmp4():
    #给出60, 45度两个特例
    a = [math.pi/3, math.pi/4];

    for i in range(4):
        thita_1 = a[0]+math.pi/2*i;
        thita_2 = a[1]+math.pi/2*i;
        print('象限', i+1);
		
		#与sin差值相乘判断同号
        d1 = (math.cos(thita_1)-math.cos(thita_2))*(math.sin(thita_1)-math.sin(thita_2));
        d2 = (math.tan(thita_1)-math.tan(thita_2))*(math.sin(thita_1)-math.sin(thita_2));
        print('cos --- ', d1);
        print('tan --- ', d2);</span>


技术分享

技术分享


<span style="font-size:18px;">//题5
	 if (1) {      
        var r = 20;            
        config.setSector(1,1,1,1);              
        config.graphPaper2D(0, 0, r);            
        config.axis2D(0, 0,180);              
                
        //坐标轴设定        
        var scaleX = 2*r, scaleY = 2*r;          
        var spaceX = 2, spaceY = 2;           
        var xS = -10, xE = 10;          
        var yS = -10, yE = 10;          
        config.axisSpacing(xS, xE, spaceX, scaleX, 'X');            
        config.axisSpacing(yS, yE, spaceY, scaleY, 'Y');            
                    
        var transform = new Transform();            
        //存放函数图像上的点        
        var a = [], b = [], c = [], d = [];          
                  
        //需要显示的函数说明    
                    //希腊字母表(存此用于Ctrl C/V  
            //ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ  
            //αβγδεζηθικλμνξοπρστυφχψω  
        var f1 = 'y = -xcosx', f2 = '', f3 = '', f4 = '';        
            
  
		for (var x = xS; x <= xE; x+=0.4) {  
            a.push([x, taskFun(x)]);  
        }  
          
                  
        //存放临时数组        
        var tmp = [];        
                  
        //显示变换        
        if (a.length > 0) {        
            a = transform.scale(transform.translate(a, 0, 0), scaleX/spaceX, scaleY/spaceY);         
            //函数1        
            tmp = [].concat(a);            
            shape.pointDraw(tmp, 'red');            
            tmp = [].concat(a);            
            shape.multiLineDraw(tmp, 'pink');          
                      
            plot.setFillStyle('red');        
            plot.fillText(f1, 100, -180, 200);          
        }  
  
          
    } 
}  

function taskFun(x) {
	return x*Math.cos(x);
}
</span>

技术分享


<span style="font-size:18px;">#题6
>>> 
当月工资介于 1400 ,  1500

def tmp6():
    a = [];
    d = 26.78;
    
    for i in range(800, 3000, 100):
        if (i < 800):
            a.append(0);
        elif (i < 800+500):
            a.append((i-800)*0.05);
        elif (i < 800+500+1500):
            a.append(500*0.05+(i-1300)*0.1);
        elif (i < 800+2000+3000):
            a.append(500*0.05+1500*0.1+(i-2800)*0.15);

        if (len(a)>2 and a[-2] <d and a[-1]>=d):
            print('当月工资介于', i, ', ', i+100);
            break;
			</span>

技术分享


<span style="font-size:18px;">#题7
>>> 
0.8726396796036775, 0.8958797346140275, 0.9162907318741551

def tmp7():
    #给定特例
    a, b = 3, 2;

    P = (math.log(a)*math.log(b))**0.5;
    Q = 0.5*(math.log(a)+math.log(b));
    R = math.log((a+b)/2);

    print('{0}, {1}, {2}'.format(P, Q, R));</span>


技术分享


技术分享


技术分享


<span style="font-size:18px;">#题9
>>> 
A 1.1591549430918953

def tmp9():
    h = 1;
    S_side = h*h;
    r = h/(math.pi*2);
    S_total = math.pi*r**2*2+S_side;

    #答案
    answer = S_total/S_side;

    table = 'ABCD';
    #选项
    choice = [1/(math.pi*2)+1, 1/(math.pi*4)+1,
              1/(math.pi)+2, 1/(math.pi*2)+2];

    for i in range(len(choice)):
        if abs(choice[i]-answer) < 0.001:
            print(table[i], answer);</span>


技术分享

技术分享


<span style="font-size:18px;">	 if (1) {      
        var r = 20;            
        config.setSector(1,1,1,1);              
        config.graphPaper2D(0, 0, r);            
        config.axis2D(0, 0,180);              
                
        //坐标轴设定        
        var scaleX = 2*r, scaleY = 2*r;          
        var spaceX = 1, spaceY = 1;           
        var xS = -5, xE = 5;          
        var yS = -10, yE = 10;          
        config.axisSpacing(xS, xE, spaceX, scaleX, 'X');            
        config.axisSpacing(yS, yE, spaceY, scaleY, 'Y');            
                    
        var transform = new Transform();            
        //存放函数图像上的点        
        var a = [], b = [], c = [], d = [];          
                  
        //需要显示的函数说明    
                    //希腊字母表(存此用于Ctrl C/V  
            //ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ  
            //αβγδεζηθικλμνξοπρστυφχψω  
        var f1 = 'x^2+y^2+4x+3 = 0', f2 = 'y = 1.732/3*x', f3 = 'y=1/(4a)', f4 = '';        
            
		//(1-(x+2)^2)^0.5
		for (var x = xS; x <= xE; x+=0.2) {  
            a.push([x, Math.pow(1-(x+2)*(x+2), 0.5)]);  
			a.push([x, -Math.pow(1-(x+2)*(x+2), 0.5)]); 
			b.push([x, 1.732/3*x]);

        }  
          
                  
        //存放临时数组        
        var tmp = [];        
                  
        //显示变换        
        if (a.length > 0) {        
            a = transform.scale(transform.translate(a, 0, 0), scaleX/spaceX, scaleY/spaceY);         
            //函数1        
            tmp = [].concat(a);            
            shape.pointDraw(tmp, 'red');            
            tmp = [].concat(a);            
            shape.multiLineDraw(tmp, 'pink');          
                      
            plot.setFillStyle('red');        
            plot.fillText(f1, 100, -90, 200);          
        }  
		    
		        //显示变换        
        if (b.length > 0) {        
            b = transform.scale(transform.translate(b, 0, 0), scaleX/spaceX, scaleY/spaceY);         
            //函数1        
            tmp = [].concat(b);            
            shape.pointDraw(tmp, 'blue');            
            tmp = [].concat(b);            
            shape.multiLineDraw(tmp, 'blue');          
                      
            plot.setFillStyle('blue');        
            plot.fillText(f2, 100, -120, 200);          
        }  
    } 
	</span>

技术分享

技术分享

<span style="font-size:18px;">//题11
	 if (1) {      
        var r = 20;            
        config.setSector(1,1,1,1);              
        config.graphPaper2D(0, 0, r);            
        config.axis2D(0, 0,180);              
                
        //坐标轴设定        
        var scaleX = 2*r, scaleY = 2*r;          
        var spaceX = 0.5, spaceY = 0.5;           
        var xS = -10, xE = 10;          
        var yS = -10, yE = 10;          
        config.axisSpacing(xS, xE, spaceX, scaleX, 'X');            
        config.axisSpacing(yS, yE, spaceY, scaleY, 'Y');            
                    
        var transform = new Transform();            
        //存放函数图像上的点        
        var a = [], b = [], c = [], d = [];          
                  
        //需要显示的函数说明    
                    //希腊字母表(存此用于Ctrl C/V  
            //ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ  
            //αβγδεζηθικλμνξοπρστυφχψω  
        var f1 = 'y = ax^2', f2 = 'y = -1/(4a)', f3 = 'y=1/(4a)', f4 = '';        
            
		//(1-(x+2)^2)^0.5
		for (var x = xS; x <= xE; x+=0.2) {  
            a.push([x, x*x]);  
			b.push([x, -1/4]);
			c.push([x, 1/4]);
        }  
          
                  
        //存放临时数组        
        var tmp = [];        
                  
        //显示变换        
        if (a.length > 0) {        
            a = transform.scale(transform.translate(a, 0, 0), scaleX/spaceX, scaleY/spaceY);         
            //函数1        
            tmp = [].concat(a);            
            shape.pointDraw(tmp, 'red');            
            tmp = [].concat(a);            
            shape.multiLineDraw(tmp, 'pink');          
                      
            plot.setFillStyle('red');        
            plot.fillText(f1, 100, -90, 200);          
        }  
		
		if (b.length > 0) {    
            b = transform.scale(transform.translate(b, 0, 0), scaleX/spaceX, scaleY/spaceY);                
            //函数2    
            //tmp = [].concat(b);        
            //shape.pointDraw(tmp, 'blue');        
            tmp = [].concat(b);        
            shape.multiLineDraw(tmp, '#22CCFF');     
                
            plot.setFillStyle('blue');    
            plot.fillText(f2, 100, -120, 200);     
    
        }    
               
        if (c.length > 0) {    
            c = transform.scale(transform.translate(c, 0, 0), scaleX/spaceX, scaleY/spaceY);      
            //tmp = [].concat(c);        
            //shape.pointDraw(tmp, 'green');        
            tmp = [].concat(c);        
            shape.multiLineDraw(tmp, '#CCFF22');      
            plot.setFillStyle('green');      
            plot.fillText(f3, 100, -150, 200);     
        } 
		
  
          
    } </span>


技术分享


<span style="font-size:18px;">#题12
def tmp12():
    #母线
    L = 1;
    thita = 0;
    V_top = 1/3*Math.pi*(L*math.cos(thita)**2*math.sin(thita))**2*L*math.cos(thita);
    V_total = 1/3*Math.pi*(L*math.sin(thita))**2*L*math.cos(thita);

    #V_top / V_total = math.cos(thita)**4 = 1/2</span>

技术分享


<span style="font-size:18px;">#题13
>>> 
6*42 = 252

#排列公式  
def arrangement(n, m):  
    if n < m:  
        return arrangement(m, n);  
    else:  
        factorial = 1;  
        for i in range(n, n-m, -1):  
            factorial*=i;  
        return factorial;  
  
#组合公式  
def combination(n, m):  
    if (n < m):  
        return combination(m, n);  
    else:  
        return arrangement(n, m)/arrangement(m,m);
    
def tmp13():
    a = arrangement(3, 3);
    b = arrangement(7, 2);
    print('{0}*{1} = {2}'.format(a, b, a*b));</span>


技术分享


<span style="font-size:18px;">#题14
def tmp14():
    #椭圆长短轴
    a = 3;
    b = 2;
    c = (a**2-b**2)**0.5;

    print(c);
	
>>> 
2.23606797749979

y**2 = (1-x**2/9)*4
(x-c)**2+(y)**2+(x+c)**2+(y)**2 = 4*c**2
2*x**2 + 2*y**2 = 2*c**2
5/9*x**2+4 = c**2

>>> 
2.23606797749979
x =  1.3416407864998743

    x = ((c**2-4)*9/5)**0.5;
    print('x = ', x);

=>-1.342 < x < 1.342 

>>> 3/5**0.5
1.3416407864998738</span>

技术分享

<span style="font-size:18px;">#题15
a1 = 1 = 2/2; 
2a2**2+a2-1 = 0; => a2 = 1/2;
3a3**2+1/2*a3-1/2; 1/3
=>an = 1/n


	if (1) {
		var equation = new Equation();  
          
        var a = [2, 1, -1];  
        equation.quadratic(a);  
	}
	
方程 2x^[2] + 1x + -1 = 0 =>
Δ = b^[2] - 4ac = 9 ;
方程的解为:x1 = -1, x2 = 0.5 ;
方程根与系数的关系:x1 + x2 = -0.5, x1 * x2 = -0.5 ;

	if (1) {
		var equation = new Equation();  
          
        var a = [3, 1/2, -1/2];  
        equation.quadratic(a);  
	}
	
方程 3x^[2] + 0.5x + -0.5 = 0 =>
Δ = b^[2] - 4ac = 6.25 ;
方程的解为:x1 = -0.5, x2 = 0.3333333333333333 ;
方程根与系数的关系:x1 + x2 = -0.16666666666666669, x1 * x2 = -0.16666666666666666 ;</span>

技术分享


技术分享

技术分享

<span style="font-size:18px;">//题17
	 if (1) {      
        var r = 20;            
        config.setSector(1,1,1,1);              
        config.graphPaper2D(0, 0, r);            
        config.axis2D(0, 0,180);              
                
        //坐标轴设定        
        var scaleX = 2*r, scaleY = 2*r;          
        var spaceX = 2, spaceY = 0.4;           
        var xS = -10, xE = 10;          
        var yS = -10, yE = 10;          
        config.axisSpacing(xS, xE, spaceX, scaleX, 'X');            
        config.axisSpacing(yS, yE, spaceY, scaleY, 'Y');            
                    
        var transform = new Transform();            
        //存放函数图像上的点        
        var a = [], b = [], c = [], d = [];          
                  
        //需要显示的函数说明    
                    //希腊字母表(存此用于Ctrl C/V  
            //ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ  
            //αβγδεζηθικλμνξοπρστυφχψω  
        var f1 = 'y = 1/2cos^2+0.868sinxcosx+1', f2 = 'y = -1/(4a)', f3 = 'y=1/(4a)', f4 = '';        
            
		//(1-(x+2)^2)^0.5
		for (var x = xS; x <= xE; x+=0.2) {  
            a.push([x, taskFun(x)]);  

        }  
          
                  
        //存放临时数组        
        var tmp = [];        
                  
        //显示变换        
        if (a.length > 0) {        
            a = transform.scale(transform.translate(a, 0, 0), scaleX/spaceX, scaleY/spaceY);         
            //函数1        
            tmp = [].concat(a);            
            shape.pointDraw(tmp, 'red');            
            tmp = [].concat(a);            
            shape.multiLineDraw(tmp, 'pink');          
                      
            plot.setFillStyle('red');        
            plot.fillText(f1, 100, -90, 200);          
        }  
		          
    } 
	

}  

function taskFun(x) {
	return 0.5*Math.pow(Math.cos(x), 2)+0.866*Math.sin(x)*Math.cos(x)+1;
}</span>

技术分享


技术分享

技术分享


<span style="font-size:18px;">//题19
	 if (1) {      
        var r = 20;            
        config.setSector(1,1,1,1);              
        config.graphPaper2D(0, 0, r);            
        config.axis2D(0, 0,180);              
                
        //坐标轴设定        
        var scaleX = 2*r, scaleY = 2*r;          
        var spaceX = 2, spaceY = 0.4;           
        var xS = -10, xE = 10;          
        var yS = -10, yE = 10;          
        config.axisSpacing(xS, xE, spaceX, scaleX, 'X');            
        config.axisSpacing(yS, yE, spaceY, scaleY, 'Y');            
                    
        var transform = new Transform();            
        //存放函数图像上的点        
        var a = [], b = [], c = [], d = [];          
                  
        //需要显示的函数说明    
                    //希腊字母表(存此用于Ctrl C/V  
            //ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ  
            //αβγδεζηθικλμνξοπρστυφχψω  
        var f1 = 'y = (x^2+1)^0.5-x', f2 = 'y = -1/(4a)', f3 = 'y=1/(4a)', f4 = '';        
            
		//(1-(x+2)^2)^0.5
		for (var x = xS; x <= xE; x+=0.2) {  
            a.push([x, taskFun(x)]);  

        }  
          
                  
        //存放临时数组        
        var tmp = [];        
                  
        //显示变换        
        if (a.length > 0) {        
            a = transform.scale(transform.translate(a, 0, 0), scaleX/spaceX, scaleY/spaceY);         
            //函数1        
            tmp = [].concat(a);            
            shape.pointDraw(tmp, 'red');            
            tmp = [].concat(a);            
            shape.multiLineDraw(tmp, 'pink');          
                      
            plot.setFillStyle('red');        
            plot.fillText(f1, 100, -90, 200);          
        }  
		          
    } 
	

}  </span>

技术分享

<span style="font-size:18px;">#题20
def tmp20():
    c1 = 2+3;
    c2 = 2**2+3**2;
    c3 = 2**3+3**3;
    c4 = 2**4+3**4;

    #(c3-pc2)**2 = (c4-pc3)*(c2-pc1);
    #c3**2+p**2*c2**2-2*p*c3*c2 = c2*c4+p**2*c1*c3-p*(c2*c3+c1*c4)
    coef = [c2**2-c1*c3, c1*c4-c2*c3, c3**2-c2*c4];
    print(coef);

>>> 
[-6, 30, -36]

	if (1) {
		var equation = new Equation();  
          
        var a = [-6, 30, -36] 
        equation.quadratic(a);  
	}
	
方程 6x^[2] + -30x + 36 = 0 =>
Δ = b^[2] - 4ac = 36 ;
方程的解为:x1 = 2, x2 = 3 ;
方程根与系数的关系:x1 + x2 = 5, x1 * x2 = 6 ;</span>


技术分享


技术分享


好了,可能及格都难。这些题陷阱相当多,运算量也很大,基本上如果不经过一番大运算,

得到的答案你不用想也知道是错的。


现在阿伟二周目来看这些题,做的那是心惊肉跳的。


本节到此结束,欲知后事如何,请看下回分解。

[从头学数学] 第209节 带着计算机去高考(一)

标签:

原文地址:http://blog.csdn.net/mwsister/article/details/51426639

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