[MatLab] "error: 'b' undefined..." ?
Ciao 
Ho un esercizio da svolgere con Matlab (io uso Octave che dovrebbe essere lo stesso per quello che mi serve.)
Ho definito una funzione (che non è importante esattamente sapere cosa fa...)
Nella "Command Window" faccio questo:
Perché quell'errore? [tt]b[/tt] è il nome di un parametro della funzione [tt]trapezi[/tt]...

Ho un esercizio da svolgere con Matlab (io uso Octave che dovrebbe essere lo stesso per quello che mi serve.)
Ho definito una funzione (che non è importante esattamente sapere cosa fa...)
function I = trapezi(f, a, b, n) H = (b-a)/n; S = 0; x = a; while x <= b S = S + (f(x) + f(x+H)); x = x+H; end I = S*H/2; end
Nella "Command Window" faccio questo:
>> f = @(x) x*exp(-x)*cos(2*x); >> met_quadr = @(met, n) met(f, 0, 2*pi, n); >> met_quadr(trapezi, 10); error: 'b' undefined near line 3 column 8 error: called from trapezi at line 3 column 5
Perché quell'errore? [tt]b[/tt] è il nome di un parametro della funzione [tt]trapezi[/tt]...
Risposte
Ecco la traduzione in Python:
Quindi penso proprio che
non fa quel che tu vuoi.
Anche a me viene lo stesso errore; può darsi che sia colpa di Octave, non so, mentre in Matlab il codice gira.
# hello.py from math import exp, pi, cos def trapezi(f, a, b, n): H, S, x = (b-a)/n, 0, a while x <= b: S, x = S+f(x)+f(x+H), x+H return S*H/2 f = lambda x : x*exp(-x)*cos(2*x) met_quadr = lambda met, n : met(f, 0, 2*pi, n)
$ python3 >>> from hello import * >>> met_quadr(trapezi, 10) -0.15287622420461677
Quindi penso proprio che
... >> met_quadr = @(met, n) met(f, 0, 2*pi, n); ...
non fa quel che tu vuoi.
"kaspar":
Ho un esercizio da svolgere con Matlab (io uso Octave che dovrebbe essere lo stesso per quello che mi serve.)
Anche a me viene lo stesso errore; può darsi che sia colpa di Octave, non so, mentre in Matlab il codice gira.

@OP l'esponenziale in MatLab, come in Python, si scrive
exp(x), non
e^
"feddy":
@OP l'esponenziale in MatLab, come in Python, si scriveexp(x), none^
Su GNU Octave quella notazione per l'esponenziale va bene. Evidentemente in MatLab no. Correggo.
"Indrjo Dedej":
[...] penso proprio che
... >> met_quadr = @(met, n) met(f, 0, 2*pi, n); ...
non fa quel che tu vuoi.
Capisco. Dovrò scrivere qualche riga in più, pazienza.
Grazie.
https://octave.org/doc/v4.2.1/Exponents ... ithms.html
Qui sembra che l'esponenziale sia uguale a matlab,python,ecc. Non ho Octave sul PC al momento, quindi non ho verificato.
Qui sembra che l'esponenziale sia uguale a matlab,python,ecc. Non ho Octave sul PC al momento, quindi non ho verificato.