[從頭學數學] 第214節 帶著電腦去高考(六)

來源:互聯網
上載者:User

標籤:

劇情提要:
[機器小偉]在[工程師阿偉]的陪同下進入了[九轉金丹]之第八轉的修鍊。設想一個情境:
如果允許你帶一台不連網的電腦去參加高考,你會放棄選擇一個手拿計算機和草稿本嗎
?阿偉決定和小偉來嘗試一下用電腦算高考題會是怎樣的感覺。

正劇開始:

星曆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;">//題2if (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.5for (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.5for (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;">#題4def 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;">#題5def 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.449489742783179D</span>




<span style="font-size:18px;">//題7if (1) {analyze = new DataAnalyze();a = [9.4, 9.4, 9.4, 9.6, 9.7];hint(analyze.average(a));hint(analyze.variance(a));}9.50.015999999999999886#題7def 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.0161(5,)5float648<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;">#題9def 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;">#題16def tmp16():    print(math.log(0.618)/math.log(3));</span>










<span style="font-size:18px;">#題20def 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.80246913580246910.125000000000000030.0439453125</span>



<span style="font-size:18px;">#題21def 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.14252.23198356916861>>> math.acos(6**0.5/4)*180/math.pi52.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>






本節到此結束,欲知後事如何,請看下回分解。

[從頭學數學] 第214節 帶著電腦去高考(六)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.