Forum » Programiranje » [Python] Hornerjev algoritem
[Python] Hornerjev algoritem
n3zn4n ::
Lep pozdrav,
za šolski projekt morem izdelati Hornerjev algoritem v Pythonu. Ker se mi niti ne sanja, kako bi to dosegel za n-to stopnjo polinoma, se obračam na vas: Kako naj izdelam ta algoritem ?
Lep pozdrav,
ikov34
za šolski projekt morem izdelati Hornerjev algoritem v Pythonu. Ker se mi niti ne sanja, kako bi to dosegel za n-to stopnjo polinoma, se obračam na vas: Kako naj izdelam ta algoritem ?
Lep pozdrav,
ikov34
krneki0001 ::
def horner(coeffs, x): return reduce(lambda acc, c: acc * x + c, reversed(coeffs), 0)
Pokličeš:
horner( (-19, 7, -4, 6), 3)
In ti mora vrniti 128.
https://hkn.eecs.berkeley.edu/~dyoo/pyt...
http://eli.thegreenplace.net/2010/03/30...
Asrock X99 Extreme 4 | Intel E5-2683V4 ES | 64GB DDR4 2400MHz ECC |
Samsung 250GB M.2 | Asus 1070 TI | 850W Antec | LC Tank Buster
Samsung 250GB M.2 | Asus 1070 TI | 850W Antec | LC Tank Buster
Zgodovina sprememb…
- spremenilo: krneki0001 ()
Roadkill ::
In potem ga profesor vpraša kako delujejo lambda metode, mulc ne zna in dobi šus, ker je nalogo od nekje prekopiral. :)
Ü
Yacked2 ::
Za kaj pa rabiš hornerjev algoritem ? Za računanje ostanka polinoma
p(x) = k(x) * q(x) + o(x) ? Se pravi poznaš p(x) ter q(x) ?
p(x) = k(x) * q(x) + o(x) ? Se pravi poznaš p(x) ter q(x) ?
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Yacked2 ::
Evo v javi, saj logika je ista. Najprej kot array vneseš polinom p, nato definiraš še x število s katerim deliš. Nato potrebuješ 2 arraya, rešlivo bi bilo tudi z enim, a si boš tako bolj predstavljal, ker je bolj podobno temu kar ste delali v zvesku. Prvi korak ti je verjetno jasen. Prvi koeficient polinoma prepišeš v koeficient. Nato se z for zanko sprehodiš po celem polinomu od 2 koeficienta (index 1). Ter najprej izračunaš prvo vrstico (x* rezultat prejšnega okenčka) to ponavljaš do konca. Nato imaš na zadnjem mestu polinoma k ostanek, pred njim pa je koeficient, ki ima eno stopnjo manjšo kot sam polinom. Spodnji program rešuje samo v realnem brez neznank.
int[] p = new int[] {2,-3,-4,5}; int x = 6; int[] plus = new int[p.length]; int[] k = new int[p.length]; plus[0] = 0; k[0] = p[0]; for (int i=1; i < p.length;i++) { plus[i] = x*k[i-1]; k[i] = p[i] + plus[i]; } for(int a: k) { System.out.println(a); }
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Matematika[polinomi]Oddelek: Šola | 2221 (2001) | lebdim |
» | [C#] Reševanje domačih nalogOddelek: Programiranje | 3273 (2777) | krastača |
⊘ | [C#]LengthOddelek: Programiranje | 765 (661) | Ziga Dolhar |
⊘ | [C#]polje znakovOddelek: Programiranje | 2371 (2199) | Ziga Dolhar |
» | polinomiOddelek: Šola | 2556 (2397) | Wox |