форкнуто от main/python-labs
main
Родитель
c0d720f810
Сommit
a745cdf46f
@ -0,0 +1,101 @@
|
||||
# Индивидуальное контрольное задание по теме 8
|
||||
|
||||
Зеленкина Катерина, А-02-23
|
||||
Вариант 8
|
||||
|
||||
## Задание
|
||||
Задание из ЛР7: разработайте анонимную функцию, вычисляющую значение a*sin(x)/x, где a,x – аргументы функции. Рассчитайте эту функцию в интервале значений х: 0<x≤50 с шагом 0.5 и при некотором значении коэффициента a. Обеспечьте запись рассчитанных значений в текстовый файл по одному значению на строке. Отобразите рассчитанные значения в виде графика.
|
||||
|
||||
## Решение
|
||||
Содержимое Mod1
|
||||
```py
|
||||
# Mod1.py
|
||||
import math
|
||||
|
||||
def calc_function(a, x):
|
||||
if x == 0:
|
||||
return a
|
||||
return a * math.sin(x) / x
|
||||
|
||||
def calculate_interval(a, x_start=0.5, x_end=50, step=0.5):
|
||||
results = []
|
||||
x = x_start
|
||||
while x <= x_end:
|
||||
value = calc_function(a, x)
|
||||
results.append((x, value))
|
||||
x += step
|
||||
return results
|
||||
|
||||
def write_to_file(results, filename="output.txt"):
|
||||
with open(filename, 'w', encoding='utf-8') as f:
|
||||
for x, val in results:
|
||||
f.write(f"{val}\n")
|
||||
print(f"Данные записаны в файл: {filename}")
|
||||
|
||||
def plot_function(results):
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
x_vals = [item[0] for item in results]
|
||||
y_vals = [item[1] for item in results]
|
||||
|
||||
plt.figure(figsize=(10, 5))
|
||||
plt.plot(x_vals, y_vals, label="f(x) = a * sin(x) / x", color='blue')
|
||||
plt.title("График функции f(x) = a * sin(x) / x")
|
||||
plt.xlabel("x")
|
||||
plt.ylabel("f(x)")
|
||||
plt.grid(True)
|
||||
plt.legend()
|
||||
plt.show()
|
||||
```
|
||||
|
||||
Содержимое Mod2:
|
||||
```py
|
||||
import Mod1
|
||||
|
||||
print("=" * 50)
|
||||
print("Расчёт функции f(x) = a * sin(x) / x")
|
||||
print("=" * 50)
|
||||
|
||||
try:
|
||||
a = float(input("Введите коэффициент a: "))
|
||||
filename = input("Введите имя файла ('output.txt'): ") or "output.txt"
|
||||
except ValueError:
|
||||
print("Ошибка ввода! Используйте числа.")
|
||||
exit()
|
||||
|
||||
results = Mod1.calculate_interval(a)
|
||||
|
||||
print("\nПервые 10 значений:")
|
||||
for x, val in results[:10]:
|
||||
print(f" x={x:.1f}, f(x)={val:.6f}")
|
||||
|
||||
Mod1.write_to_file(results, filename)
|
||||
|
||||
print("\nОтображение графика:")
|
||||
Mod1.plot_function(results)
|
||||
```
|
||||
|
||||
Вывод:
|
||||
```py
|
||||
Введите коэффициент a: 2
|
||||
Введите имя файла ('output.txt'): output.txt
|
||||
|
||||
Первые 10 значений:
|
||||
x=0.5, f(x)=1.917702
|
||||
x=1.0, f(x)=1.682942
|
||||
x=1.5, f(x)=1.329993
|
||||
x=2.0, f(x)=0.909297
|
||||
x=2.5, f(x)=0.478778
|
||||
x=3.0, f(x)=0.094080
|
||||
x=3.5, f(x)=-0.200448
|
||||
x=4.0, f(x)=-0.378401
|
||||
x=4.5, f(x)=-0.434458
|
||||
x=5.0, f(x)=-0.383570
|
||||
Данные записаны в файл: output.txt
|
||||
|
||||
Отображение графика:
|
||||
```
|
||||

|
||||
|
||||
Файл __output.txt__ был успешно создан:
|
||||

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