Читать книгу «Python-3. Полезные программы. Книга вторая» онлайн полностью📖 — Сергея Фёдоровича Гаврилова — MyBook.

Хорда – Прогиб – Радиус


В этой программе объединены общим меню двенадцать небольших программ. Производится расчет при разном наборе исходных данных. Сейчас все привыкли к графическому интерфейсу – пункт меню вычирают мышкой и щелкают кнопкой. Здесь применен древний интерфейс: Пункты меню пронумерованы цифрами ( номерами ). Чтобы выбрать пункт меню – введите цифру номера пункта меню и нажмите Enter.

Листинг программы.

# -*– coding: cp1251 -*-

import math # Подключили математич модуль

global Rad # Радиус – Обьявили глобальную переменную

global Diam # Диаметр

global Xord # Хорда

global Progi # Прогиб

global UgSe # Угол раствора радиусов на хорду

global Dug # Длина дуги над хордой

global PlSe # Площадь сектора на хорду

global PlTr # Площадь Треугольника под хордой

global PlGo # Площадь Горбушки

u=" "

u=" Расчет элементов Хорда – Прогиб – Радиус "

print (uu)

print (u)

print (uu)

u=" ...... ...... ...... ...... ...... ...... ..... ...... "

print (u)

Pii=0.000000

Pii=math.pi # Вытащили число " Пи "

Kvz=0 # Флаг – Если =1 то работа уже выполнена.

print (uu)

u=" 1 – Расчет по Хорде – Радиусу "

print (u)

print (uu)

u=" 2 – Расчет по Хорде и Углу раствора "

print (u)

print (uu)

u=" 3 – Расчет координат Радиусной кривой "

print (u)

print (uu)

u=" 4 – Расчет по Хорде и длине Дуги "

print (u)

print (uu)

u=" 5 – Расчет по Хорде и Прогибу "

print (u)

print (uu)

u=" 6 – Расчет по Радиусу и Углу раствора "

print (u)

print (uu)

u=" 7 – Расчет по Радиусу и Прогибу "

print (u)

print (uu)

u=" 8 – Расчет по Радиусу и длине Дуги "

print (u)

print (uu)

u=" 9 – Расчет по Прогибу и длине Дуги "

print (u)

print (uu)

u=" 10 – Расчет по Прогибу и Углу раствора "

print (u)

print (uu)

u=" 11 – Расчет по Углу раствора и длине Дуги "

print (u)

print (uu)

u=" 12 – Расчет Правильного многогранника "

print (u)

print (uu)

u=" ...... ...... ...... ...... ...... ...... ..... ...... "

print (u)

q=0

q=input( ) # Вводим число

q=float(q) # Принудительно в вещественное число

# ...... ....... ....... ....... ....... ........ .......

if q==1:

Расчет по Хорде – Радиусу

# Далее Cдвиг – четыре пробела в начале каждой строки

print (uu)

print (uu)

u=" Расчет по Хорде – Радиусу "

print (u)

print (uu)

u=" Введите Хорду "

print (u)

print (uu)

a=0.00000000

a=input( ) # Вводим число

a=float(a) # Принудительно в вещественное число

u=" Введите Радиус "

print (u)

print (uu)

R=0.00000000

R=input( ) # Вводим число

R=float(R) # Принудительно в вещественное число

x=0.00000000

y=0.00000000

v=0.00000000

Sk=0.0000000

St=0.00000000

S=0.000000000

x=((R*R)-(a*a/4))

b=R-(math.sqrt(x)) # Квадратный корень из " x "

x=(a/2)/R

y=math.asin(x)

v=math.cos(y)

aur=2*y

au=aur*180/Pii # Угол А в градусах

Kvz=1 # Коэф – Расчет уже выполнен

# Далее Конец Cдвига – четыре пробела в начале каждой строки

else:

# Далее Cдвиг – четыре пробела в начале каждой строки

Kvz=0

# ...... ....... ....... ....... ....... ........ .......

# Далее Конец Cдвига – четыре пробела в начале каждой строки

if q==2:

Расчет по Хорде и углу раствора

# Угол раствора это угол между двумя радиусами идущими к концам хорды.

# Далее Cдвиг – четыре пробела в начале каждой строки

print (uu)

print (uu)

u=" Расчет по Хорде и углу раствора "

print (u)

print (uu)

u=" Введите Хорду "

print (u)

print (uu)

a=0.00000000

a=input( ) # Вводим число

