フィルターのクリア

Bisection method code matlab

4 ビュー (過去 30 日間)
Maria Galle
Maria Galle 2020 年 10 月 11 日
回答済み: Steven Lord 2020 年 10 月 12 日
I'm trying to write a code using the bisection method to find the root but I'm not sure I wrote it correctly.
t=4;
c_d=0.25; %kg/m
g=9.81;
v=36;
maxit=15;
k = 1;
n_bi(k) = 1; % iteration
x_l_bi(k) = 50; % initial guess lower bound
x_u_bi(k) = 200; % initial guess upper bound
f_xl_bi(k) = sqrt(g*x_l_bi(k)/c_d).*tan(tan(sqrt(g*c_d./x_l_bi(k))*t)) - v;
f_xu_bi(k) = sqrt(g*x_u_bi(k)/c_d).*tan(tan(sqrt(g*c_d./x_u_bi(k))*t))- v;
x_r_bi(k) = (x_l_bi(k) + x_u_bi(k))/2;
product_f_bi(k) = f_xl_bi(k)*x_r_bi(k);
ea_bi(k) = 1*100; % initial error setting in %
while ea_bi(k) > 0.005 & n_bi < maxit
if product_f_bi(k) < 0
x_l_bi(k+1) = x_r_bi(k);
x_u_bi(k+1) = x_u_bi(k);
else
x_l_bi(k+1) = x_l_bi(k);
x_u_bi(k+1) = x_r_bi(k);
end
n_bi(k+1) = k+1;
f_xl_bi(k+1) = sqrt(g*x_l_bi(k+1)/c_d).*tan(tan(sqrt(g*c_d./x_l_bi(k+1))*t))- v;
f_xu_bi(k+1) = sqrt(g*x_u_bi(k+1)/c_d).*tan(tan(sqrt(g*c_d./x_u_bi(k+1))*t))- v;
x_r_bi(k+1) = (x_l_bi(k+1) + x_u_bi(k+1))/2;
product_f_bi(k+1) = f_xl_bi(k+1)*x_r_bi(k+1);
ea_bi(k+1) = abs((x_r_bi(k+1) - x_r_bi(k))/x_r_bi(k+1))*100;
k = k+1;
end
result_bi = [n_bi; x_l_bi; x_u_bi; x_r_bi; ea_bi];
disp([' ']);
disp(['Bisection Method:']);
fprintf('%10s %12s %12s %12s %10s\r\n','iteration','x_l', 'x_u', 'x_r', 'ea');
fprintf('%10.0f %12.4f %12.4f %12.4f %10.2f\n', result_bi);

回答 (1 件)

Steven Lord
Steven Lord 2020 年 10 月 12 日
Rather than hard-coding the function you want to solve, you might want to create a function handle to the function and use that function handle to evaluate the function. That way you could specify a function from an example in your textbook (I'm assuming this is a homework assignment) and compare the results of your code with the textbook.
n = 3;
f = @(x) x.^n;
% This returns the cubes of the numbers 0 through 4
y = f(0:4)
f = @(x) 2*x+3;
% Now this is two times the numbers 0 through 4 plus 3.
% Same exact evaluation code, different function
y = f(0:4)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by