Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di jegger
    Registrato dal
    Mar 2005
    Messaggi
    74

    [MATLAB] eval e matrici

    Salve a tutti, ho un errore (penso banale) che mi esce quando provo ad eseguire questo programmino in matlab:

    function [zero,niter] = bisezione (a,b,fun,toll,num_iterazioni)

    x=[a, (a+b)*0.5, b];
    fx=eval(fun);

    niter=0;
    i= (b-a)*0.5;

    while i >= toll & niter <= num_iterazioni
    niter=niter+1;
    if sign(fx(1))*sign(fx(2)) < 0
    x(3) = x(2);
    x(2) = x(1)+(x(3)-x(1))*0.5;
    fx=eval(fun);
    i=(x(3)-x(1))*0.5;
    elseif sign(fx(2))*sign(fx(3)) < 0
    x(1) = x(2);
    x(2) = x(1)+(x(3)-x(1))*0.5;
    fx=eval(fun);
    i=(x(3)-x(1))*0.5;
    else
    x(2)=x(find(fx==0)); i=0; end
    end;
    zero=x(2);

    Il problema è nella parte in grassetto.
    Mi dice:

    ??? Error using ==> mrdivide
    Matrix dimensions must agree.

    Error in ==> bisezione at 4
    fx=eval(fun);

    qualcuno sa il motivo?
    ho fatto varie prove sostituendo la variabile fx con un array di 3 elementi come dovrebbe essere ma niente da fare.

  2. #2
    devi usare la funzione inserendo dei numeri per tutti i parametri tranne che per il terzo per il quale va inserito un valore da valutare (eval) tra virgolette

    [zero,niter] = bisezione(1,1,'fun',1,1)

    ho messo fun perchè credo sia una chiamata ad un'altra funzione

  3. #3
    Utente di HTML.it L'avatar di jegger
    Registrato dal
    Mar 2005
    Messaggi
    74
    Originariamente inviato da leonard_shelby
    devi usare la funzione inserendo dei numeri per tutti i parametri tranne che per il terzo per il quale va inserito un valore da valutare (eval) tra virgolette

    [zero,niter] = bisezione(1,1,'fun',1,1)

    ho messo fun perchè credo sia una chiamata ad un'altra funzione
    grazie, funziona.

    non capisco però perchè una cosa del tipo:

    [zero,niter] = bisezione(1,1,'1/x',1,1)

    non funzioni.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.