how to write a bisection loop?
1 view (last 30 days)
Show older comments
y = (-0.50598*10^-10)*x.^3 + (0.38292*10^-7)*x.^2 + (0.74363*10^-4)*x + 0.88318*10^-2
and I am trying to use bisection to find three point for this function, here is what I did.![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/534699/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/534699/image.png)
For bisection one: xl = -1000 and xu = -500, xm = (-1000+(-500))/2 = -750
If xl*xu < 0
Xu=xm
Xm=(xl+xu)/2
error = ((xm-xu)/xm)*100
end
If xl*xu >0
xl = xm
Xm=(xl+xu)/2
error = ((xm-xu)/xm)*100
end
If error < 5
end
this is what I plan to do in word I dont know how to make a funtion to start it.
7 Comments
Jan
on 1 Mar 2021
Please use the tools for formatting code. This improves the readability.
It is still not clear, what you want to achieve. "bisection between -1000 to -500, -500 to 0 and 1500 – 2000" does not explain this, because you can divide anything into anything. I guess, you want to find a minimum or zero value?
Your code contains an "Xm" adn "xm" with different uppercase X.
If you check for "if xl*xu<0" you need an "else" to handle the opposite case. Changing the value of xu and checking again "if xl*xu>0" is not suffcient.
The case that "xl*xu==0" is not considered.
Most likely I assume you want to create a function, which is evaluated at the points xl and xu. Comparing the x values is not meaningful. You can find many bisection codes in Matlab, if you ask an internet search engine.
Answers (1)
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!