Problema con Fzero

di Light_Bringer98 il
2 risposte
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

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