Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
1 / 1 / 2
Регистрация: 20.12.2016
Сообщений: 37

Функция y(x)

25.12.2019, 13:59. Показов 4426. Ответов 6

Студворк — интернет-сервис помощи студентам
Добрый день! Выполняю контрольную, подскажите, что я делаю не так? Получаю комплексные числа, а в условии написано "точность значений у при распечатке установить в 3 знака после запятой".

Задание:

Дана функция (Screenshot_11.png), вычисляющая значение переменной y в зависимости от переменной x. Дан интервал целых чисел, которые может принимать переменная x. Необходимо написать программу на языке Python, которая выведет в текстовый файл result.txt значения переменной y для каждого из предложенных x. Точность значений у при распечатке установить в 3 знака после запятой. Кодировка в текстовом файле должна быть Unicode. Путь к входному и выходному файлу в коде программы нужно сделать относительным.



Исходные данные
Список значений x, подготавливается заранее в текстовом файле source_data.txt
Текстовый файл с исходными данными должен содержать исходную информацию следующего вида:

x=-3
x=-2
x=-1

…………..


Выходные данные
В текстовый файл result.txt должны быть выведены результаты в следующем формате:

При x = -3 значение y = 2.348
При x = -2 значение y = 7.928
При x = -1 значение y = -6.122
При x = 0 значение y = -4.115
При x = 1 значение y = -7.254
…………

Моё решение:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import math
# Путь к файлу ресурса
DATA_FILE = './source_data.txt'
# Путь к файлу результата
RES_FILE = './result.txt'
 
# Подготовка списка значений x и запись в файл source_data.txt
source_data = open(DATA_FILE,"w",encoding="utf8")
for number in range(-10,11):
    source_data.write("x=" + str(number) + '\n')
source_data.close()
 
# Чтение файла source_data.txt
source_data = open(DATA_FILE,encoding="utf8")
 
# Открытие файла result.txt для записи
result = open(RES_FILE,"w",encoding="utf8")
 
# Вычисление y для каждого x и запись результата в файл result.txt
for x in source_data:
    x = int(x.strip()[2:])
 
    if x < -4:
        y = ((14 * x ** 5 - 37 * x ** 2 + 28) ** 4 - 83 * x ** 3) / (
                (42 * x ** 8 + x ** 3) ** 7 + (6 * x ** 2 - 71) ** 4)
    elif -4 <= x < 4:
        #(math.sqrt((56 * x ** 7 + 46 * x ** 2 + 66) ** 5) - 9 * x ** 3)
        y =  (((56 * x ** 7 + 46 * x ** 2 + 66) ** 5)**0.5 - 9 * x ** 3) / (
                (68 * x ** 3 + x ** 2) ** 5 + (65 * x ** 2 - 26) ** 7)
    elif x >= 4:
        y = ((84 * x ** 5 + 46 * x ** 2 + 60) ** 8 - 74 * x ** 5) / (
                (34 * x ** 4 - x ** 3) ** 5 + math.sqrt((53 * x - 49) ** 3))
 
    res = ("При x = " + str(x) + " значение y = " + str(y))
    result.write(res + '\n')
 
result.close()
source_data.close()
Миниатюры
Функция y(x)  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.12.2019, 13:59
Ответы с готовыми решениями:

Функция проверки ввода как отдельная функция для других функций
Проверка на ввод - принимает значения вплоть до типа '2.3pi/1.05' или '5.6/pi'. Возможно, есть ошибки при вводе, пока не нашла. Как эту...

Функция
Есть код на С++ помогите перевести на Python. Заранее Благодарю. #include &lt;iostream&gt; #include &lt;cmath&gt; #include...

Функция
Добрый день. Есть функция, которой передаешь аргумент (например, название тега) и она вставляет название в соответствующие поле. В чем...

6
55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
26.12.2019, 09:12
oihoo,
Три знака после запятой:
Python
1
    res = f"При x = {x} значение y = {y:.3f}"

А комплексные числа вам дает вот это:
x = -4
print(((56 * x ** 7 + 46 * x ** 2 + 66) ** 5)**0.5)

(0.0492664538392182+804582249731423.2j)

PS. Ошибок в реализации формулы я у вас не вижу...
1
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
26.12.2019, 09:50
Зря вы не взяли библиотеку math.

