[从头学数学] 第206节 优选法与试验设计初步

来源:互联网 发布:4个平码的算法 编辑:程序博客网 时间:2024/05/17 04:11
剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第七转的修炼。
这次要研究的是[优选法与试验设计初步]。

正剧开始:


星历2016年05月08日 16:07:12, 银河系厄尔斯星球中华帝国江南行省。

[工程师阿伟]正在和[机器小伟]一起研究[优选法与试验设计初步]。
























<span style="font-size:18px;">>>> a = 1+1-2*math.cos(108/180*math.pi);>>> a2.618033988749895>>> d = a**0.5;>>> d1.618033988749895>>> d*(d-1);1.0000000000000002</span>





<span style="font-size:18px;">>>> [1, 0.5, 0.6666666666666666, 0.6000000000000001, 0.625, 0.6153846153846154, 0.6190476190476191, 0.6176470588235294, 0.6181818181818182, 0.6179775280898876, 0.6180555555555556]#分数法系数阵列def fractionMethod():    array = [];    w = 1;    array.append(w);        for i in range(10):        w = 1/(1+w);        array.append(w);    print(array);</span>













<span style="font-size:18px;">>>> [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]21 55def tmp():    #生成斐波那契数列    fib = [];    for i in range(20):        fib.append(Fibonacci(i));    print(fib);            #试验范围    bound_low = 29;    bound_high = 50;    index_low = index_high = 1;        for i in range(len(fib)):        if (fib[i] <= bound_low):            index_low = i;        if (fib[i] > bound_low):            break;    for i in range(len(fib)):        if (fib[i] >= bound_high):            index_high = i;            break;    print(fib[index_low], fib[index_high]);试验点:21, 55, 34, [21, 34]化为[0, 13], 中间取[8, 5], 所以是取29, 26</span>


<span style="font-size:18px;">1  -->  912  -->  843  -->  794  -->  765  -->  756  -->  767  -->  798  -->  849  -->  91def tmp():   for i in range(1, 10):       print(i, ' --> ', i*i+10*(10-i));     </span>







































有哪些种类的饱和正交表呢?


<span style="font-size:18px;">>>> L_4.0 (2^3)L_8.0 (2^7)L_16.0 (2^15)L_32.0 (2^31)L_9.0 (3^4)L_27.0 (3^13)L_16.0 (4^5)L_64.0 (4^21)L_25.0 (5^6)L_125.0 (5^31)L_36.0 (6^7)#水平N正交表def orthogonalTable(level, factor):    #饱和型正交表    count = 0;    #q = (t^n-1)/(t-1)    count = math.log(((level-1)*factor)+1)/math.log(level);    return count;def tmp():    #水平    for i in range(2, 7):        #因素        for j in range(2, 40):            result = orthogonalTable(i, j);            if abs(int(result)-result)<1e-6:                print('L_{0} ({1}^{2})'.format(round(i**result, 3), i, j));</span>





<span style="font-size:18px;">>>> [[15.0, 18.0, 13.5], [14.5, 11.5, 16.0]][0.5, 6.5, 2.5]def tmp():    level = 2;    factor = 3;        array = [        #前三列为因素,最后一列为试验得到的数据值        [1,1,1,17],        [1,2,2,13],        [2,1,2,19],        [2,2,1,10]        ];    size = len(array);    k_q = [([0]*factor) for j in range(level)];    for k in range(level):        for i in range(factor):            sum_ = 0;            for j in range(size):                if (array[j][i] == k+1):                    sum_ += array[j][factor];            k_q[k][i] = sum_/level;    print(k_q);           R = [0]*factor;    for i in range(factor):        subArray = [];        for j in range(level):            subArray.append(k_q[j][i]);        max_ = max(subArray);        min_ = min(subArray);        R[i] = max_-min_;    print(R);</span>












<span style="font-size:18px;">>>> [[1.5, 2.25, 2.0], [2.75, 2.0, 2.25]][1.25, 0.25, 0.25]def tmp():    level = 2;    factor = 3;        array = [        #前三列为因素,最后一列为试验得到的数据值        [1,1,1,1.5],        [1,2,2,1.5],        [2,1,2,3.0],        [2,2,1,2.5]        ];    size = len(array);    k_q = [([0]*factor) for j in range(level)];    for k in range(level):        for i in range(factor):            sum_ = 0;            for j in range(size):                if (array[j][i] == k+1):                    sum_ += array[j][factor];            k_q[k][i] = sum_/level;    print(k_q);           R = [0]*factor;    for i in range(factor):        subArray = [];        for j in range(level):            subArray.append(k_q[j][i]);        max_ = max(subArray);        min_ = min(subArray);        R[i] = max_-min_;    print(R);</span>








<span style="font-size:18px;">>>> [[433.667, 456.167, 439.833], [438.833, 423.667, 418.167], [424.667, 417.333, 439.167]][14.166, 38.834, 21.666]def tmp():    level = 3;    factor = 3;        array = [        #前三列为因素,最后一列为试验得到的数据值        [1,1,1,463.5],        [1,2,2,409.0],        [1,3,3,428.5],        [2,1,2,451.5],        [2,2,3,435.5],        [2,3,1,429.5],        [3,1,3,453.5],        [3,2,1,426.5],        [3,3,2,394.0]                 ];    size = len(array);    k_q = [([0]*factor) for j in range(level)];    for k in range(level):        for i in range(factor):            sum_ = 0;            for j in range(size):                if (array[j][i] == k+1):                    sum_ += array[j][factor];            k_q[k][i] = round(sum_/level, 3);    print(k_q);           R = [0]*factor;    for i in range(factor):        subArray = [];        for j in range(level):            subArray.append(k_q[j][i]);        max_ = max(subArray);        min_ = min(subArray);        R[i] = round(max_-min_, 3);    print(R);</span>






>>> [[72.0, 83.5, 80.0], [84.5, 73.0, 76.5]][12.5, 10.5, 3.5]def tmp2():    level = 2;    factor = 3;        array = [        #前三列为因素,最后一列为试验得到的数据值        [1,1,1,79],        [1,2,2,65],        [2,1,2,88],        [2,2,1,81]        ];    size = len(array);    k_q = [([0]*factor) for j in range(level)];    for k in range(level):        for i in range(factor):            sum_ = 0;            for j in range(size):                if (array[j][i] == k+1):                    sum_ += array[j][factor];            k_q[k][i] = sum_/level;    print(k_q);           R = [0]*factor;    for i in range(factor):        subArray = [];        for j in range(level):            subArray.append(k_q[j][i]);        max_ = max(subArray);        min_ = min(subArray);        R[i] = max_-min_;    print(R);






这些正交表中的每行每列到底是些什么规律,小伟还没搞明白,先放着吧。


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

0 0
原创粉丝点击