Problema con Fzero

di il
2 risposte

Problema con Fzero

Avrei un problema su come usare fzero. In pratica devo fare la sottrazione tra due funzioni al cui interno compare il parametro che devo trovare con fzero.
function T = risult_acc_prova (y, h, As, fyd);
  % definizione della risultante dell'acciaio
  
  epss = 3.5/1000*(h-y)/y;
  
  if epss >= 0 && epss <= fyd/210000;
    sigmas = E*epss;
  else fyd/210000 < epss && epss <= 0.9*7.5/1000;
    sigmas = fyd;
  endif
  
  T = As*sigmas;
  
 endfunction
function C = risult_cls_prova (fck, y, b, s);
  % determinazione della risultante di compressione del cls.
  % Ipotesi: cls teso non reagente, conservazione delle sezioni piane
  % s = numero di strisce in cui si divide la sezione
  
  dx = y/s;
  C = zeros(1,10);
  j = 1;
  
  if modello == 1;
    for i=1:s;
      x = dx*(2*i-1)/2;
      epsc = 3.5/1000* (y-x)/y; % prendo la fibra centrale della striscia dx
      
      if 0 <= epsc && epsc <= 0.002;
    sigmac = fcd*(1-(1-epsc/0.002)^2);
    else
    sigmac = fcd;
    
  endif
      
      C(j) = b*dx*sigmac;  
      j=j+1;    
    endfor
    C = sum(C);
endfunction
Quindi facendo
fun = @(y) risult_cls_prova (25, y, 100)-risult_acc_prova (y, 460, 800, 450/1.15);
y = fzero (@fun, 0, 100) 

dovrei ottenere un valore circa 70, solo che ottengo un errore " Invalid call to optimget".

Come posso risolvere?
Grazie

2 Risposte

  • Re: Problema con Fzero

    Usi MatLAb o Octave?

    Ci cono diversi thread in Internet che trattano questo tipo di errore; hai provato a cercare "Invalid call to optimget"?

    Dovresti pubblicare il messaggio di errore completo.
  • Re: Problema con Fzero

    Uso Octave e questo è quello che succede
      an = @(y) risult_cls_prova (25, y, 100)-risult_acc_prova (y, 460, 800, 450/1.15);
    >> y = fzero (@an, [0, 100])
    error: invalid function handle, unable to find function for @an
    error: called from fzero at line 178 column 6
    eppure sullo spazio di lavoro la funzione - @an - è presente.
Devi accedere o registrarti per scrivere nel forum
2 risposte