Newton Raphson equation trig functions

Trying to calculate root to an equation using newton raphson. also need to tabulate the results. the table isn't showing any info though.
clc
clear all
syms x
T = []; % Define table
x0 = .1; % Define Initial Value
i = 1; % Define Counter
N = 10; % Define max number of iterations
% Define Variables
S = 5281.716;
L = 5280;
f(x) = x - (S/L) * sin(x); % Define Function
df = diff(f); % Differential Function
while i <= N
x = x0 - (f(x0)/df(x0)); % Newton-Raphson Equation
if abs(x-x0) <= 10^-8
return
end
R = S/(2*x0); % Radius
d = R*(1-cos(x0)); % Distance d
T = [T; i x0 R d];
i = i + 1; % Increase Counter
x0 = x; % Update value of x0
vpa(x0) % Decimal
end
T = table(Iteration, Theta, Radius, d);

5 comentarios

John D'Errico
John D'Errico el 31 de Ag. de 2018
Homework? If not, then USE FZERO!
Derek Reitnouer
Derek Reitnouer el 31 de Ag. de 2018
have to use newton raphson method. problem is haven't used matlab in years.
John D'Errico
John D'Errico el 31 de Ag. de 2018
You still have not answered my question. Is this homework? That is the only possible reason why you NEED to use Newton/Raphson, so the conclusion seems clear.
Derek Reitnouer
Derek Reitnouer el 2 de Sept. de 2018
yes its a homework problem. I get the correct answer but can't figure out how to do the table and keep the answer to decimals.
Muhammad Qasim
Muhammad Qasim el 5 de Jul. de 2021
cos(x)+2sin(x)+x^2

Iniciar sesión para comentar.

 Respuesta aceptada

James Tursa
James Tursa el 31 de Ag. de 2018
Instead of doing all of this as symbolic, it would probably have been simpler to use function handles and work in double. That being said, maybe just convert your stuff to double as you accumulate it:
T = [T; double([i x0 R d])];
Then you can use T to plot stuff directly.
Also, it would make more programming sense to change that "return" statement to a "break" statement.

1 comentario

Derek Reitnouer
Derek Reitnouer el 3 de Sept. de 2018
I looked up the difference between return and break, thanks for the tip. I also looked at double and that makes sense. I want to name the columns on the table but it doesn't like this. Why?
clc clear all syms f(x)
T = []; % Define table x0 = .1; % Define Initial Value i = 1; % Define Counter N = 10; % Define max number of iterations
% Define Variables S = 5281.716; L = 5280;
f(x) = x - (S/L) * sin(x); % Define Function df = diff(f); % Differential Function
while i <= N x = x0 - (f(x0)/df(x0)); % Newton-Raphson Equation if abs(x-x0) <= 10^-8 break end R = vpa(S/(2*x)); % Radius d = vpa(R*(1-cos(x))) % Distance d T = [T; double([i x R d])] i = i + 1; % Increase Counter x0 = x; % Update value of x0 vpa(x0) % Decimal end T = table(Iteration, Theta, Radius, d);

Iniciar sesión para comentar.

Más respuestas (1)

Derek Reitnouer
Derek Reitnouer el 3 de Sept. de 2018

0 votos

T.Properties.VariableUnits = {'Iteration' 'Theta' 'Radius' 'd'}; T
That doesn't work either.

Categorías

Más información sobre Symbolic Math Toolbox en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 31 de Ag. de 2018

Comentada:

el 5 de Jul. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by