Newton Method using Matlab Code

조회 수: 32 (최근 30일)
Rohit Sil
Rohit Sil 2019년 1월 30일
댓글: Oguz ODABAS 2020년 9월 14일
Hey guys so i attempted to program the newton iteration
f is the function, f_prime the derivative, x_0 is the start value, epsilon is the stop criteria
I tried this with newton(sin(i),cos(i),x_0,10.^(-6)) but got the error message:
Index exceeds matrix dimensions.
Error in newton (line 4)
while abs(f(nullstelle(i))<epsilon);
Matlab Code:
function [x] = newton(f,f_prime,x_0,epsilon)
x(1) = x_0;
i = 1;
while abs(f(x(i))<epsilon);
x(i+1) = x(i) - f(x(i))/f_prime(x(i))
i = i + 1;
end
2 Questions - firstly does the code make sense. Secondly if i want to run the function, does my command make sense?

채택된 답변

Matt J
Matt J 2019년 1월 30일
편집: Matt J 2019년 1월 30일
You need to pass function handles to the objective and its derivative,
newton(@sin,@cos,x_0,10.^(-6))
and the while loop continuation criterion should look like
while abs(f(x(i)) > epsilon
end
  댓글 수: 3
Rohit Sil
Rohit Sil 2019년 1월 31일
@Matt, one more question
if i want to enter a function like the one below.
f(x) = x.^5 − 14x.^4 + x.^2 − 3x + 5
how would that be done? also through function handles?
I tried it as it is and got a message saying that x is undefined...
Jan
Jan 2019년 1월 31일
@Rohit: Exactly, you need function handles again:
f = @(x) x.^5 - 14 * x.^4 + x.^2 - 3 * x + 5;
and equivalently for the derivative.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Oguz ODABAS
Oguz ODABAS 2020년 9월 14일
f = inline (x^4 + 2*x^3-23*x^2+12*x+36);
fd = inline (4*x^3 + 6*x^2 - 46*x + 12);
x = -10:0.01:10;
y = f(x);
x0 = -10;
while abs (f(x0))> 1.0e-6;
x1 = x0 - (f(x0)/fd(x0));
x0 = x1;
end
  댓글 수: 1
Oguz ODABAS
Oguz ODABAS 2020년 9월 14일
error: for x^y, only square matrix arguments are permitted and one argument must be scalar. Use .^ for elementwise p
ower.
error: called from
Octave13 at line 1 column 3

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Function Creation에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by