clc; clear all; L = 1.25; E = 50000; I = 30000; w0 = 2.5; syms x f(x) = (w0/(120*E*I*L))*(-x^5+2*(L^2)*(x^3)-(L^4)*x); df = diff(f,x); true = df(2); roots = solve(f==0, x); true_roots = double(roots); xl = 200; xu = 300; xr = (xl + xu) / 2; es = 0.001; xr_new(1) = xr; if f(xl) * f(xu) < 0 disp('The function changes sign within this bound') for i = 1:100 val(i) = f(xl) * f(xr_new(i)); if val(i) < 0 disp('The root lies in the lower interval') xu = xr_new(i); elseif val(i) > 0 disp('The root lies in the upper interval') xl = xr_new(i); else val = 0; fprintf('The approximate root of the function is %1.2f \n',xr_new(i)) break end xr_new(i+1) = (xl + xu) / 2; ea = abs((xr_new(i+1) - xr_new(i))./xr_new(i+1)); if ea < es break end end else disp('The function does not change sign within this bound') end The function does not change sign within this bound % Print the results ea = ea*100; Unrecognized function or variable 'ea'. fprintf('The absolute approximate error is: %1.5f \n',ea) n_iterations = i+1; fprintf('The total number of iterations are: %d \n',n_iterations) root = xr_new(1,end); fprintf('The approximate root of the function is: %1.5f \n', root) x1 = -1000 : 1000; y1 = f(x1); y = double(y1); xmin = -1000; xmax = 1000; ymin = -0.5; ymax = 0.5; plot(x1, y1) hold on plot(true_root,0,'mo','MarkerFaceColor','m') set(gca,'XAxisLocation','origin','YAxisLocation','origin','XMinorTick','on') xlabel('x \rightarrow') ylabel('\uparrow f(x)') title('Graphical root')
Prashant Kumar answered .
2025-11-20
clc; clearvars;
L = 1.25; E = 50000; I = 30000; w0 = 2.5;
syms f(x)
f(x) = (w0/(120*E*I*L))*(-x^5+2*(L^2)*(x^3)-(L^4)*x);
df = diff(f,x);
true = double(df(2));
roots = vpasolve(f==0, x);
true_roots =double(roots(:));
xl = 200;
xu = 300;
xr = (xl + xu) / 2;
es = 0.001;
xr_new(1) = xr;
if double(f(xl)) * double(f(xu)) >0
disp('The function changes sign within this bound')
for i = 1:100
val(i) = double(f(xl)) * double(f(xr_new(i)));
if val(i) < 0
disp('The root lies in the lower interval')
xu = xr_new(i);
elseif val(i) > 0
disp('The root lies in the upper interval')
xl = xr_new(i);
else val == 0;
fprintf('The approximate root of the function is %1.2f \n',xr_new(i))
break
end
xr_new(i+1) = (xl + xu) / 2;
ea = abs((xr_new(i+1) - xr_new(i))./xr_new(i+1));
if ea < es
break
end
end
else
disp('The function does not change sign within this bound')
end
The function changes sign within this bound The root lies in the upper interval The root lies in the upper interval The root lies in the upper interval The root lies in the upper interval The root lies in the upper interval The root lies in the upper interval The root lies in the upper interval The root lies in the upper interval
% Print the results
ea = ea*100;
fprintf('The absolute approximate error is: %1.5f \n',ea)
The absolute approximate error is: 0.06515
n_iterations = i+1;
fprintf('The total number of iterations are: %d \n',n_iterations)
The total number of iterations are: 9
root = xr_new(1,end);
fprintf('The approximate root of the function is: %1.5f \n', root)
The approximate root of the function is: 299.80469
x1 = -1000 : 1000;
y1 = double(f(x1));
xmin = -1000; xmax = 1000; ymin = -0.5; ymax = 0.5;
figure(1)
plot(x1, y1)
hold on
plot(true_roots,0,'mo','MarkerFaceColor','m')
set(gca,'XAxisLocation','origin','YAxisLocation','origin','XMinorTick','on')
xlabel('x \rightarrow')
ylabel('\uparrow f(x)')
title('Graphical root')
hold off

figure(2)
Fun = @(x) (w0/(120*E*I*L))*(-x.^5+2*(L^2)*(x.^3)-(L^4)*x);
fplot(Fun, [-1.5, 1.5], 'kx-')
hold on
plot(true_roots,0,'mo','MarkerFaceColor','m')
set(gca,'XAxisLocation','origin','YAxisLocation','origin','XMinorTick','on')
xlabel('x \rightarrow')
ylabel('\uparrow f(x)')
title('Graphical root')
