Monday, November 22, 2021

Решение задачи 17 369 Вариант Ларина с помощью Python (numpy,matplotlib,sympy)

Решение с помощью Пайтон, импортируя numpy,matplotlib,sympy в пайтон виртуальное окружение.

Совмещая условие задачи с геометрией плота получаем значения для параметра а = {-2;2; -3*6^(1/2)/4; -3*6^(1/2)/4}. Рассчеты ординат точек экстремума и точек пересечения голубой и красной кривых проделаны стандартными средствами мат. анализа. Plot строит график числителя дроби в аОх плоскости a(x)= x^3/(4-2x^2) и знаменателя dvr(x) = x/(3-x^2). Аналитически находятся корни a'(x) как {-6^(1/2); 6^(1/2} и их ординаты по оси "а" {-3*6^(1/2)/4; 3*6^(1/2)/4}, прямые а=-3*6^(1/2)/4 и а=3*6^(1/2)/4 пересекут график а(х) только в 2-ух точках, а также точки пересечения a(x)=dvr(x) {-1,1,-2,2}. В силу условия задачи нас интересуют ординаты по "a" только {-2,2}. Эти точки лежащие на кривой а(х) вне [-3*6^(1/2)/4; -3*6^(1/2)/4] по оси "a" следует выколоть и тогда а =2 и а =-2 пересекут график а(х) ровно 2-ух точках, а значения их ординат дадут еще два значения а - это {-2,2}, так как в них dvr(x)=a(x) иначе говоря

a(x)=x/(3-x^2) <=> a(x)*(3-x^2)=x <=> a(x)*x^2-3*a(x)+x=0

import matplotlib.pyplot as plt

import numpy as np

from sympy import sympify, lambdify

from sympy.abc import x

fig = plt.figure('a0x - plane')

ax = fig.add_subplot(111)

ax.spines['left'].set_position('zero')

ax.spines['right'].set_color('none')

ax.spines['bottom'].set_position('zero')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.yaxis.set_ticks_position('left')

# setup x and y ranges and precision

xline = np.arange(-5.5,5.5,0.01)

plt.axhline(y = (3*6**(0.5))/4, color = 'green', linestyle = '-')

plt.axhline(y = -(3*6**(0.5))/4, color = 'green', linestyle = '-')

plt.axhline(y =  2.0, color = 'green', linestyle = '-')

plt.axhline(y = -2.0, color = 'green', linestyle = '-')

myfunction=sympify(x**3/(4-2*x**2))

myfunctionDvr=sympify(x/(3-x**2))

mylambdifiedfunction=lambdify(x,myfunction,'numpy')

mylambdifiedfunctionDvr=lambdify(x,myfunctionDvr,'numpy')

ax.plot(xline, mylambdifiedfunction(xline),zorder=100,linewidth=2,color='blue')

ax.plot(xline, mylambdifiedfunctionDvr(xline),zorder=100,linewidth=1,color='red')

ax.set_xbound(-10,10)

ax.set_ybound(-5,5)

plt.show()





































Tuesday, November 9, 2021

Buiding graph via python module importing networkx,plotly

 (.env) [boris@fedora34server NUMPY]$ cat  graphYQ1011.py

import plotly.graph_objects as go

import networkx as nx

G = nx.random_geometric_graph(200, 0.125)

edge_x = []

edge_y = []

for edge in G.edges():

    x0, y0 = G.nodes[edge[0]]['pos']

    x1, y1 = G.nodes[edge[1]]['pos']

    edge_x.append(x0)

    edge_x.append(x1)

    edge_x.append(None)

    edge_y.append(y0)

    edge_y.append(y1)

    edge_y.append(None)

edge_trace = go.Scatter(

    x=edge_x, y=edge_y,

    line=dict(width=0.5, color='#888'),

    hoverinfo='none',

    mode='lines')

node_x = []

node_y = []

for node in G.nodes():

    x, y = G.nodes[node]['pos']

    node_x.append(x)

    node_y.append(y)

node_trace = go.Scatter(

    x=node_x, y=node_y,

    mode='markers',

    hoverinfo='text',

    marker=dict(

        showscale=True,

        # colorscale options

        #'Greys' | 'YlGnBu' | 'Greens' | 'YlOrRd' | 'Bluered' | 'RdBu' |

        #'Reds' | 'Blues' | 'Picnic' | 'Rainbow' | 'Portland' | 'Jet' |

        #'Hot' | 'Blackbody' | 'Earth' | 'Electric' | 'Viridis' |

        colorscale='YlGnBu',

        reversescale=True,

        color=[],

        size=10,

        colorbar=dict(

            thickness=15,

            title='Node Connections',

            xanchor='left',

            titleside='right'

        ),

        line_width=2))

node_adjacencies = []

node_text = []

for node, adjacencies in enumerate(G.adjacency()):

    node_adjacencies.append(len(adjacencies[1]))

    node_text.append('# of connections: '+str(len(adjacencies[1])))

node_trace.marker.color = node_adjacencies

node_trace.text = node_text

fig = go.Figure(data=[edge_trace, node_trace],

             layout=go.Layout(

                title='<br>Network graph made with Python',

                titlefont_size=16,

                showlegend=False,

                hovermode='closest',

                margin=dict(b=20,l=5,r=5,t=40),

                annotations=[ dict(

                    text="Python code: <a href='https://plotly.com/ipython-notebooks/network-graphs/'> https://plotly.com/ipython-notebooks/network-graphs/</a>",

                    showarrow=False,

                    xref="paper", yref="paper",

                    x=0.005, y=-0.002 ) ],

                xaxis=dict(showgrid=False, zeroline=False, showticklabels=False),

                yaxis=dict(showgrid=False, zeroline=False, showticklabels=False))

                )

fig.show()