Линейный алгоритм программа на питоне

В данной статье мы разберем программу на python для решения линейного уравнения Программа решает уравнение вида ax = b. Коэффициенты a и b задаются пользователем с клавиатуры. Программа находит решение и выводит его на экран. Если решений бесконечное количество или их нет, то программа оповещает об этом.
Все возможные решения линейного уравнения можно описать так
Если a = 0 и b = 0, то решений бесконечное количество.
Если a = 0 и b ≠ 0, то решений нет.
Если a ≠ 0, то единственное решение будет равно b / a.
Для задания коэффициентов с клавиатуры в Python используется функция ввода вещественного числа float(input()). Подробно о вводе информации с клавиатуры в python
a = float(input(«Введите коэффициент a «))
b = float(input(«Введите коэффициент b «))
В Python, чтобы проверить равенство двух объектов, используется ==, для проверки неравенства объектов используется !=. Для проверки двух условий одновременно используется оператор and. Подробно об условиях в python

Python. Линейный алгоритм

Программа на Python для решения линейного уравнения
a = float(input(«Введите коэффициент a «))
b = float(input(«Введите коэффициент b «))
if (a == 0 and b == 0):
print(«Бесконечное количество решений.»)
if (a == 0 and b != 0):
print(«Решений нет.»)
if (a != 0):
print(b/a))

Полезно почитать по теме условия в Python примеры
Пример анкеты, опроса на Python

Составьте программу решения линейного уравнения

Обменять значения двух переменных, используя третью (буферную) переменную.

x — первая переменная;
y — вторая переменная;
b — буферная переменная (для хранения значения другой переменной).

Обмен значений двух переменных протекает по следующему алгоритму:

  1. В буферной переменной сохраняется значение первой переменной.
  2. Первой переменной присваивается значение второй.
  3. Второй переменной присваивается значение буферной переменной, это значение равно старому значению первой переменной.

Вывести на экран введенные пользователем данные в полях шириной, заданной по умолчанию, и полях шириной, определяемой пользователем.

Получить от пользователя данные, обработать их и вывести на экран

Вывести на экран действительное число в различных форматах представления.

Допустим, организации часто требуется красить баки цилиндрической формы. При этом они красят только верхнюю часть и стенки с внешней стороны.

Организации требуется программа, которая бы определяла, сколько банок краски необходимо для покраски того или иного бака.

Программа должна запрашивать у пользователя следующую информацию:

  • диаметр бака;
  • высота бака;
  • расход краски (площадь поверхности, которую можно покрасить одной банкой краски).В результате программа должна выдавать количество требуемых банок. При получении дробного числа округление должно всегда происходить в большую сторону.

Площадь крыши бака (круга) вычисляется по формуле p * d 2 /4 (где p – число пи, d — диаметр).
Площадь боковой поверхности цилиндра: p * d * h (где h – высота).

Стандартная функция trunc выполняет «отбрасывание» дробной части и возвращает целое число.

Месячная выплата m по займу в s рублей на n лет под процент p вычисляется по формуле:
m = (s * r * (1 + r) n ) / (12 * ((1 + r) n – 1)), где r = p / 100.

Программа, вычисляющая значение m (месячную выплату) по известным s (сумме займа), p (проценту) и n (количеству лет), может выглядеть так:

Линейные алгоритмы на языке программирования Паскаль

Линейный алгоритм

Линейным называется алгоритм, в котором команды выполняются последовательно друг за другом. Это самая простая конструкция. Программирование линейных алгоритмов освоить очень легко. Для написания простых программ на паскале разберем основные правила записи кода, основные команды и операторы Паскаль.

Структура программы на языке Паскаль

Прежде чем самостоятельно писать программы, разберем ее структуру на примере. Ниже приведен код программы, которая вычисляет сумму двух чисел и выводит ее на экран.

Читайте также:
Название программ текстовых редакторов

Текст программы начинается со слова program. После него записывается имя программы. Данная строка носит информативный характер и ее можно не писать.

Раздел подключения модулей начинается со служебного слова uses, за которым следует список имен модулей, перечисляемых через запятую.

Раздел описаний может включать разделы описания переменных, констант, меток, типов, процедур и функций, которые следуют друг за другом в произвольном порядке. Раздел подключения модулей и раздел описаний меток, констант и др. могут отсутствовать.

Раздел описания переменных