a=float(a) # Принудительно в вещественное число

u=" Введите Угол раствора в градусах "

print (u)

print (uu)

au=0.00000000

au=input( ) # Вводим число

au=float(au) # Принудительно в вещественное число

x=0.00000000

aur=0.00000000

v=0.00000000

y=0.00000000

Sk=0.0000000

St=0.00000000

S=0.000000000

aur=au*Pii/180

x=math.sin(aur/2)

R=(a/2)/x # Нашли радиус

y=(R*R)-(a*a/4)

v=math.sqrt(y) # Квадратный корень из " y "

b=R-v # Нашли прогиб

Kvz=1 # Коэф – Расчет уже выполнен

# Далее Конец Cдвига – четыре пробела в начале каждой строки

else:

# Далее Cдвиг – четыре пробела в начале каждой строки

Kvz=0

# ...... ....... ....... ....... ....... ........ .......

# Далее Конец Cдвига – четыре пробела в начале каждой строки

if q<3:

Вывод по Хорде Прогиб Радиус

# Далее Cдвиг – четыре пробела в начале каждой строки

D=R+R

Sk=Pii*D*D*au/(4*360) # Площадь сектора круга с углом aur

St=(a/2)*(R-b) # Площадь треугольника в секторе

S = Sk-St # Площадь горбушки

L=Pii*D*au/360 # Длина дуги

print (uu)

u=" ,,,, ,,,, ,,,, ,,,,, ,,,,, ,,,, ,,,,, ,,,,, ,,,,, "

print (u)

print (uu)

print (uu)

u=" Хорда = "

ss=str(a) # Преобразуем число в строку

u=u+ss

print (u)

Xord=u

print (uu)

u=" Стрела прогиба = "

ss=str(b) # Преобразуем число в строку

u=u+ss

print (u)

Progi=u

print (uu)

u=" Радиус = "

ss=str(R) # Преобразуем число в строку

u=u+ss

print (u)

Rad=u

print (uu)

u=" Диаметр = "

ss=str(D) # Преобразуем число в строку

u=u+ss

print (u)

Diam=u

print (uu)

u=" Угол раствора хорды = "

ss=str(au) # Преобразуем число в строку

u=u+ss

print (u)

UgSe=u

print (uu)

u=" Длина дуги над хордой = "

ss=str(L) # Преобразуем число в строку

u=u+ss

print (u)

Dug=u

print (uu)

u=" Площадь сектора = "

ss=str(Sk) # Преобразуем число в строку

u=u+ss

print (u)

PlSe=u

print (uu)

u=" Площадь треугольника под горбушкой = "

ss=str(St) # Преобразуем число в строку

u=u+ss

print (u)

PlTr=u

print (uu)

u=" Площадь горбушки = "

ss=str(S) # Преобразуем число в строку

u=u+ss

print (u)

PlGo=u

print (uu)

# Далее Конец Cдвига – четыре пробела в начале каждой строки

# ...... ....... ....... ....... ....... ........ .......

if q==3:

Координаты радиусной кривой

# Далее Cдвиг – четыре пробела в начале каждой строки

q=13 # Переброс в конец программы

# ....... ....... ....... ...... ...... ....... ....... ......

# Далее Конец Cдвига – четыре пробела в начале каждой строки

if q==4:

Расчет по Хорде и длине Дуги

# Далее Cдвиг – четыре пробела в начале каждой строки

print (uu)

print (uu)

u=" Расчет по Хорде и длине Дуги "

print (u)

print (uu)

u=" Введите Хорду "

print (u)

print (uu)

a=0.00000000

a=input( ) # Вводим число

a=float(a) # Принудительно в вещественное число

u=" Введите длину Дуги "

print (u)

print (uu)

L=0.00000000

L=input( ) # Вводим число

L=float(L) # Принудительно в вещественное число

R=0.00000000

dx=a/200000

rt=(a/2)+dx # Начальный радиус расчета

aa=a/2 # Половина хорды

dl=Pii*rt

while dl>L: # Расчет по Хорде и длине Дуги

# Далее Cдвиг – восемь пробелов в начале каждой строки

rt=rt+dx # Текущий радиус

x=aa/rt

y=2*(math.asin(x)) # Угол А в радианах через арс синус

dl=rt*y # Текущая длина дуги

# Далее Cдвиг – четыре пробела в начале каждой строки

yg=y*180/Pii # Угол " y " в градусах

au=yg

R=rt # Нашли радиус

