• Register

AttributeError: 'float' object has no attribute 'shape'

+6 votes
134 views
Za 6. vprašanje:

Za primerjavo naredite še aproksimacijo s polinomom nn-te stopnje. Uporabite funkcijo np.polyfit in določite aproksimiran polinom na intervalu od t0t0 do t1t1 (t∈[t0,t1)t∈[t0,t1)) s korakom dtdt.

Naloge sem se lotil na dolg način ( naj povem da sta parametra t in odgovor3 sprejeta kot pravilno):

koef = np.polyfit(t, odgovor3, deg = n)

import sympy as sym
sym.init_printing()
x = sym.symbols('x')
poli = 0
for i in range(0, len(koef)):
            poli += koef[i] * x**(n - i)

t_1 = np.asarray([])
t_1 = np.asarray([poli.subs(x, i) for i in t])
plt.plot(t, odgovor3, 'ro')
plt.plot(t, t_1, 'k')
odgovor6 = t_1

 

Ko oddam odgovor mi napiše error:

AttributeError: 'float' object has no attribute 'shape', čeprav ko napišem kodo: t_1.shape mi ga normalno izpiše.
asked Apr 14 by MihaHr (550 points)
edited Apr 16 by janko.slavic

1 Answer

+1 vote
 
Best answer

Rešitev, ki ste jo oddali na moj.ladisk.si, je seznam in ne numpy numerično polje.

V splošnem je uporaba sympy pri reševanju domačih nalog slaba ideja. Modul sympy je sicer zelo uporaben za strojno izvajanje izpeljav in podobnih postopkov, ki jih nočemo delati ročno, pri reševanju nalog z numeričnimi metodami pa ga ne potrebujete in je njegova uporaba celo odsvetovana, tudi zaradi primerov kot je vaš.

Če bi vrednosti aproksimacijskega polinoma namesto na dolg način določili tako, kot to predlaga dokumentacija funkcije numpy.polyfit in kot smo to počeli na vajah, bi verjetno imeli manj težav pri oddaji domače naloge.

answered Apr 14 by dgorjup (38,400 points)
selected Apr 15 by janko.slavic
Kot sem že povedal odgovora mi sploh ni sprejelo, zato sem sprobal oddati normalen seznam. Tega mi je sprejelo zato pa je tudi zapisan kot oddan. Zato sem tudi dodal kodo, saj se pričakovan odgovor ujema z mojim.
LP
...