Simple Question: gradient function Formula

1 Ansicht (letzte 30 Tage)
Santino M
Santino M am 2 Feb. 2015
Bearbeitet: Santino M am 3 Feb. 2015
in the following line, x is a 200 element column vector, h is a scalar eg.say 20 or 30
a = gradient(x,h)
can you please tell how 'a' is computed from x and h? Thanks in advance

Akzeptierte Antwort

Roger Stafford
Roger Stafford am 2 Feb. 2015
For 2 <= k <= 199, the computation is a central difference:
a(k) = (x(k+1)-x(k-1))/(2*h)
However, for the two endpoints it is:
a(1) = (x(2)-x(1))/h
a(200) = (x(200)-x(199))/h
In case h is a vector of the same length as x, then it becomes a divided difference:
a(k) = (x(k+1)-x(k-1))/(h(k+1)-h(k-1))
and
a(1) = (x(2)-x(1))/(h(2)-h(1))
a(200) = (x(200)-x(199))/(h(200)-h(199))
  1 Kommentar
Santino M
Santino M am 3 Feb. 2015
Bearbeitet: Santino M am 3 Feb. 2015
Thanks Star Strider I did try this by plotting. Thanks Roger for your reply. I did not understand the need of dividing by the scalar value h in a gradient. I initially assumed that the h denoted spacing between points eg. for h=20; grad(k) = (x(k-10) - x(k+10))/h. apparently it is not so.Can you please tell me how to use gradient to achieve the above. I want to set the interval for calculating the difference while calculating gradient. I can as well make a small function to do the same. If there is a way to get it done through an in built function it would be faster..especially if it is used a large no. of times (say > 10000000 times or more)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by