Раздел программы, обозначенный служебным словом var, содержит описание переменных с указанием их типов. Они используются для хранения исходных данных, результатов вычисления и промежуточных результатов.

Комментарии в программе можно записывать внутри фигурных скобок. Они игнорируются во время выполнения программы. Эти пояснения вы пишите только для себя.

В нашем примере переменные с именами X и Y используются для хранения исходных данных. Переменная с именем Z используется для хранения результата вычислений.

Имя переменной может записываться большими или маленькими латинскими буквами. Имя может содержать цифры, знак подчеркивания и не должно начинаться с цифры. Прописные и строчные символы считаются одинаковыми. В качестве имени нельзя использовать служебное слово языка Pascal.

Переменные одного типа можно указать в одной строке через запятую. После ставится двоеточие и указывается тип, к которому принадлежат переменные. Тип определяет допустимый диапазон значений.

Принадлежность переменной к типу integer означает, что она может хранить только целые числа. Если требуется хранить действительные (дробные) числа, тогда используется тип real.

Тело программы

Все что находится между служебными словами Begin и end — тело программы. Здесь записываются основные команды.

Оператор присваивания значений переменным имеет следующую структуру: переменная := выражение

Значок : = (двоеточие, равно) читается как «присвоить».
Умножение обозначается символом * (звездочка), деление — символом / (слеш).

Вывод результата выполняет команда write или print.

Каждая строка содержащая команду на языке Паскаль обязательно заканчивается символом «точка с запятой«.

Команды в Паскаль для ввода и вывода данных

Команда Read

В первом примере мы присвоили значения переменным непосредственно в тексте программы. Но так как программа пишется для решения множества однотипных задач, то удобнее задавать значения переменным во время ее работы. Для этого применяется команда read, которая позволяет ввести текстовые или числовые данные с клавиатуры.

Модифицируем код программы из примера выше.

Теперь ввод значений переменных Х и У будет осуществляться по запросу работающей программы. В этот момент нужно будет с клавиатуры ввести два числа через пробел и нажать клавишу Enter, чтобы продолжить выполнение программы.

При работающей программе в системе программирования PascalABC появится строка ввода данных. Там и пишутся значения переменных.

Команда Write

В предыдущем примере, при работе программы, не совсем понятно, что нужно вводить и что за числа появляются на экране по завершению работы программы. Поэтому изменим код программы, чтобы у нее появился минимальный пользовательский интерфейс. Для этого задействуем уже знакомую нам команду Write.

Теперь посмотрите, как добавленные строки повлияли на работу программы.

У нас появились подсказки. Посмотрите на команду write. В качестве ее аргумента был использован текст, заключенный в апострофы. И еще, появилось окончание ln у оператора write. Именно оно заставляет последующий вывод информации делать с новой строки.

Это же окончание можно использовать совместно с оператором read.

Readln и Writeln в паскале — это модифицированные команды Read и Write. В командах добавлено окончание ln (line new — новая строка). Такая форма операторов делает последующий вывод информации, при работе программы, с новой строки.

Также поменялся вывод результата. Здесь тоже появилась подсказка.

Примеры программ на паскале — задания на линейные алгоритмы

Задание 1. Модифицировать программу так, чтобы она вычисляла и выводила на экран сумму и произведение трех целых чисел.

Решение:

Задание 2. Дана длина ребра куба а. Найти объем куба V=a 3 и площадь его поверхности S=6a 2 .

Источник: all-equa.ru

Читайте также:
Как составить ТВ программу

Линейное программирование в python силами библиотеки scipy

В своей первой публикации мне хочется рассказать о том, как можно быстро и просто решить задачу линейного программирования с помощью замечательной библиотеки scipy. Для подобных задач в python есть так же pulp, но для новичков в scipy более понятный синтаксис.

Зачем может понадобиться линейное программирование на практике? Как правило, с его помощью решают задачу минимизации функции f(x) (или обратную задачу максимизации для — f(x) ).

Здесь я не буду приводить теоретические выкладки (можно посмотреть тут), а рассмотрю конкретный пример.

У нас есть 8 фабрик, которые каждую неделю производят некоторое количество продукции. Нам нужно распределить продукцию по 13 магазинам так, чтобы максимизировать суммарную прибыль, при этом разрешается закрывать нерентабельные магазины.

Нам известны:

    Производительность фабрик (поле supply в кг продукции за неделю), их координаты (X, Y)