y=(R*R)-(aa*aa)

v=math.sqrt(y) # Квадратный корень из " y "

b=R-v # Нашли прогиб

D=R+R

Sk=Pii*D*D*yg/(4*360) # Площадь сектора круга с углом aur

St=aa*v # Площадь треугольника в секторе

S = Sk-St # Площадь горбушки

# Далее Конец Cдвига – четыре пробела в начале каждой строки

else:

# Далее Cдвиг – четыре пробела в начале каждой строки

Kvz=0

# Далее Конец Cдвига – четыре пробела в начале каждой строки

# ...... ...... ....... ...... ...... ....... ....... ....... ........

if q==5:

Расчет по Хорде – Прогибу

# Далее Cдвиг – четыре пробела в начале каждой строки

print (uu)

u=" Расчет по Хорде – Прогибу "

print (u)

print (uu)

u=" ...... ...... ...... ...... ...... ...... ..... ...... "

print (u)

print (uu)

u=" Введите Хорду "

print (u)

print (uu)

a=0.00000000

a=input( ) # Вводим число

a=float(a) # Хорда – Принудительно в вещественное число

u=" Введите Стрелу Прогиба "

print (uu)

print (u)

print (uu)

b=0.00000000

b=input( ) # Вводим число

b=float(b) # Стрела прогиба – Принудительно в вещественное число

x=0.00000000

y=0.00000000

v=0.00000000

R=0.00000000

Sk=0.0000000

St=0.00000000

S=0.000000000

Ex=1.000000

k=a/2

Rt=k+(k/100000)

Rd= k/100000

t=k/100000000

# Уточнение шаговым подбором

while Ex >t:

# Далее Cдвиг – восемь пробелов в начале каждой строки

Rt=Rt+Rd

x=((Rt*Rt)-(k*k))

c=math.sqrt(x) # Квадратный корень из " x "

Ex=(Rt-c)-b

# E=math.abs(x)

# Конец подбора ........ ....... ......

# Далее Cдвиг – четыре пробела в начале каждой строки

R=Rt

D=R+R

x=k/Rt

sur=math.asin(x) # Угол А в радианах

su=sur*180/Pii # Угол А в градусах

au=2*su

yg=au

L=(R+R)*Pii*au/360

# ....... ....... ....... ...... ...... ....... ....... ....... ........

# Далее Конец Cдвига – четыре пробела в начале каждой строки

if q==6:

Расчет по Радиусу и Углу раствора

# Далее Cдвиг – четыре пробела в начале каждой строки

print (uu)

u=" Расчет по Радиусу и Углу раствора "

print (u)

print (uu)

u=" ...... ...... ...... ...... ...... ...... ..... ...... "

print (u)

print (uu)

u=" Введите Радиус "

print (u)

print (uu)

R=0.00000000

R=input( ) # Вводим число

R=float(R) # Радиус – Принудительно в вещественное число

u=" Введите Угол раствора в градусах "

print (uu)

print (u)

print (uu)

yg=0.00000000

yg=input( ) # Вводим число

yg=float(yg) # Угол раствора – Принудительно в вещественное число

yr=yg*Pii/180 # Угол раствора В радианах

x=0.00000000

y=0.00000000

v=0.00000000

Sk=0.0000000

St=0.00000000

S=0.000000000

Ex=1.000000

x= math.cos(yr/2)

y=R*x

b=R-y

x=(R*R)-(y*y)

c=math.sqrt(x) # Квадратный корень из " x "

a=c+c

au=yg

D=R+R

# .......... ........ ....... ....... ........ .......…

# Далее Конец Cдвига – четыре пробела в начале каждой строки

# ....... ....... ....... ...... ...... ....... ....... ....... .

if q==7:

Расчет по Радиусу и Прогибу

# Далее Cдвиг – четыре пробела в начале каждой строки

print (uu)

u=" Расчет по Радиусу и Прогибу "

print (u)

print (uu)

u=" ...... ...... ...... ...... ...... ...... ..... ...... "

print (u)

print (uu)

u=" Введите Радиус "

print (u)

print (uu)

R=0.00000000

R=input( ) # Вводим число

R=float(R) # Радиус – Принудительно в вещественное число

u=" Введите Прогиб "

print (uu)

print (u)

print (uu)

b=0.00000000

b=input( ) # Вводим число

b=float(b) # Угол раствора – Принудительно в вещественное число

k=R-b

x=(R*R)-(k*k)

a=(math.sqrt(x))*2

x=(a/2)/k

aur = (math.atan(x))*2

au=aur*180/Pii

yg = au

# ....... ....... ....... ...... ...... ....... ....... ....... ........

# Далее Конец Cдвига – четыре пробела в начале каждой строки

if q==8:

Расчет по Радиусу и длине Дуги

# Далее Cдвиг – четыре пробела в начале каждой строки

print (uu)

u=" Расчет по Радиусу и длине Дуги "

print (u)

print (uu)

u=" ...... ...... ...... ...... ...... ...... ..... ...... "

print (u)

print (uu)

u=" Введите Радиус "

print (u)

print (uu)

R=0.00000000

R=input( ) # Вводим число

R=float(R) # Радиус – Принудительно в вещественное число

print (uu)

u=" Введите длину Дуги "

print (u)

print (uu)

L=0.00000000

L=input( ) # Вводим число

L=float(L) # Хорда – Принудительно в вещественное число

ygr=(2*Pii)* (L/((R+R)*Pii)) # Угол раствора хорды радиан

x=math.sin(ygr/2)

y=R*x

a=y+y # Хорда

t=((R*R)-(y*y))

z=math.sqrt(t) # Квадратный корень из " y "

b=R-z # Прогиб

yg=ygr*180/Pii # Угол раствора хорды град.

# ......... ........ ......... ......... ......... ............

# Далее Конец Cдвига – четыре пробела в начале каждой строки

# Расчет по Прогибу и длине Дуги "

if q==9:

Расчет по Прогибу и длине Дуги

# Далее Cдвиг – четыре пробела в начале каждой строки

print (uu)

u=" Расчет по Прогибу и длине Дуги "

print (u)

print (uu)

u=" ...... ...... ...... ...... ...... ...... ..... ...... "

print (u)

print (uu)

u=" Введите стрелу Прогиба "

print (u)

print (uu)

b=0.00000000

b=input( ) # Вводим число

b=float(b) # Радиус – Принудительно в вещественное число

print (uu)

u=" Введите длину Дуги "

print (u)

print (uu)

L=0.00000000

L=input( ) # Вводим число

L=float(L) # Хорда – Принудительно в вещественное число

print (uu)

u=" Подождите – идет расчет "

print (u)

print (uu)

bb=0.000000 # Текущий прогиб

Rt=L/Pii # Начальный Текущий радиус

xx=b/100000 # Приращение радиуса

xb=b/1000 # Допустимая ошибка..

db=10000000*b # Начальное значение ошибки

ugr=0.0000000

# Уточнение подбором

while db >xb:

# Далее Cдвиг – восемь пробелов в начале каждой строки

Rt=Rt+xx

ygr=(2*Pii)* (L/((Rt+Rt)*Pii)) # Угол раствора хорды радиан

x=math.sin(ygr/2)

y=Rt*x

a=y+y # Хорда

t=((Rt*Rt)-(y*y))

z=math.sqrt(t) # Квадратный корень из " y "

bb=Rt-z # Прогиб

x=(b-bb)*(b-bb)

db=math.sqrt(x) # Квадратный корень из " x "

# Далее Cдвиг – четыре пробела в начале каждой строки

db=db+xb

xx=b/100000000 # Приращение радиуса

xb=b/1000000

# Уточнение подбором ( вторая ступень )

while db >xb:

# Далее Cдвига – восемь пробелов в начале каждой строки

Rt=Rt+xx

ygr=(2*Pii)* (L/((Rt+Rt)*Pii)) # Угол раствора хорды радиан

x=math.sin(ygr/2)

y=Rt*x

a=y+y # Хорда

t=((Rt*Rt)-(y*y))

z=math.sqrt(t) # Квадратный корень из " y "

bb=Rt-z # Прогиб

x=(b-bb)*(b-bb)

db=math.sqrt(x) # Квадратный корень из " x "

# Далее Cдвига – четыре пробела в начале каждой строки

# Конец подбора ........ ....... ....... ....... ....... ....... ........

R=Rt

yg=ygr*180/Pii # Угол раствора хорды град.

# Далее Конец Cдвига – четыре пробела в начале каждой строки

# ,,,,,,,,, ,,,,,,,,,, ,,,,,,,, ,,,,,,,, ,,,,,,,,, ,,,,,,,,

# ......... ........ ......... ......... ......... ............

# Расчет по Углу раствора и Прогибу "

if q==10: