Matlab problem: How to calculate a rough, approximate, derivative vector by using the following formula?

3 ビュー (過去 30 日間)
Here is the complete task which I need to solve:
We know that the derivative is the coefficient k of a tangent line with mathematical expression, y=kx + m, that goes through a certain point, P, on a function curve. Lets start with a simple function, namely, y=x^2.
(a) Calculate and Plot this function for -10 < x < 10 with small enough step length to get a smooth curve.
(b) Now, In (a) you calculated two equally long vectors, one for the chosen x values and one with the calculated y values. From these two vectors, we can calculate a rough, approximate, derivative vector that we can call Yprimenum: Use a for-loop to calculate each element of Yprimenum according to the formula:
Yprimenum(i) = (y(i+1) – y(i)) / ∆x Where ∆x is the x step length, or equivallently x(i) – x(i-1)
NOTE: (a) is solved and for the (b) I wrote the following code but not working.
if true
x=-10:10;
for i=1: length(x);
for y=x.^2
Yprimenum=(y(i+1)-y(i))./(x(i)-x(i-1));
end;
end;
display Yprimenum;
end
  3 件のコメント
John D'Errico
John D'Errico 2014 年 5 月 27 日
Why do you think it necessary to add the "if true" conditional around your code? Silly.
Jabir Al Fatah
Jabir Al Fatah 2014 年 5 月 30 日
ahh u should know that. if true was added automatically while pasting code here and i just forgot to modify that.

サインインしてコメントする。

採用された回答

George Papazafeiropoulos
George Papazafeiropoulos 2014 年 5 月 27 日
編集済み: George Papazafeiropoulos 2014 年 5 月 27 日
x=-10:10;
y=x.^2;
Yprimenum=diff(y)./diff(x)
  5 件のコメント
Jabir Al Fatah
Jabir Al Fatah 2014 年 5 月 30 日
But here this formula "Yprimenum(I-1)=(y(I)-y(I-1))/(x(I)-x(I-1))" doesn't follow mine. And also why it's (I-1) with Yprimenum? Moreover, I need to plot Yprimenum in the same figure as Y and Yprime. What is the ∆X value ? I am eagerly waiting for your update of your answer PLEASE! Thank you.
George Papazafeiropoulos
George Papazafeiropoulos 2014 年 5 月 31 日
編集済み: George Papazafeiropoulos 2014 年 5 月 31 日
Try this:
% 1st way: for loop
Yprimenum1=zeros(1,2*10);
x=-10:10;
y=x.^2;
for I=2:length(x)
Yprimenum1(I-1)=(y(I)-y(I-1))/(x(I)-x(I-1));
end
% 2nd way: diff
Yprimenum2=diff(y)./diff(x);
% test the results
all(Yprimenum1==Yprimenum2)
Be careful that the length of the approximate derivative is equal to the length of the initial vectors minus 1

サインインしてコメントする。

その他の回答 (0 件)

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by