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

剧情提要:

[机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第八转的修炼。设想一个场景:

如果允许你带一台不连网的计算机去参加高考,你会放弃选择一个手拿计算器和草稿本吗

?阿伟决定和小伟来尝试一下用计算机算高考题会是怎样的感觉。

正剧开始:

星历2016年05月20日 11:40:58, 银河系厄尔斯星球中华帝国江南行省。

[工程师阿伟]正在和[机器小伟]一起做着2005年的江苏省数学高考题]。

总体来说,这次的难度和上一年持平,都是很厚道的那种,

不过上一年的好多题都像闹着玩似的,这次稍微好点,不过运算量也很小。

然后最大的改变就是打破了持续N年的22题格局,用减少一个主观题为代价,添加了两个填空题。

<span style="font-size:18px;">def tmp1():
    A = set([1, 2]);
    B = set([1,2,3]);
    C = set([2,3,4]);

    D = (A.intersection(B)).union(C);
    print(D);

    E = (A & B) | C;
    print(E);

>>>
{1, 2, 3, 4}
{1, 2, 3, 4}</span>

<span style="font-size:18px;">//题2
	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 = -20, yE = 20;
        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 = 2^[1-x]+3的反函数', f2 = 'y = 2^[1-x]+3', f3 = '', f4 = '';
        var  y1 = y2 = 0;
		//(1-(x+2)^2)^0.5
		for (var x = xS; x <= xE; x+=0.2) {
				y1 = Math.pow(2, 1-x)+3;
				a.push([y1, x]);
				b.push([x, y1]);

        }  

        //存放临时数组
        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, '#2288FF');          

            plot.setFillStyle('blue');
            plot.fillText(f2, 100, -120, 200);
        }  

    } 

        var f1 = 'y = Math.log(2/(x-3))/Math.log(2)', f2 = 'y = 2^[1-x]+3', f3 = '', f4 = '';
        var  y1 = y2 = 0;
		//(1-(x+2)^2)^0.5
		for (var x = xS; x <= xE; x+=0.2) {
				y1 = Math.log(2/(x-3))/Math.log(2)
				a.push([x, y1]);

        }  </span>

<span style="font-size:18px;">#题4
def tmp4():
    panel = Panel();

    #正三棱柱ABC-A1B1C1
    A, B, C = [0, 0, 0], [2,0,0], [1, 3**0.5, 0];
    A1, B1, C1 = [0, 0, 1], [2,0,1], [1, 3**0.5, 1];

    #平面ABC的法向量
    norm_ABC = panel.normal([A, B, C]);
    print(norm_ABC);

    #平面ABC的一般式方程
    genre_ABC = panel.genreForm([A, B, C]);
    print(genre_ABC);

    #占A到平面A1BC的距离
    dis_A_A1BC = panel.pt2panel(A, [A1, B, C]);
    print(dis_A_A1BC);

>>>
[0.0, 0, 3.4641016151377544]
[0.0, 0, 3.4641016151377544, -0.0]
0.8660254037844386

###
# @usage   平面解析几何里的平面类,包含相关的一组计算方法
# @author  mw
# @date    2016年05月20日  星期五  09:02:31
# @param
# @return
#
###

#涉及到平面,所有的坐标点都是空间坐标系[x, y, z]形式
class Panel():
    #平面的法向量, 由[P_[1], P_[2], P_[3]]唯一确定平面
    def normal(self, plain):
        #平面上的三个点
        point_1, point_2, point_3 = plain[0], plain[1], plain[2];
        x_1, y_1, z_1 = point_1[0], point_1[1], point_1[2];
        x_2, y_2, z_2 = point_2[0], point_2[1], point_2[2];
        x_3, y_3, z_3 = point_3[0], point_3[1], point_3[2];

        #中间变量
        a = (y_2-y_1)*(z_3-z_1) - (y_3-y_1)*(z_2-z_1);
        b = (z_2-z_1)*(x_3-x_1) - (z_3-z_1)*(x_2-x_1);
        c = (x_2-x_1)*(y_3-y_1) - (x_3-x_1)*(y_2-y_1);

        return [a, b, c];

    #平面一般式方程,由三个平面点得到Ax+By+Cz+D=0中的四个参数A,B,C,D
    def genreForm(self, plain):
        norm = self.normal(plain);
        a, b, c = norm[0], norm[1], norm[2];

        #平面上的三个点
        point_1, point_2, point_3 = plain[0], plain[1], plain[2];
        x_1, y_1, z_1 = point_1[0], point_1[1], point_1[2];
        x_2, y_2, z_2 = point_2[0], point_2[1], point_2[2];
        x_3, y_3, z_3 = point_3[0], point_3[1], point_3[2];

        d = -(a*x_1+b*y_1+c*z_1);

        return [a, b, c, d];

    #点到平面的距离
    def pt2panel(self, point, panel):
        #平面一般式的参数
        a, b, c, d = self.genreForm(panel);

        x, y, z = point[0], point[1], point[2];
        distance = abs((a*x+b*y+c*z+d)/(a**2+b**2+c**2)**0.5);

        return distance;
		</span>