fact x y supply 0 F_01 59.250276 59.871183 389 1 F_02 84.739320 14.179336 409 2 F_03 42.397937 42.474530 124 3 F_04 19.539202 13.714643 70 4 F_05 41.280669 37.860993 386 5 F_06 37.159066 41.353602 196 6 F_07 96.890453 64.420010 394 7 F_08 86.267499 81.662811 365
shop x y demand 0 S_01 13.490869 73.269974 200 1 S_02 85.435435 66.637250 20 2 S_03 28.578297 8.997380 320 3 S_04 31.324145 91.839907 360 4 S_05 40.338575 15.487028 360 5 S_06 41.642451 42.121572 120 6 S_07 53.983692 20.950457 360 7 S_08 75.761895 87.067552 60 8 S_09 81.836739 36.799647 80 9 S_10 54.260517 25.920108 100 10 S_11 67.918105 68.108601 340 11 S_12 92.200710 10.898110 360 12 S_13 19.966539 39.046271 60

  1. costkg = затраты на производство;
  2. revkg = выручка от производства (цена сбыта за кг);
  3. devkg = затраты на логистику;
  4. costweek = затраты на обслуживание магазина.

Получим таблицу такого вида:

fact supply shop demand distance cost_kg rev_kg del_kg cost_week 99 F_08 365 S_09 80 44.863164 200 800 20 10000 100 F_08 365 S_10 100 55.742703 200 800 20 10000 101 F_08 365 S_11 340 13.554211 200 800 20 10000 102 F_08 365 S_12 360 70.764701 200 800 20 10000 103 F_08 365 S_13 60 42.616540 200 800 20 10000

Теперь посмотрим на функцию, которую мы будем оптимизировать (пока без учета содержания магазинов).

Здесь profit — прибыль в рублях от отгрузок в конкретный магазин, а volume — это объем отгрузок фабрики в данный магазин.

Всего у нас будет 104 слагаемых profit (т.к. у нас 104 комбинации фабрик и магазинов).

Конечный вид функции будет выглядеть как:

Теперь переходим к самому линейному программированию. Описание модуля scipy.optimize вы можете найти тут. В общем виде:

res = linprog(c, A_ub=A, b_ub=b, bounds=(x0_bounds, x1_bounds), options=)

  1. с — это коэффициенты при наших volume (то есть издержки). У нас они будут отрицательные, т.к. мы решаем задачу максимизации (минимизация- f(x));
  2. A_ub — это значения при volume для накладываемого нами условия, b_ub — значения ограничений;
  3. x0_bounds and x1_bounds нижние и верхние границы на volume
  1. volume для каждой строки из нашей таблицы не превышает supply;
  2. сумма volume для фабрики по строкам не превышает supply;
  3. сумма volume для магазина по строкам не превышает demand;
  4. volume принимает значения от нуля до max(supply) для конкретной фабрики.

## ff — table with factories and shops coefs = [] for f in ff.iterrows(): coefs.append((f[1][‘rev_kg’] — f[1][‘cost_kg’] — f[1][‘del_kg’]*f[1][‘distance’])*(-1)) A = [] b = [] for f in ff[‘fact’].values: A.append((ff[‘fact’] == f)*1) b.append(ff[ff[‘fact’] ==f][‘supply’].max()) for f in ff[‘shop’].values: A.append((ff[‘shop’] == f)*1) b.append(ff[ff[‘shop’] ==f][‘demand’].max()) x0_bounds = [] x1_bounds = [] for f in ff.iterrows(): x0_bounds.append(0) x1_bounds.append(f[1][‘demand’]) x0_bounds = tuple(x0_bounds) x1_bounds = tuple(x1_bounds) A.append(coefs) b.append(-10000*13) res = linprog(coefs, A_ub=A, b_ub=b, bounds=list(zip(x0_bounds, x1_bounds)), options= )

Читайте также:
Программа амирс инструкция по применению

Optimization terminated successfully.
Current function value: -948302.914122
Iterations: 20

Посчитаем чистую прибыль и посмотрим, сколько будет поставлять каждая фабрика и какие магазины стоит закрыть:

