форкнуто от main/python-labs
Родитель
3f8a47226e
Сommit
3634d98b72
|
После Ширина: | Высота: | Размер: 17 KiB |
@ -0,0 +1,21 @@
|
||||
import math
|
||||
|
||||
|
||||
calc = lambda a, x: a * math.sin(x) / x
|
||||
|
||||
|
||||
def calculate_all(a):
|
||||
results = []
|
||||
x = 0.5
|
||||
while x <= 50:
|
||||
y = calc(a, x)
|
||||
results.append(y)
|
||||
x += 0.5
|
||||
return results
|
||||
|
||||
|
||||
def save_results(results):
|
||||
with open("results.txt", "w") as f:
|
||||
for y in results:
|
||||
f.write(f"{y}\n")
|
||||
print("Результаты сохранены в results.txt")
|
||||
@ -0,0 +1,22 @@
|
||||
import matplotlib.pyplot as plt
|
||||
from func_calc import calculate_all, save_results
|
||||
|
||||
|
||||
a = float(input("Введите число a: "))
|
||||
|
||||
|
||||
values = calculate_all(a)
|
||||
|
||||
|
||||
save_results(values)
|
||||
|
||||
|
||||
print("\nПервые 5 значений:")
|
||||
for i in range(5):
|
||||
x = 0.5 * (i + 1)
|
||||
print(f"x={x:.1f} → y={values[i]:.6f}")
|
||||
|
||||
|
||||
x_points = [0.5 * i for i in range(1, len(values)+1)]
|
||||
plt.plot(x_points, values)
|
||||
plt.show()
|
||||
@ -0,0 +1,79 @@
|
||||
# Контрольное задание по теме 8
|
||||
Симанков Б., А-02-23
|
||||
|
||||
# Задание
|
||||
Разработать функцию, на ее основе создать модуль. Создать второй модуль, в котором должны быть инструкции для ввода/создания исходных данных для проверки работы функции, вызов функции и отображение полученных результатов.
|
||||
|
||||
Разработайте анонимную функцию, вычисляющую значение a*sin(x)/x, где a,x – аргументы функции. Рассчитайте эту функцию в интервале значений х: 0<x≤50 с шагом 0.5 и при некотором значении коэффициента a. Обеспечьте запись рассчитанных значений в текстовый файл по одному значению на строке. Отобразите рассчитанные значения в виде графика.
|
||||
|
||||
# Решение
|
||||
|
||||
Содержание func_calc.py:
|
||||
```py
|
||||
>>> import math
|
||||
|
||||
>>> calc = lambda a, x: a * math.sin(x) / x
|
||||
|
||||
>>> def calculate_all(a):
|
||||
>>> results = []
|
||||
>>> x = 0.5
|
||||
>>> while x <= 50:
|
||||
>>> y = calc(a, x)
|
||||
>>> results.append(y)
|
||||
>>> x += 0.5
|
||||
>>> return results
|
||||
|
||||
|
||||
>>> def save_results(results):
|
||||
>>> with open("results.txt", "w") as f:
|
||||
>>> for y in results:
|
||||
>>> f.write(f"{y}\n")
|
||||
>>> print("Результаты сохранены в results.txt")
|
||||
```
|
||||
|
||||
Содержание main.py:
|
||||
```py
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> from func_calc import calculate_all, save_results
|
||||
|
||||
>>> a = float(input("Введите число a: "))
|
||||
|
||||
>>> values = calculate_all(a)
|
||||
|
||||
>>> save_results(values)
|
||||
|
||||
|
||||
>>> print("\nПервые 5 значений:")
|
||||
>>> for i in range(5):
|
||||
>>> x = 0.5 * (i + 1)
|
||||
>>> print(f"x={x:.1f} → y={values[i]:.6f}")
|
||||
|
||||
|
||||
>>> x_points = [0.5 * i for i in range(1, len(values)+1)]
|
||||
>>> plt.plot(x_points, values)
|
||||
>>> plt.show()
|
||||
```
|
||||
|
||||
Тестирование:
|
||||
```py
|
||||
>>> import main
|
||||
Введите число a: 5
|
||||
Результаты сохранены в results.txt
|
||||
|
||||
Первые 5 значений:
|
||||
x=0.5 → y=4.794255
|
||||
x=1.0 → y=4.207355
|
||||
x=1.5 → y=3.324983
|
||||
x=2.0 → y=2.273244
|
||||
x=2.5 → y=1.196944
|
||||
```
|
||||
График сохранён в файле Figure_1.png
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Загрузка…
Ссылка в новой задаче