Nejste přihlášen/a.
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.
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")
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.
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.