Using the bisection method, why is f(a) not a real integer or logical?
Afficher commentaires plus anciens
I am trying to use the bisection method to optimize the cost of the pipeline, but I can't get a value for f(a)? What am I doing wrong with my while loop or if statement?
function [x] = myPipeBuilder(C_ocean, C_land, L, H)
%L=length of x, C_ocean=cost of pipeline in ocean, C_land=cost of pipeline on land, H=some distance in water
a=0;
b=L;
xM = (a + b)/2;
f(xM)= (C_ocean/sqrt(H^2+xM^2))-C_land;
% derivative of function
while abs(f(xM))>1*10^(-6)
% tolerance
if sign(f(a))==sign(f(xM))
a=xM;
elseif sign(f(b))==sign(f(xM))
b=xM;
end
xM = (a + b)/2;
end
x=xM;
end
Réponse acceptée
Plus de réponses (1)
Andrei Bobrov
le 20 Mar 2014
x = sqrt((C_ocean/C_land).^2-H^2);
1 commentaire
Christopher
le 20 Mar 2014
Catégories
En savoir plus sur Resizing and Reshaping Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!