y=(x.*exp(x)+0.3*x-0.5) ./(x-5);
y_prime=((x-5) .*(x.*exp(x)+exp(x)+0.3)-x.*exp(x)+0.3*x-0.5)) ./(x-5) .^2;
x_intial=-1;
epsilon=10^(-6);
newton(@(x)(x.*exp(x)+0.3*x-0.5) ./(x-5),@(x)((x-5).*exp(x)+exp(x)+0.3)-(x.*exp(x)+0.3*x-0.5)) ./(x-5).^2,-1,10(^6))
function [x]= newton(y,y_prime,x_initial,epsilon)
x(-1) =x_initial;
i = 1;
while abs(y(x(i))>epsilon)
x(i+1) = x(i) - y(x(i))/y_prime(x(i));
i = i+1;
end
fprintf('this answer is x=%.4f',x(i))
end

5 comentarios

Rik
Rik el 21 de Abr. de 2020
Why are you trying x(-1)=x_intitial? Your code looks like x could be a scalar instead.
edward desmond muyomba
edward desmond muyomba el 21 de Abr. de 2020
correct me then please
Tommy
Tommy el 21 de Abr. de 2020
In addition to the above comment...
This line:
y_prime=((x-5) .*(x.*exp(x)+exp(x)+0.3)-x.*exp(x)+0.3*x-0.5)) ./(x-5) .^2;
has a syntax error, one too many parentheses. Maybe you mean this instead?
y_prime=((x-5) .*(x.*exp(x)+exp(x)+0.3)-x.*exp(x)+0.3*x-0.5) ./(x-5) .^2;
This line:
newton(@(x)(x.*exp(x)+0.3*x-0.5) ./(x-5),@(x)((x-5).*exp(x)+exp(x)+0.3)-(x.*exp(x)+0.3*x-0.5)) ./(x-5).^2,-1,10(^6))
contains a few syntax errors. You are calling your function, newton, which takes four arguments, but it is a bit hard to tell what each of the four arguments should be. Maybe this is correct?
newton(@(x) (x.*exp(x)+0.3*x-0.5)./(x-5),... first arg
@(x) ((x-5).*exp(x)+exp(x)+0.3)-(x.*exp(x)+0.3*x-0.5)./(x-5).^2,... second arg
-1,... third arg
10^6) % fourth arg
This line:
abs(y(x(i))>epsilon)
MATLAB should be warning you that it is unexpected, because
y(x(i))>epsilon
will return a logical (1 or 0). Do you mean
abs(y(x(i)))>epsilon
instead?
edward desmond muyomba
edward desmond muyomba el 21 de Abr. de 2020
the code is not runing
Image Analyst
Image Analyst el 21 de Abr. de 2020
You need to click the green run triangle. That will run it. What else can I say given the incredibly detailed explanation you gave? ?‍♂️
Attach the entire script -- everything including the part where you define x - with the paper clip icon.

Iniciar sesión para comentar.

 Respuesta aceptada

Deepak Gupta
Deepak Gupta el 21 de Abr. de 2020
Editada: Rik el 21 de Abr. de 2020

0 votos

Hello Edward,
Looking at your code, seems like you are trying to solve an euqation using Newton's Mathod. I see many errors in your code. So i have written a new code to solve the equation, you are trying to solve. Have added comments along the lines for you to understand.
syms f(x) x; %Symbolic variables needs to be defined before using them
f(x) = (x*exp(x)+0.3*x-0.5)/(x-5); % Equation you want to solve
g = diff(f); %To find the derivative of function
epsilon=1e-6;%Max allowed deviation
x = zeros();
x(1)= -1 ;%In Matlab index starts from 1, so this is the initial value of x.
%No need to create another variable for it.
i =1;
while(abs(f(x(i)))>epsilon) %Loop should be stopped when tolerance is reached
y(i) = double(f(x(i))); %If you need function values too, otherwise, not needed
x(i+1) = x(i) - f(x(i))/g(x(i));% Calculating values for x iteratively
i = i+1;
end
Thanks,
Deepak

Más respuestas (0)

Categorías

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

Preguntada:

el 21 de Abr. de 2020

Editada:

Rik
el 21 de Abr. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by