I am creating a program to solve for roots of functions using Newton's Method. I keep getting the error "Error using * Inner matrix dimensions must agree. Error in NewtonRoot2 (line 5) y = x + exp(-b*(x*x));" if true % code end clear clc x = -2 : 0.02 : 2; b = [1, 5, 10, 25, 50]; y = x + exp(-b*(x*x)); plot(x,y,x,zeros(size(x))); axis([-2, 2, -5, 5]) title('Plot of f(x) = x + exp(-b.*x.^2)') xlabel('X') ylabel('Y') f = 'x + exp(-b.*x.^2)'; fprime = '1 - 2*b*x*exp(-b.*x.^2)'; maxiterations = 20; iters = x; for k=1 : maxiterations, xnew = x - eval(f) ./ eval(fprime); iters = [iters; xnew]; test = abs(xnew - x) ./ (abs(xnew)+eps); if max(test) < 10*eps, break, end; x = xnew; end format long iters format if true % code end Any suggestions would be very useful. For a more clear explanation of what I am trying to accomplish: I have the function f. This function has variables x and b as components. I want to make five different graphs on the same plot using different values for b, as shown in the vector 1,5,10,25,50. Once those graphs have been plotted with different b values, I will find roots of each one to compare the effect on the root by changes in b. Hopefully this is clear enough.
John Williams answered .
2025-11-20
To plot the function you can use the following code. Note that a * between vectors denotes matrix multiplication; use .* for point-wise multiplication.
hold on for i = 1:numel(b) plot(x, x + exp(-b(i)*(x.*x))); end hold off