diff --git a/main.py b/main.py index e30a1c9..0ba11d4 100644 --- a/main.py +++ b/main.py @@ -98,21 +98,22 @@ def cal_loop(): span_count = 3 # 几个档距 # n个档距,n-1个直线塔 h_array = [0, 0, 0] - l_array = [300, 400, 500] + l_array = [400, 400, 400] t_array = [15, 15, 15] lambda_array = [lambda_m, lambda_m, lambda_m] loop_count = 1 sigma_0 = sigma_m * 0.8 while True: sigma_0 = sigma_0 + 0.001 - sigma = [sigma_0, 0, 0] + sigma_array = [sigma_0, 0, 0] b_i = 0 + delta_l_i_array = [] for i in range(span_count - 1): h_i = h_array[i] l_i = l_array[i] lambda_i = lambda_array[i] t_i = t_array[i] - sigma_i = sigma[i] + sigma_i = sigma_array[i] _delta_l_i = delta_li( h_i, l_i, @@ -126,6 +127,7 @@ def cal_loop(): t_m, sigma_m, ) + delta_l_i_array.append(_delta_l_i) b_i += _delta_l_i length_i = string_length g_i = string_g @@ -145,20 +147,75 @@ def cal_loop(): l_i1, lambda_i1, ) - sigma[i + 1] = sigma_i1 + sigma_array[i + 1] = sigma_i1 # print("第{loop_count}轮求解。".format(loop_count=loop_count)) # print(b_i) loop_count += 1 if math.fabs(b_i) < 1e-5: - print("找到解。") + print("迭代{loop_count}次找到解。".format(loop_count=loop_count)) print("悬垂串偏移累加bi为{b_i}".format(b_i=b_i)) + for i in range(span_count): + print("第{i}档导线应力为{tension}".format(i=i, tension=sigma_array[i])) + for i in range(span_count - 1): + print("第{i}串偏移值为{bias}".format(i=i, bias=delta_l_i_array[i])) + verify( + area, + h_array, + l_array, + string_length, + string_g, + sigma_array, + delta_l_i_array, + lambda_array, + ) break if loop_count >= loop_end: print("!!!未找到解。") - print(sigma) + print(sigma_array) print(b_i) break +# 检验等式。 +def verify( + area: float, + h_array: [float], + l_array: [float], + string_length: [float], + string_g: [float], + sigma_array: [float], + delta_l_i_array: [float], + lambda_array: [float], +): + # 用新版大手册p329页(5-61)最第一个公式校验 + for i in range(len(delta_l_i_array)): + sigma_i = sigma_array[i] + sigma_i1 = sigma_array[i + 1] + left_equ = sigma_array[i + 1] + _delta_l_i = delta_l_i_array[i] + lambda_i = lambda_array[i] + lambda_i1 = lambda_array[i + 1] + h_i = h_array[i] + h_i1 = h_array[i + 1] + l_i = l_array[i] + l_i1 = l_array[i + 1] + beta_i = math.atan(h_i / l_i) + beta_i1 = math.atan(h_i1 / l_i1) + w_i = ( + lambda_i * l_i / 2 / math.cos(beta_i) + + sigma_i * h_i / l_i + + (lambda_i1 * l_i1 / 2 / math.cos(beta_i1) - sigma_i1 * h_i1 / l_i1) + ) + right_equ = sigma_i + delta_l_i_array[i] / math.sqrt( + string_length ** 2 - delta_l_i_array[i] ** 2 + ) * (string_g / 2 / area + w_i) + if math.fabs(right_equ - left_equ) > 1e-4: + print("!!!等式不满足") + return + print("等式满足。") + + cal_loop() + + print("Finished.")