[MatLab] "error: 'b' undefined..." ?

Messaggioda kaspar » 25/05/2021, 10:02

Ciao :smt039

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...)

Codice:
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:

Codice:
>> 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? b è il nome di un parametro della funzione trapezi...
Ultima modifica di kaspar il 26/05/2021, 05:43, modificato 1 volta in totale.
kaspar
Junior Member
Junior Member
 
Messaggio: 175 di 495
Iscritto il: 17/11/2019, 09:58

Re: [MatLab] "error: 'b' undefined..." ?

Messaggioda Indrjo Dedej » 25/05/2021, 14:27

Ecco la traduzione in Python:

Codice:
# 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)


Codice:
$ python3
>>> from hello import *
>>> met_quadr(trapezi, 10)
-0.15287622420461677


Quindi penso proprio che

Codice:
...
>> met_quadr = @(met, n) met(f, 0, 2*pi, n);
...


non fa quel che tu vuoi.

kaspar ha scritto: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. :-k
Indrjo Dedej
Senior Member
Senior Member
 
Messaggio: 809 di 1653
Iscritto il: 31/05/2016, 19:58

Re: [MatLab] "error: 'b' undefined..." ?

Messaggioda feddy » 25/05/2021, 15:18

@OP l'esponenziale in MatLab, come in Python, si scrive
Codice:
exp(x)
, non
Codice:
e^
Avatar utente
feddy
Moderatore
Moderatore
 
Messaggio: 2841 di 5934
Iscritto il: 26/06/2016, 00:25
Località: SISSA

Re: [MatLab] "error: 'b' undefined..." ?

Messaggioda kaspar » 26/05/2021, 05:31

feddy ha scritto:@OP l'esponenziale in MatLab, come in Python, si scrive
Codice:
exp(x)
, non
Codice:
e^


Su GNU Octave quella notazione per l'esponenziale va bene. Evidentemente in MatLab no. Correggo.

Indrjo Dedej ha scritto:[...] penso proprio che

Codice:
...
>> 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.
kaspar
Junior Member
Junior Member
 
Messaggio: 176 di 495
Iscritto il: 17/11/2019, 09:58

Re: [MatLab] "error: 'b' undefined..." ?

Messaggioda feddy » 26/05/2021, 07:05

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.
Avatar utente
feddy
Moderatore
Moderatore
 
Messaggio: 2842 di 5934
Iscritto il: 26/06/2016, 00:25
Località: SISSA


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite