Serie in Matlab
Salve!!!
Un esercizio mi chiede: letto un valore x e uno n da tastiera, se ne calcoli il seno utilizzando la serie
$x-x^3/3!+x^5/5!+...$
rendendo il programma iterattivo in modo che l'esecuzione continui nel caso si voglia assegnare a n un nuovo valore.
Io avrei fatto in questo modo:
x=input('Dai x:\n');
n=input('Dai n:\n');
while scelta==1
{ senx=x;
segno=-1;
for i=3:2:n
sin=sum(sinx+segno*(x^i)/i!);
segno=-segno;
end;
}
scelta=input('Vuoi continuare? si=0;no=1);
end;
il punto è che (x^i)/i! dovrei esprimerlo in altro modo, ma non saprei come..
Un esercizio mi chiede: letto un valore x e uno n da tastiera, se ne calcoli il seno utilizzando la serie
$x-x^3/3!+x^5/5!+...$
rendendo il programma iterattivo in modo che l'esecuzione continui nel caso si voglia assegnare a n un nuovo valore.
Io avrei fatto in questo modo:
x=input('Dai x:\n');
n=input('Dai n:\n');
while scelta==1
{ senx=x;
segno=-1;
for i=3:2:n
sin=sum(sinx+segno*(x^i)/i!);
segno=-segno;
end;
}
scelta=input('Vuoi continuare? si=0;no=1);
end;
il punto è che (x^i)/i! dovrei esprimerlo in altro modo, ma non saprei come..
Risposte
Un primo grosso problema del tuo codice è che il tuo ciclo non dipende da \(n\) e che scelta non sembra essere inizializzato. Io credo dovresti avere due cicli. In quello interno calcoli la serie fino ad un certo \(n\) mentre nel ciclo esterno si chiede se si vuole assegnare ad n un nuovo valore. Per cui qualcosa come:
Il ciclo interno potrà invece essere implementato semplicemente attraverso un ciclo for.
x = input('x = '); while true n = input('n = '); % codice per calcolare la serie fino ad n doagain = input('Vuoi provare con un nuovo valore di n? Y/n [Y]: ', 's'); if (doagain == 'n') break; end; end;
Il ciclo interno potrà invece essere implementato semplicemente attraverso un ciclo for.
^^ grazie per la risposta, ho risolto usando un modo un po' differente
