Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

Делене на полиноми

Всичко, което си няма категория

Делене на полиноми

Мнениеот Здравко 99 » 30 Дек 2021, 23:31

20211230_232921.jpg
20211230_232921.jpg (160.36 KiB) Прегледано 434 пъти

Може ли помощ с тази задачи
Здравко 99
Нов
 
Мнения: 79
Регистриран на: 22 Юли 2020, 08:54
Рейтинг: 4

Re: Делене на полиноми

Мнениеот peyo » 31 Дек 2021, 12:31

Здравко 99 написа:
20211230_232921.jpg

Може ли помощ с тази задачи



Добре, това ще е сложно и нормално ще имам много писане, затова ще решим тази задача със Sympy.


In [595]: var("x,a,b,c,d,u,v,c1,c2,c3,c4,c5,c6,c7,c8,c8,c0")
Out[595]: (x, a, b, c, d, u, v, c1, c2, c3, c4, c5, c6, c7, c8, c8, c0)

In [596]: f = 12*x**4 - 46*x**3 + 24*x**2 + 25*x - 10

In [597]: g = -36*x**4 + 144*x**3 - 89*x**2 - 83*x + 34

In [598]: roots(f)
Out[598]:
{-2/3: 1,
3/2 + 7/(12*(1/4 + sqrt(705)*I/72)**(1/3)) + (1/4 + sqrt(705)*I/72)**(1/3): 1,
3/2 + 7/(12*(-1/2 + sqrt(3)*I/2)*(1/4 + sqrt(705)*I/72)**(1/3)) + (-1/2 + sqrt(3)*I/2)*(1/4 + sqrt(705)*I/72)**(1/3): 1,
3/2 + (-1/2 - sqrt(3)*I/2)*(1/4 + sqrt(705)*I/72)**(1/3) + 7/(12*(-1/2 - sqrt(3)*I/2)*(1/4 + sqrt(705)*I/72)**(1/3)): 1}

Хм... Има един лесен корен само, Да ги видим всичките по-добре.

In [599]: nroots(f)
Out[599]: [-0.666666666666667, 0.353799207387689, 1.19864753464855, 2.94755325796377]

In [600]: nroots(g)
Out[600]: [-0.666666666666667, 0.346769738148226, 1.39833598953727, 2.92156093898117]

Ок, имат само един общ корен, значи нашия най-голям общ делител d ще е от първа степен и ще е.

In [601]: d= x + Rational(2,3)
...: d
Out[601]: x + 2/3

И сега следващата част, да потърсим решение за u,v от първа степен:

u=c0*x+c1; v=c2*x+c3

In [615]: P = poly(u*f+v*g -d, x)
...: P
Out[615]: Poly((12*c0 - 36*c2)*x**5 + (-46*c0 + 12*c1 + 144*c2 - 36*c3)*x**4 + (24*c0 - 46*c1 - 89*c2 + 144*c3)*x**3 + (25*c0 + 24*c1 - 83*c2 - 89*c3)*x**2 + (-10*c0 + 25*c1 + 34*c2 - 83*c3 - 1)*x - 10*c1 + 34*c3 - 2/3, x, domain='QQ[c0,c1,c2,c3]')

In [616]: P.coeffs()
Out[616]:
[12*c0 - 36*c2,
-46*c0 + 12*c1 + 144*c2 - 36*c3,
24*c0 - 46*c1 - 89*c2 + 144*c3,
25*c0 + 24*c1 - 83*c2 - 89*c3,
-10*c0 + 25*c1 + 34*c2 - 83*c3 - 1,
-10*c1 + 34*c3 - 2/3]

In [617]: solve(P.coeffs())
Out[617]: []

Няма решение от първа степен. Да видим от втора степен.

In [618]: u,v = c0*x**2+c1*x+c2, c3*x**2+c4*x+c5

In [619]: P = poly(u*f+v*g -d, x)
...: P
Out[619]: Poly((12*c0 - 36*c3)*x**6 + (-46*c0 + 12*c1 + 144*c3 - 36*c4)*x**5 + (24*c0 - 46*c1 + 12*c2 - 89*c3 + 144*c4 - 36*c5)*x**4 + (25*c0 + 24*c1 - 46*c2 - 83*c3 - 89*c4 + 144*c5)*x**3 + (-10*c0 + 25*c1 + 24*c2 + 34*c3 - 83*c4 - 89*c5)*x**2 + (-10*c1 + 25*c2 + 34*c4 - 83*c5 - 1)*x - 10*c2 + 34*c5 - 2/3, x, domain='QQ[c0,c1,c2,c3,c4,c5]')

In [620]: P.coeffs()
Out[620]:
[12*c0 - 36*c3,
-46*c0 + 12*c1 + 144*c3 - 36*c4,
24*c0 - 46*c1 + 12*c2 - 89*c3 + 144*c4 - 36*c5,
25*c0 + 24*c1 - 46*c2 - 83*c3 - 89*c4 + 144*c5,
-10*c0 + 25*c1 + 24*c2 + 34*c3 - 83*c4 - 89*c5,
-10*c1 + 25*c2 + 34*c4 - 83*c5 - 1,
-10*c2 + 34*c5 - 2/3]

In [621]: solve(P.coeffs())
Out[621]: {c0: -2, c1: 25/3, c2: -8, c3: -2/3, c4: 8/3, c5: -7/3}

Имаме решение за втора степен!

In [624]: print(latex(u.subs(solve(P.coeffs()))))
$u=- 2 x^{2} + \frac{25 x}{3} - 8$

In [625]: print(latex(v.subs(solve(P.coeffs()))))
$v=- \frac{2 x^{2}}{3} + \frac{8 x}{3} - \frac{7}{3}$
peyo
Математик
 
Мнения: 1759
Регистриран на: 16 Мар 2019, 09:35
Местоположение: София
Рейтинг: 656

Re: Делене на полиноми

Мнениеот Здравко 99 » 02 Яну 2022, 17:29

Колко е нод ?
Здравко 99
Нов
 
Мнения: 79
Регистриран на: 22 Юли 2020, 08:54
Рейтинг: 4

Re: Делене на полиноми

Мнениеот peyo » 03 Яну 2022, 09:40

Здравко 99 написа:Колко е нод ?


x + 2/3
peyo
Математик
 
Мнения: 1759
Регистриран на: 16 Мар 2019, 09:35
Местоположение: София
Рейтинг: 656

Re: Делене на полиноми

Мнениеот grav » 03 Яну 2022, 12:25

Алгоритъмът на Евклид позволява такива задачи да се решават на ръка.
grav
Математиката ми е страст
 
Мнения: 884
Регистриран на: 14 Юли 2011, 23:23
Рейтинг: 370

Re: Делене на полиноми

Мнениеот Sup3rlum » 03 Яну 2022, 12:38

peyo написа:.....


Имам един въпрос само. ОП като трябва да си напише решението в тетрадката, какво точно ще напише? Не че някой му е длъжен да му разписва подробно решенията, но каква е подлежащата идея да ръгаме всичко в Python конзолата и после да се кефим? Минимум, че основната идея (Евклидовия алгоритъм тука) присъства с причина, и е в самата имплементация на Sympy. Тоест все едно да го решиш и да напишеш "ми отговора е 5". Окей ама, кво правим тука с тия конзоли :lol: :)
Sup3rlum
Фен на форума
 
Мнения: 247
Регистриран на: 19 Фев 2019, 02:08
Рейтинг: 347

Re: Делене на полиноми

Мнениеот peyo » 03 Яну 2022, 13:18

Sup3rlum написа:
peyo написа:.....


Имам един въпрос само. ОП като трябва да си напише решението в тетрадката, какво точно ще напише? Не че някой му е длъжен да му разписва подробно решенията, но каква е подлежащата идея да ръгаме всичко в Python конзолата и после да се кефим? Минимум, че основната идея (Евклидовия алгоритъм тука) присъства с причина, и е в самата имплементация на Sympy. Тоест все едно да го решиш и да напишеш "ми отговора е 5". Окей ама, кво правим тука с тия конзоли :lol: :)



Моя метод за решаване на задачата не е приложим за изчисления на ръка и какво ОП ще напише в тетрадката мога само да гадая. Може би ще използва горното решение само за проверка.

Аз лично намирам използването на компютърни системи за символни изчисления изключително интересни и полезни при решаването на задачи, понякога само защото наготово ми генерират latex , но в повечвто случаи ми дават възможност да експериментирам с различни решения за дадена задача. Още по-интересни са ми случаите когато намеря начин само да опиша условието по начин по който компютъра след това сам ще намери решение.
peyo
Математик
 
Мнения: 1759
Регистриран на: 16 Мар 2019, 09:35
Местоположение: София
Рейтинг: 656


Назад към Алгебра



Кой е на линия

Регистрирани потребители: Google Adsense [Bot], Google [Bot]

Форум за математика(архив)