<span style="font-size:18px;">#题5
def tmp5():
    #三角形ABC, 多给一条边试算
    tri_ABC = geo.solveTriangle([3, 2, '?', 60, '?', '?']);
    print(tri_ABC);

    BC, AC, AB = tri_ABC[0], tri_ABC[1], tri_ABC[2];
    #周长
    perimeter = BC+AC+AB;
    print(perimeter);

    #角B,转为弧度
    B = tri_ABC[4]/180*math.pi;

    #选项,用于对比
    choice = [4*1.732*math.sin(B+math.pi/3)+3,
              4*1.732*math.sin(B+math.pi/6)+3,
              6*math.sin(B+math.pi/3)+3,
              6*math.sin(B+math.pi/6)+3
              ];
    answer = 'ABCD';
    for i in range(4):
        if abs(choice[i]- perimeter)< 1e-6:
            print(answer[i]);

>>>
[3, 2, 3.4494897427831783, 60.0, 35.264389682754654, 84.73561031724536]
8.449489742783179
D
</span>

<span style="font-size:18px;">//题7
	if (1) {
		analyze = new DataAnalyze();

		a = [9.4, 9.4, 9.4, 9.6, 9.7];

		hint(analyze.average(a));
		hint(analyze.variance(a));

	}

9.5
0.015999999999999886

#题7
def tmp7():
    analyze = DataAnalyze();

    array = [9.4, 8.4, 9.4, 9.9, 9.6, 9.4, 9.7];
    array = sorted(array);
    array = array[1:-1];

    print(array);
    array = analyze.format(array);
    sum_ = analyze.sum(array);
    print(sum_);

    aver_ = analyze.average(array);
    print('均值 ', aver_);

    variance = analyze.variance(array);
    print('方差 ', variance);

    #numpy数组的属性
    print(array.ndim);
    print(array.shape);
    print(array.size);
    print(array.dtype);
    print(array.itemsize);
    print(array.data);

>>>
[9.4, 9.4, 9.4, 9.6, 9.7]
47.5
均值  9.5
方差  0.016
1
(5,)
5
float64
8
<memory at 0x0205AD50>

###
# @usage   数据的集中分析类
# @author  mw
# @date    2016年05月20日  星期五  10:06:47
# @param
# @return
#
###

class DataAnalyze():
    #由于numpy的方法接口只对narray开放,所以,数组先要格式化一下
    #对于自己的数组而言,这个方法是必须要先调用一下,才能使用numpy方法的
    def format(self, array):
        return numpy.array(array);

    #求和
    def sum(self, array):
        return array.sum();

    #均值
    def average(self, array):
        return self.sum(array)/len(array);

    #方差
    def variance(self, array):
        array_ = array*array;
        sum_ = array_.sum();
        aver_ = self.average(array);

        result = sum_/len(array) - aver_**2;
        return result;

    #标准差
    def RMS(self, array):
        return (self.variance)**0.5;
</span>

<span style="font-size:18px;">#题9
def tmp9():
    a = ['x', '2'];
    a = alg.strformat(a);

    a = alg.strpow_n(a, 5);
    a = alg.strcombine(a);

    print(a);

>>>
['(1)*x^[5]', '(10)*x^[4]', '(40)*x^[3]', '(80)*x^[2]', '(80)*x^[1]', '(32)']</span>

<span style="font-size:18px;">#题16
def tmp16():
    print(math.log(0.618)/math.log(3));</span>

<span style="font-size:18px;">#题20
def tmp20():
    #甲、乙命中率
    p_1 = 2/3;
    p_2 = 3/4;

    #(1)
    print(1-p_1**4);

    #(2) 有组合数相乘
    a = alg.combination(4, 2)*p_1**2*(1-p_1)**2;
    b = alg.combination(4, 3)*p_2**3*(1-p_2);
    print(a*b);

    #(3)
    a12 = 1-(1-p_2)**2; #前两次,只要不是都不击中
    a3 = p_2; #第三次, 必须击中
    a45 = (1-p_2)**2; #第四五次,必须不中
    print(a12*a3*a45);

>>>
0.8024691358024691
0.12500000000000003
0.0439453125</span>

<span style="font-size:18px;">#题21
def tmp21():
    #已知边
    AS = AB = AE = 2;
    BC = DE = 1.732;

    #已知角
    A = C = D = 120;

    #解三角形,数组是以对边对角的方式排列的
    tri_ABS = geo.solveTriangle(['?', AS, AB, 90, '?', '?']);
    BS = tri_ABS[0];
    ES = BS;

    tri_ABE = geo.solveTriangle(['?', AE, AB, A, '?', '?']);
    BE = tri_ABE[0];

    tri_BES = geo.solveTriangle([ES, BS, BE, '?', '?', '?']);
    print('CD与AB成的角:', tri_BES[3]);

>>>
CD与AB成的角: 52.23875609296496
>>> math.acos(6**0.5/4)*180/3.142
52.23198356916861
>>> math.acos(6**0.5/4)*180/math.pi
52.23875609296496

    #(2)

    #角B
    B = (540-A-C-D)/2;

    #tri_BCD = geo.solveTriangle([CD, '?', BC, '?', C, '?']);
    print(B);

    '''
    >>>
    CD与AB成的角: 52.23875609296496
    90.0
    '''

</span>

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

时间: 2024-12-25 03:12:47

[从头学数学] 第214节 带着计算机去高考(六)的相关文章

[从头学数学] 第223节 带着计算机去高考(十五)

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第八转的修炼.设想一个场景: 如果允许你带一台不连网的计算机去参加高考,你会放弃选择一个手拿计算器和草稿本吗 ?阿伟决定和小伟来尝试一下用计算机算高考题会是怎样的感觉. 正剧开始: 星历2016年05月26日 10:23:46, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起做着2014年的江苏省数学高考题]. 这一年的题和上一年一样的难,阿伟决定再交一次白卷. 好,卷子贴完,下面进入这次的主题. 这是

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

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第八转的修炼.设想一个场景: 如果允许你带一台不连网的计算机去参加高考,你会放弃选择一个手拿计算器和草稿本吗 ?阿伟决定和小伟来尝试一下用计算机算高考题会是怎样的感觉. 正剧开始: 星历2016年05月20日 17:13:35, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起做着2006年的江苏省数学高考题]. 这一年,江苏重新使用了全国卷,并且这张试卷的难度也比较高,可以说, 也是打了考生一个措手不及

[从头学数学] 第220节 带着计算机去高考(十二)

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第八转的修炼.设想一个场景: 如果允许你带一台不连网的计算机去参加高考,你会放弃选择一个手拿计算器和草稿本吗 ?阿伟决定和小伟来尝试一下用计算机算高考题会是怎样的感觉. 正剧开始: 星历2016年05月24日 17:11:11, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起做着2011年的江苏省数学高考题]. 2011年的卷子,难度比上一年的稍小一点,但阿伟觉得也达到了5.5环的难度. 这次的特色,是

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

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第八转的修炼.设想一个场景: 如果允许你带一台不连网的计算机去参加高考,你会放弃选择一个手拿计算器和草稿本吗 ?阿伟决定和小伟来尝试一下用计算机算高考题会是怎样的感觉. 正剧开始: 星历2016年05月21日 11:31:19, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起做着2007年的江苏省数学高考题]. 这一年的卷子又回到了比较低的难度,感觉这就是正弦曲线的节奏. <span style="

[从头学数学] 第224节 带着计算机去高考(十六)

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第八转的修炼.设想一个场景: 如果允许你带一台不连网的计算机去参加高考,你会放弃选择一个手拿计算器和草稿本吗 ?阿伟决定和小伟来尝试一下用计算机算高考题会是怎样的感觉. 正剧开始: 星历2016年05月26日 16:49:14, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起做着2015年的江苏省数学高考题]. 这一节是是[工程师阿伟]带着[机器小伟]去怀旧高考的收关节点. 所以多少会做几个题来表表心意

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

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第八转的修炼.设想一个场景: 如果允许你带一台不连网的计算机去参加高考,你会放弃选择一个手拿计算器和草稿本吗 ?阿伟决定和小伟来尝试一下用计算机算高考题会是怎样的感觉. 正剧开始: 话说当新世纪的钟声敲响以后,帝国首脑决定要加强国民的数学素养,"选拔一定要严格 ",首脑同志如是说.于是,数学的高考试卷突然就难起来了,原来的四环难度一下子跳 到了六环,满卷的刀光剑影,明坑暗堡,真是坚城如斯,望而兴叹.当无数的学子经过浴

[从头学数学] 第221节 带着计算机去高考(十三)

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第八转的修炼.设想一个场景: 如果允许你带一台不连网的计算机去参加高考,你会放弃选择一个手拿计算器和草稿本吗 ?阿伟决定和小伟来尝试一下用计算机算高考题会是怎样的感觉. 正剧开始: 星历2016年05月25日 10:40:52, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起做着2012年的江苏省数学高考题]. 这就是传说中的厄尔斯星球末日那一年的考题,这一年的考题难度绝对是在5.5环以上. 可以从上表

[从头学数学] 第222节 带着计算机去高考(十四)

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第八转的修炼.设想一个场景: 如果允许你带一台不连网的计算机去参加高考,你会放弃选择一个手拿计算器和草稿本吗 ?阿伟决定和小伟来尝试一下用计算机算高考题会是怎样的感觉. 正剧开始: 星历2016年05月25日 17:14:22, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起做着2013年的江苏省数学高考题]. 上面这句话确实在本文而言是名不符实的,因为这张卷子阿伟和[机器小伟] 谁也没做,纯粹贴题了.

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

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第八转的修炼.设想一个场景: 如果允许你带一台不连网的计算机去参加高考,你会放弃选择一个手拿计算器和草稿本吗 ?阿伟决定和小伟来尝试一下用计算机算高考题会是怎样的感觉. 正剧开始: 星历2016年05月24日 12:49:39, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起做着2010年的江苏省数学高考题]. 2010年江苏的这张高考试卷,是大家公认的一张难卷,难出了风格, 难出了特色,也难出了名.