У вас где-то берётся квадратный корень от отрицательного числа:
Python
1
2
3
4
5
6
7
8
9
10
11
>>> (2)**0.5
1.4142135623730951
>>> (-2)**0.5
(8.659560562354934e-17+1.4142135623730951j)
>>> import math
>>> math.sqrt(2)
1.4142135623730951
>>> math.sqrt(-2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: math domain error
1
55 / 40 / 18
Регистрация: 16.12.2019
Сообщений: 149
26.12.2019, 10:08
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
У вас где-то берётся квадратный корень от отрицательного числа
"Где-то":
Цитата Сообщение от udeep Посмотреть сообщение
((56 * x ** 7 + 46 * x ** 2 + 66) ** 5)**0.5
При x in (-2, -3, -4) значение внутри корня будет отрицательным.
1
0 / 0 / 0
Регистрация: 01.01.2020
Сообщений: 2
01.01.2020, 23:48
oihoo, Добрый вечер! Скажите, пожалуйста, у Вас вышло написать программу? Мне пишет не найдено х
0
1 / 1 / 2
Регистрация: 20.12.2016
Сообщений: 37
02.01.2020, 15:02  [ТС]
Lyubashechka, Здравствуйте! Да, программа написана правильно!
Рыжий Лис правильно советует брать библиотеку math.
Цель контрольной работы - получение навыков составления простейших алгоритмов и решения практических задач. Исходные данные даны произвольно, система уравнений не несет смысловой нагрузки.

Спасибо всем!
0
0 / 0 / 0
Регистрация: 12.11.2022
Сообщений: 24
22.12.2022, 11:38
Дополню своим решением. Вдруг кому пригодится
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import cmath
# Путь к файлу ресурса
data_file = './source_data.txt'
# Путь к файлу результата
result_file = './result.txt'
 
# Подготовка списка значений x и запись в файл source_data.txt
source_data = open(data_file,"w",encoding="utf8")
for number in range(-8,13):
    source_data.write("x=" + str(number) + '\n')
source_data.close()
 
# Чтение файла source_data.txt
source_data = open(data_file,encoding="utf8")
 
# Открытие файла result.txt для записи
result = open(result_file,"w",encoding="utf8")
 
# Вычисление y для каждого x и запись результата в файл result.txt
for x in source_data:
    x = int(x.strip()[2:])
 
    if x < -2:
        y = ((92 * x ** 6 + 69 * x ** 2 - 67) ** 7) / (
                (54 * x ** 7 + x ** 3) ** 7 + (48 * x ** 2 + 30) ** 4)
    elif -2 <= x < 3:
         y = (cmath.sqrt((76 * x ** 5 + 70 * x ** 2 + 12) ** 5) - 24 * x ** 5) / (
                (27 * x ** 7 + x ** 2) ** 5 + (87 * x ** 2 - 16) ** 3)
    elif x >= 3:
        y = ((61 * x ** 3 + 81 * x ** 2 + 63) ** 7 - 42 * x ** 5) / (
                (9 * x ** 6 - x ** 3) ** 7 + cmath.sqrt((51 * x - 13) ** 3))
# Выводим результат, в результате оставляем 3 знака после запятой по условиям задачи
    res = f"При x = {x} значение y = {y:.3f}"
    result.write(res + '\n')
 
result.close()
source_data.close()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.12.2022, 11:38
Помогаю со студенческими работами здесь

Функция Эйлера
нужно перенести функцию эйлера на пайтон, вот работающий код на шарпе int phi(int n) { int result =...

Функция Аккермана
Добрый вечер! объясните подробно и максимально простым языком, что это за функция, зачем, как и почему она применяется в питоне (да и...

Функция не инкремируется
def is_prime(n): divider = 2 while divider &lt; n: return n % divider != 0 divider += 1 class...

функция с аргументом
def make_shirt(t_shirt_size, t_shirt_text): &quot;&quot;&quot;Функция будет получать цвет и размер футболки&quot;&quot;&quot; print((int(&quot;Размер...

Функция count()
На сайте Андрея есть такой пример и написаноstr = &quot;это строковый пример....!!!&quot; sub = 'о' print (&quot;str.count('о') : &quot;,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru