Nejste přihlášen/a.

Přihlásit se do poradny

 

Python kvadratická rovnice

Od: bubakce odpovědí: 3 změna:

Zdravím, poslední dobou mám problémy s Pythonem a snažím se řešit tuto jednoduchou kvadratickou rovnici
y=ax2 Zatím mě napadlo následující:

from sympy import symbols, Eq, solve

def reseni_soustavy_rovnic(a):
# Definice symbolických proměnných
x, y = symbols(x y)

# Definice rovnice
rovnice = Eq(y, a * x**2)

# Řešení soustavy rovnic
reseni = solve(rovnice, y)

return reseni

# Příklad s konkrétním koeficientem a=2
koeficient_a = 2
vysledek = reseni_soustavy_rovnic(koeficient_a)

print(f"Řešení soustavy rovnic pro a={koeficient_a} je:")
print(f"y = {vysledek[0]}")

Ale zdá se, že to nějak nefunguje, minimálně ne v Replitu. Má někdo nějaký nápad, co s tím?
píše mi to:
Řešení kvadratické rovnice Eq(y, a*x**2) pro x:
-sqrt(y/a)
sqrt(y/a)
Asi vím proč mi to píše ale netuším proč mi to nechce vyhodit výsledek.

 

 

3 odpovědi na otázku
Řazeno dle hodnocení

 

 

hodnocení

0x
avatar herd

Vypadá to, že se tim tam někde nevytvoří vazba pro proměnnou a=2."

Problém je, že zde se ztrácí uvozovky a proto nevidím kde jsi je použil. A já mám tušení, siže funkce Eq,solve a simplify umí jako argmument přijímat nejen "wrappované" výrazy, což , ale i textové řetězce. A samozřejmě pokud použiješ solve("y-a",x) tak si myslím, že a to bere jako nový symbol. Pokud tedy ti do funkce reseni_soustavy_rovnic(a) vstupuje parametr a s hodnoutou 42 a voláš funkci solve( x-a) tak tak žádná proměnná 42 do funkce a nevstupuje. Vstupuje do ni řetězec "x-a" , kde a je symbol jako každý jiný.

Je to základní programátorské faux pass., abych to uvedl na pravou míru

To ale s timhle nesouvisí: Na pochopení pak hodit se taky bude metoda subs (má dva způsoby zápisu jako subs({p1:4,p2:7}) nebo subs("p1,"2)

[j.subs({"c":25}) for j in solve("x*x-c","x")]

Zkus zjednodušovat: řešit funkci solve(a*x*x,x), tedy vynechat vazbu na y.

A poznámka: použil jsem zjednodušení zde, používám solve(y-x-5,y) místo solve(Eq(x-9,y),y) - neousiví s uvozovkami

Nebo ještě jinak, uvidíš, kde je rozdíl. porovnám posledních dvou řádků. Zkus pochopit, proč v jednom už proměnná a není a v jednom je.

from sympy import *
x, y, z, t = symbols("x y z t")
a=7
solve("a*y*z-95","z")
solve(a*y*z-95,"z")

bubakce
hodnocení

Zdravím, omlouvám se, že jsem neodepsal dříve. Přemýšlel jsem nad tou rovnicí a přišel jsem s něčím novým. Tentokrát už to funguje.

from math import sqrt

#Kvadratická rovnice

#y=ax^2

#Zadejte koeficienty a, y, x,

a, y, x = eval(input(Zadejte koeficienty kvadratické rovnice: ))

#Vypočítej diskriminant

disc = (y**2) - (4*a*x)

#Najděte kořeny rovnice.

if disc > 0:

root1 = (-y + sqrt(disc))/(2*a)

root2 = (-y - sqrt(disc))/(2*a)

print(Kořeny rovnice jsou: , root1, a, root2)

else:

print(Rovnice nemá řešení v oboru reálných čísel)

Samozřejmě vám moc děkuji za vaši radu a cením si ji jako zkušenost.

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]