Forumzone Community

Sistemi Operativi e applicazioni => Microsoft Windows e applicazioni => Programmazione => Discussione aperta da: topginger il 23 Agosto 2007, 19:27:05

Titolo: Mi salvi chi può
Inserito da: topginger il 23 Agosto 2007, 19:27:05
Salve a tutti. Ho un problema devo fare questo programma ma non ho proprio idea di dove mettere le mani. Qualcuno può aiutarmi?
Grazie

Scrivere un programma c che acquisisce i coefficienti di un polimonio e calcola il valore del polinomio in un punto stabilito dall'utente effettuando un numero di addizioni e di moltiplicazioni che è lineare(complessità) rispetto al grado del polinomio.
Titolo: Mi salvi chi può
Inserito da: benna il 24 Agosto 2007, 10:12:46
A me sembra piuttosto semplice... magari ho frainteso il testo, comunque:
un polinomio generico di secondo grado è y=(a+x)(b+x)
Ipotizziamo di doverlo calcolare in un punto C, allora diventerà y=(a+C)(b+C)
A questo punto per calcolare y basterà eseguire 2 somme ed una moltiplicazione

Titolo: Mi salvi chi può
Inserito da: topginger il 24 Agosto 2007, 14:22:08
Grazie x l'aiuto solo che potrebbe essere un polinomio anche di grado (definito dall'utente) superiore al secondo. Credo che come input la prima cosa che il programma debba chiedere è il grado, poi il valore di x e i vari coefficienti a seconda del grado immesso. Il tutto facendo in modo che la complessità asintotica rientri nelle modalità specificate(numero di addizioni e moltiplicazioni lineare)
Credo ad esempio grado 3:
coefficienti 5,4,3,2

5 X^3 + 4 X^2 + 3 X + 2 = 5*(X*X*X)+ 4*(X*X) + 3*X + 2

Ma...?! :(
Titolo: Mi salvi chi può
Inserito da: benna il 24 Agosto 2007, 19:54:45
conoscendo il grado del polinomio puoi prima calcolare X, X^2, ...X^n con un algoritmo ricorsivo x^n=x*x^n-1 che esegue n iterazioni, poi moltiplichi ogni valore per il suo coefficiente, con n moltipicazioni, e sommi tutto eseguendo n+1 somme;
alla fine eseguirai 2n moltiplicazioni e n+1 somme

Titolo: Mi salvi chi può
Inserito da: topginger il 29 Agosto 2007, 11:11:59
Grazie ancora x l'aiuto. Ma i risultati delle iterazioni x x^2,..,x^n-1 ... dici di memorizzarli in un array di appoggio?
Titolo: Mi salvi chi può
Inserito da: topginger il 29 Agosto 2007, 12:47:22
se uso array aumento la complessità però!
Titolo: Mi salvi chi può
Inserito da: benna il 29 Agosto 2007, 21:20:55
no, ti basterà tenere 2 variabili: x (con il valore inserito dall'utente) e x^n-1 (che inizializzerai a 1)
ad ogni ripetizione moltiplichi la seconda variabile per x ed ottieni il valore x^n che ti serve
Esempio:
a contiene X, b contiene 1

tot=2*b;
b=b*a;
tot=tot+3*b;
b=b*a;
ecc...