Array indices must be positive integers or logical values Error
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
The question I am trying to answer is: Write a program to test the two finite difference approximations in section 1.6 (the forward and centered difference formulas). Test your program on the function arctan(x) at x=sqrt(2).Start with h = 1/2, and generate a sequence of approximations by reducing h by a factor of 2 each time, until h = 2−40. Observe how the error changes with h.
So far I have;
f(x)=atan(x);
x=sqrt(2) ;
h=1:.5:2^(-40);
%Forward Euler
F(x)=((f(x+h)-f(x))/h);
I keep getting the array indices must be positive integers or logical values error.
2 Kommentare
Adam
am 4 Sep. 2018
f(x)=atan(x);
What are you looking to do with this line? f will be an array here and x the index into it. You haven't defined x before this line though immediately afterwards you define it to sqrt(2) which clearly is not an integer to use as an index.
Are you expecting the above line to define a function? If so you would need it to be more like
f = @(x) atan( x );
Antworten (1)
Ashutosh Prasad
am 7 Sep. 2018
The error that you are getting is because of the way you are defining the h vector. Your definition creates an empty vector with no elements. But I understand you want h to be halved on each iteration, that's when loops come handy.
Try execution the following script
f = @(x) atan(x);
x = sqrt(2) ;
h = 0.5;
%Forward Euler
while(h >= 2^(-40))
F = ((f(x+h)-f(x))/h);
h = h/2;
end
Let me know if this helps
0 Kommentare
Siehe auch
Kategorien
Mehr zu Matrix Indexing 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!