Filter löschen
Filter löschen

Help with a vector

3 Ansichten (letzte 30 Tage)
Lavorizia Vaughn
Lavorizia Vaughn am 30 Sep. 2021
Kommentiert: Lavorizia Vaughn am 30 Sep. 2021
Hello. I have come up with the following code:
function p = findmanyzeros(f, a, b, n, tol)
x = a + (b-a)*(0:n)/n;
fx = f(x);
p = [];
for i = 1:n
if sign(fx(i)) ~= sign(fx(i+1))
p(end+1) = findzero(f, x(i), x(i+1), tol);
end
end
My instructions were to Implement a MATLAB function findmanyzeros of the form function p=findmanyzeros(f, a, b, n, tol)
which finds zeros in the interval [a, b] using the following strategy:
1. Compute n+1 equidistant points xk, k=0,...,n, between a and b
2. For k = 1,...,n, if f(xk) and f(xk1) have different signs, compute a zero using findzero
3. The output vector p should contain all the computed zeros
  5 Kommentare
Lavorizia Vaughn
Lavorizia Vaughn am 30 Sep. 2021
>> f= @(x) cos(x)-x;
>> findzeros(f, 0, 1, 10, 10^-4)
Unrecognized function or variable 'fx'.
Error in findzeros (line 6)
if sign(fx(i)) ~= sign(fx(i+1))
>>
Lavorizia Vaughn
Lavorizia Vaughn am 30 Sep. 2021
Bearbeitet: Cris LaPierre am 30 Sep. 2021
f= @(x) cos(x)-x
f = function_handle with value:
@(x)cos(x)-x
findzeros(f, 0, 1, 10, 10^-4)
Unrecognized function or variable 'fx'.

Error in solution>findzeros (line 7)
if sign(fx(i)) ~= sign(fx(i+1))
function p = findzeros(f,a,b,n,tol)
x=a+(b-a)*(0:n)/n;
p=[];
for i = 1:n
if sign(fx(i)) ~= sign(fx(i+1))
p(end+1) = findzero(f, x(i), x(i+1), tol);
end
end
end

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Cris LaPierre
Cris LaPierre am 30 Sep. 2021
Bearbeitet: Cris LaPierre am 30 Sep. 2021
You have not defined a variable fx inside your findzeros function. Do you mean to use f?
You have created a recursive function but you have not defined an exit criteria. Since sign(f(i) always is the same as sign(f(i+1)), p is never assigned a value, and your result is an empty vector.
f= @(x) cos(x)-x;
f(1:10)
ans = 1×10
-0.4597 -2.4161 -3.9900 -4.6536 -4.7163 -5.0398 -6.2461 -8.1455 -9.9111 -10.8391
  1 Kommentar
Lavorizia Vaughn
Lavorizia Vaughn am 30 Sep. 2021
thank you ive figured it out.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Tags

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by