Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from cmath import asin
- import math
- import matplotlib.pyplot as plt
- import numpy as np
- import sympy as sym
- from sympy.stats import Arcsin
- from scipy.optimize import minimize, minimize_scalar, fmin
- from sympy.sets import *
- from sympy.calculus.util import continuous_domain
- from sympy import Symbol, limit, S
- from sympy.functions import asin
- def f(x) -> float:
- """Функция"""
- return ((x**2/2)-1)
- # Постройка графика
- fig, ax = plt.subplots()
- x = np.linspace(-10,10,50)
- # функция f(x) = x^2/2-1
- y = ((x**2/2)-1)
- ax = ax.plot(x, y, "b-")
- ax = plt.gca()
- ax.spines['left'].set_position("center")
- ax.spines['bottom'].set_position('center')
- ax.spines['top'].set_visible(False)
- ax.spines['right'].set_visible(False)
- ax.set_xlabel("Y", fontsize=15, color='blue', labelpad=120) # +
- ax.set_ylabel("X", fontsize=15, color='orange', labelpad=140, rotation=0)
- plt.title(r'функция $y = x^2$/2-1')
- z = Symbol('z')
- # найдем точки пересечения с осью Ox
- roots = sym.solve((z**2/2)-1)
- print(f'Верхний предел = {roots[1]}\nНижний предел = {roots[0]}')
- # производная
- derivative = sym.diff((z**2/2)-1)
- a = roots[0]
- b = roots[1]
- # (1+derivative**2)**(1/2)
- # Нахождение длины дуги по форумле integral(a,b) sqrt(1+derivate^2) dx
- # https://mathforyou.net/online/calculus/arclen/cartesian/
- # Дока по интегралам https://docs.sympy.org/latest/modules/integrals/integrals.html
- length = sym.integrate(sym.sqrt(1+derivative**2), (z, a, b))
- print(f'Длина дуги = {length}')
- #plt.fill_between(x, y, where = (y >= -1) & (x <= np.sqrt(2)) & (x >= -np.sqrt(2)),color='cyan')
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement