Главная страница
Навигация по странице:

  • Самостоятельно

  • Дада. Python ч1 Лабораторная работа №1. Линейные алгоритмы, математиче. Лабораторная работа 1. Линейные алгоритмы, математические функции. Цель показать ввод, вывод данных преобразовывать типы данных


    Скачать 45.4 Kb.
    НазваниеЛабораторная работа 1. Линейные алгоритмы, математические функции. Цель показать ввод, вывод данных преобразовывать типы данных
    Дата09.02.2022
    Размер45.4 Kb.
    Формат файлаdocx
    Имя файлаPython ч1 Лабораторная работа №1. Линейные алгоритмы, математиче.docx
    ТипЛабораторная работа
    #356431
    Лабораторная работа №1. Линейные алгоритмы, математические функции.

    Цель: показать ввод, вывод данных; преобразовывать типы данных.
    Задача: научиться работать с математиче-скими функциями; работа с линейными алгоритмами.

    2 x2
    2cos(x /6 )


    log(3sin(x))(3cos( /42x))


    1tg2(2x/ )

    1) y tg

    1

    2 ; 2)

    y 2 .


    2


    1/2  sin

    Теоретическое введение

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

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

    В наших примерах знаменатели

    1/ 2 sin 2

    и 1 tg2(2x/)

    всегда

    неравны нулю. Кроме этого, во втором примере, основание логарифма

    3 sin( x)


    не отрицательно и не равно единице, а логарифмируемая функция

    3 cos( / 4 2x) всегда больше нуля.

    Для математических вычислений в Python имеются как встроенные, так и дополнительные функции и методы. Применить дополнительные математические функций можно после подключения модуля math:

    import math

    либо
    from math import *

    В первом случае функции рассматриваются как методы объекта math и

    должны записываться так:

    import math print(math.sin(math.pi/4))

    print(math.sqrt(2)/2)

    Во втором случае вызов функции может быть сделан в более привычной для нас форме:

    from math import * print(sin(pi/4)) print(sqrt(2)/2)

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

    from math import (pi, sin, cos,

    tan, log)

    В этом примере демонстрируется способ импорта необходимых функций, и способ размещения инструкции на нескольких строках. Такие функции так же можно использовать в привычной для нас манере.

    Набор функций и методов модуля math приводится в Таблице 1, см. Приложение 1. Больше информации о функциях модуля math можно получить из документации или в сети Интернет.

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

    ctg(x) = 1/tan(x)= cos(x)/sin(x).

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

    Например, символ  можно заменить на a, или alpha. Значение цвета можно хранить в переменной Color, а объема в переменной Volume или Capacity.

    Обращайте внимание на цветовую раскраску переменной при наборе в

    редакторе IDLE. Она должна быть черной.

    Для решения задания потребуется вводить и выводить данные. В нашем случае это числа целого или вещественного типа.
    Ввод данных

    Ввод данных можно выполнить с клавиатуры функцией input(): m = input([str])

    При этом на экран будет выведена строка str, а переменная m получит значение строкового типа, введённое пользователем. Строковый тип может быть преобразован, например, к типу int или float, если введённое значение – число.

    Для ввода нескольких значений можно воспользоваться методом split(), который позволяет разбить строку на подстроки (split расщеплять).

    Например, для ввода значений параметра и переменной x можно поступить так:

    a, x = input('Введите данные (a, x): ').split() a = float(a)

    x = float(x)

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

    Если пользователь не ввел данные (просто нажал Enter) или вместо цифр и точки ввел недопустимые символы, например буквы, программа завершится аварийно на шаге приведения к типу float(). Исключительная ситуация, которая при этом возникает, может быть обработана с помощью инструкции try. Более подробно об этом следует прочитать, например, в [1].

    В следующем примере пользователь должен ввести первое число целого типа, а второе – вещественного. Если ввод будет неправильным, то возникнет исключительная ситуация ValueError и управление программой будет передано в блок except. В этом блоке можно предусмотреть возможные ситуации и принять необходимое решение, например, заставить пользователя правильно ввести данные.

    import sys, traceback while True:

    a = x = "" try:

    a,x= (input('Введите [a: int, x: float]:')

    .split()) a = int(a)

    x = float(x) break

    except ValueError:

    if a == "" and x == "": a = x = 0

    continue

    print("a - int, x - float. Пример: 3 4.5") print(a, x,)

    В теле "вечного" цикла while True:, в блоке try, инициализируются две переменные, а затем следует инструкция для ввода данных. При ошибочном вводе числа, например, вместо целого вещественное, или вместо цифры буква, возникнет исключительная

    ситуация ValueError. Управление будет передано в модуль except, где, в условном операторе, проверяется, были ли введены данные. Если был нажат Enter, то переменные получат нулевое значение и управление будет передано инструкции, которая следует за циклом. Если ввод данных был сделан, то исключительная ситуация возникла при преобразовании типов данных. В этом случае выдается предупреждающее сообщение, и управление передается в начало цикла (ввод должен быть повторен).

    Замечание:Если не выполнить инициализацию переменных перед инструкцией input(), то при возникновении исключительной ситуации (при вводе нажат только Enter), управление будет передано в модуль except, где возникнет новая исключительная ситуация в условном операторе if: переменная a не определена.
    Вывод данных

    Вывод данных на экран монитора может быть выполнен функцией print(). Эта функция позволяет выполнять форматированный вывод, как с использованием Си-подобного форматирования, так и с использованием форматной строки Python.

    Следующие строки демонстрируют, как можно форматировать вывод.

    for x in range(1,11):

    print('%2d %3d %7.2f' % (x, x*x, x*x*x)) print("{0:.2f} {1:.2f} {2:.4f}".format(a, x, y))

    Буква в формате числа определяет тип выводимого числа. Так, d – это целый тип, f – вещественное число. Число в формате означает то число позиций, которое будет использовано для вывода числа. Для вещественного числа указывается, после точки, количество выводимых десятичных знаков.

    Во второй строке использован Си-подобный формат, в котором формат числа начинается с процента "%". В этом формате аргументы отделяются от форматной части строки так же символом % – процент. В третьей строке используется форматная строка Python, в которой в форматной строке позиции для значений аргументов выделяются фигурными скобками.

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

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

    print('x=%2d x^2=%3d x^3=%7.2f'

    % (x, x*x, x*x*x)) print("a={0:.2f} x={1:.2f} y={2:.4f}"

    .format(a, x, y))

    Использование форматных строк делает вывод данных более внятным.

    За более подробной информацией обращайтесь к учебникам или Интернет.
    Решение задания

    Вернемся к нашим примерам и запишем их, используя правила языка Python. Первое выражение примет вид:

    1. y = tan(x**2/2-1)**2+2*cos(x-pi/6)/(1/2+sin(a)**2)

    Второе выражение представим в виде двух:

    1. tmp=log(3-cos(pi/4+2*x),

    3+sin(x))/(1+tan(2*x/pi)**2) y = pow(2, tmp)
    Описание алгоритма

    Для вычислений необходимо обеспечить ввод двух переменных x и a. Поскольку по условиям задачи их тип и точность представления не заданы, выберем для них вещественный тип (float). Для оптимизации записи выражения используем промежуточную переменную tmp.

      1. Ввести значения a и x, преобразовать к типу float.

      2. Вычислить выражение 1.

      3. Вывести результат вычисления.

      4. Вычислить значение переменной tmp;

      5. Вычислить выражение 2.

      6. Вывести результат вычисления.
    Листинг программы

    # -*- coding: cp1251 -*- from math import *

    a = float(input('Введите параметр а: ')) x = float(input('Введите значение x: '))

    y=tan(x**2/2-1)**2+(2*cos(x-pi/6))/(1/2+sin(a)**2) print("{0:.2f} {1:.2f} {2:.4f}".format(a, x, y)) tmp=log(3-cos(pi/4+2*x),

    3+sin(x))/(1+tan(2*x/pi)**2) y=pow(2,tmp)

    print("{0:.2f} {1:.4f}".format(x, y))
    Результаты тестирования программы




    a

    x

    Первое выражение

    Второе

    выражение

    Калькулятор

    Программа

    -2

    -2

    1.196954

    1.1970

    1.1184

    0

    -2

    -0.834654

    -0.8347

    1.1184

    0

    0

    5.889618

    5.8896

    1.6880

    2

    0

    3.730931

    3.7309

    1.6880

    1.5

    0.5

    2.771242

    2.7712

    1.7955

    4

    3

    -1.326566

    -1.3266

    1.0517

    Примечание:Эта таблица оформлялась в текстовом редакторе вручную.

    Самостоятельно


    Вариант

    Задача

    1

    1. Дана сторона квадрата a. Найти его периметр P = 4·a.

    2. Дано целое число. Если оно является положительным, то прибавить к не-му 1; в противном случае не изменять его. Вывести полученное число.

    3. Даны два ненулевых числа. Найти сумму, разность, произведение и частное их квадратов.

    4. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной сумму этих значений, а если равны, то при-своить переменным нулевые значения. Вывести новые значения перемен-ных A и B.

    5. Даны два ненулевых числа. Найти сумму, разность, произведение и частное их модулей.

    2

    1. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной большее из этих значений, а если равны, то присвоить переменным нулевые значения. Вывести новые значения пере-менных A и B.

    2. Даны катеты прямоугольного треугольника a и b. Найти его гипоте-нузу c и периметр P: c = 2ab2 +, P = a + b + c.

    3. Даны три числа. Найти наименьшее из них.

    4. Даны два круга с общим центром и радиусами R1 и R2 (R1 > R2). Найти площади этих кругов S1 и S2, а также площадь S3 кольца, внешний радиус которого равен R1, а внутренний радиус равен R2: S1 = π·(R1)2, S2 = π·(R2)2, S3 = S1 – S2. В качестве значения π использовать 3.14.

    5. Даны три числа. Найти среднее из них (то есть число, расположенное ме-жду наименьшим и наибольшим).

    3

    1. Дана длина L окружности. Найти ее радиус R и площадь S круга, ог-раниченного этой окружностью, учитывая, что L = 2·π·R, S = π·R2. В ка-честве значения π использовать 3.14.

    2. Даны три числа. Вывести вначале наименьшее, а затем наибольшее из дан-ных чисел.

    3. Дана площадь S круга. Найти его диаметр D и длину L окружности, ограничивающей этот круг, учитывая, что L = π·D, S = π·D2/4. В качестве значения π использовать 3.14.

    4. Даны три числа. Найти сумму двух наибольших из них.

    5. Даны три переменные вещественного типа: A, B, C. Если их значения упо-рядочены по возрастанию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное. Вывести новые значе-ния переменных A, B, C.

    4

    1. Даны три переменные вещественного типа: A, B, C. Если их значения упо-рядочены по возрастанию или убыванию, то удвоить их; в противном слу-чае заменить значение каждой переменной на противоположное. Вывести новые значения переменных A, B, C.

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

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

    4. Дана сторона квадрата a. Найти его площадь S = a2.

    5. Дано целое число. Если оно является положительным, то прибавить к не-му 1; в противном случае вычесть из него 2. Вывести полученное число.

    5

    1. На числовой оси расположены три точки: A, B, C. Определить, какая из двух последних точек (B или C) расположена ближе к A, и вывести эту точ-ку и ее расстояние от точки A.

    2. Дано целое число. Если оно является положительным, то прибавить к не-му 1; если отрицательным, то вычесть из него 2; если нулевым, то заме-нить его на 10. Вывести полученное число.

    3. Даны стороны прямоугольника a и b. Найти его площадь S = a·b и пе-риметр P = ·(a + b).

    4. Дан диаметр окружности d. Найти ее длину L = π·d. В качестве значе-ния π использовать 3.14.

    5. Даны три целых числа. Найти количество положительных чисел в исход-ном наборе.

    6

    1. Дана длина ребра куба a. Найти объем куба V = a3 и площадь его по-верхности S = 6·a2.

    2. Даны три целых числа. Найти количество положительных и количество от-рицательных чисел в исходном наборе.

    3. Даны длины ребер a, b, c прямоугольного параллелепипеда. Найти его объем V = a·b·c и площадь поверхности S = 2·(a·b + b·c + a·c).

    4. Даны два числа. Вывести большее из них.

    5. Даны два числа. Вывести порядковый номер меньшего из них.

    7

    1. Найти длину окружности L и площадь круга S заданного радиуса R: L = 2·π·R, S = π·R2. В качестве значения π использовать 3.14.

    2. Даны два числа a и b. Найти их среднее арифметическое: (a + b)/2.

    3. Даны два числа. Вывести вначале большее, а затем меньшее из них.

    4. Даны два неотрицательных числа a и b. Найти их среднее геометриче-ское, то есть квадратный корень из их произведения: ab⋅.

    5. Даны две переменные вещественного типа: A, B. Перераспределить значе-ния данных переменных так, чтобы в A оказалось меньшее из значений, а в B — большее. Вывести новые значения переменных A и B.

    Список используемой литературы :

    1. Н.А. Прохоренок, В.А. Дронов, Python 3 и PyQt 5. Разработка приложений: СПб.: БХВ-Петербург, 2017

    2. С.Р. Авриевич, Язык программирования Python. Курс лекций

    3. Д. Мусин, Самоучитель Python. Вып. 0.2, 2016

    4. С. Шапошникова, Основы программирования на Python. Вводный курс, вер. 2., http://younglinux.info, 2011

    5. T.E. Oliphant, Guide to NumPy: PhD, 2006

    6. NumPy, лекция 4, файл в формате pdf: Py_Lecture4_numpy.pdf

    7. Wes McKinney, Python for Data Analysis: Published by O’Reilly Media, Inc., 2013

    8. NumPy User Guide, Release 1.12.0, Written by the NumPy community, 2017


    написать администратору сайта