ff[‘supply_best’] = res.x ff[‘stay_opened’] = (ff[‘supply_best’] > 0)*1 ff[‘profit’] = (ff[‘supply_best’]*(ff[‘rev_kg’]- ff[‘cost_kg’] — ff[‘distance’] * ff[‘del_kg’]))*ff[‘stay_opened’] net_profit = ff[‘profit’].sum() — ff[ff[‘stay_opened’]==1][‘shop’].nunique()*10000 grouped = ff.groupby([‘fact’, ‘shop’])[‘supply_best’].sum().reset_index() f = ff.groupby(‘fact’)[‘supply_best’, ‘supply’].agg(f)

Читая прибыль — 828302.9141220199 рублей

Поставки каждой фабрики:

fact shop supply_best 0 F_01 S_01 166.0 17 F_02 S_05 360.0 24 F_02 S_12 49.0 31 F_03 S_06 120.0 38 F_03 S_13 4.0 50 F_04 S_12 70.0 58 F_05 S_07 346.0 61 F_05 S_10 40.0 73 F_06 S_09 80.0 74 F_06 S_10 60.0 77 F_06 S_13 56.0 78 F_07 S_01 34.0 79 F_07 S_02 20.0 88 F_07 S_11 340.0 94 F_08 S_04 305.0 98 F_08 S_08 60.0

Поставки в магазин:

supply_best demand shop S_01 200.0 200 S_02 20.0 20 S_03 0.0 320 S_04 305.0 360 S_05 360.0 360 S_06 120.0 120 S_07 346.0 360 S_08 60.0 60 S_09 80.0 80 S_10 100.0 100 S_11 340.0 340 S_12 119.0 360 S_13 60.0 60

лин алгоритм. пайтон6 лин алгор. Линейный алгоритм на Python

Единственный в мире Музей Смайликов

Самая яркая достопримечательность Крыма

Скачать 15.41 Kb.

Практическое задание № 2

б) Набрать в редакторе системы Python следующую программу:

a = int(input(“Введитеа”))

b = int(input(“Введите b”))

c = int(input(“Введите c”))

в) Запустить данную программу на выполнение и проверить правильность её работы для чисел 2, 4 и 6.

г) Запустить данную программу на выполнение и проверить правильность её работы для чисел 1, 0 и -1.

д) Запустить данную программу на выполнение и проверить правильность её работы для чисел -2, 3 и 10.

2. Написать программу, которая присваивает целой переменной A значение 10 и выводит это значение на экран.

3. Написать программу, которая запрашивает ввод целого числа в переменную B и выводит это число на экран. Проверить правильность работы программы на числах 1, -5, 256, 10455.

4. Написать программу, которая запрашивает ввод вещественного числа в переменную C, умножает это число на 2 и выводит результат на экран. Проверить правильность работы программы на числах 2.5, -7.33, 0, 782.234.

5. Написать программу для ввода значения величины X целого типа, присваивания величине Y действительного типа значения 5.5, вычисления значения величины Z = X — Y и вывода значения величины Z. Протестировать программу для X=5.5, X=0, X=-10.2

2. Вводятся величины X,Y целого типа. Написать программу для обмена значений величин. Необходимо использовать вспомогательную величину Т. Протестировать программу для X=5 и Y=-11.

3. Написать программудля вычисления дискриминанта d квадратного уравнения ax 2 + bx + c = 0. Разработать тесты проверки правильности работы программы для вариантов, когда d0, d=0 и d.

4. Из железной полосы длиной L метров нужно изготовить обруч. На соединение концов уходит D метров полосы. Написать программу для вычисления радиуса R обруча. Протестировать программу для а) L=5.8, D=0.2, б) L=3.25, D=0.1

5. Найти площадь кольца, внешний радиус которого равен R1, а внутренний – R2 (R1R2). Протестировать программу для R1=5.6 и R2=3.8. Проверить ответ на калькуляторе.

6. Написать на языке Python программу для вычисления выражения:

Протестировать её для следующих исходных данных:

2. Дано натуральное число Х. Вычислить Y = X 5 . Разрешается использовать только три операции умножения. Протестировать программу для X=-2 и X=3.

3. Дано натуральное число Х. Вычислить Y = 1 — 2X + 3X 2 — 4X 3 . Разрешается использовать не более 8 арифметических операций. Допустимы: операции сложение, вычитание, умножение. Протестировать программу для X=0, X=1, X=-2.

4. Вычислить расстояние между двумя точками с координатами (X1,Y1) и (X2,Y2). Доказать правильность работы программы на трёх различных тестах.

Источник: topuch.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru