is there a problem with my operators???

EDU>> refine(0, 7, .1) Undefined function 'f' for input arguments of type 'double'.
Error in refine (line 3)
if abs((f(x1)+f(x2))/2-f(xm))<tol
function points=refine(x1, x2, tol)
xm = (x1+x2)/2;
if abs((f(x1)+f(x2))/2-f(xm))<tol
points=[x1,x2];
else
left=refine(x1, xm, tol);
right=refine(xm, x2, tol);
points=[left, right(2:length(right))];
end
end
function linearinterp
x=linspace(-5, 2*pi, 30);
y=exp.^(-x./2).*sin(x^.2+8);
points=refine(0, 7, 0.1);
plot(x, y, points, f(points), 'r+');
hold on
plot(points, f(points));
hold off
end

Réponses (1)

Azzi Abdelmalek
Azzi Abdelmalek le 12 Fév 2014

0 votes

What is f in your function refine?

12 commentaires

Ehi Eromosele
Ehi Eromosele le 12 Fév 2014
the formula for Bisection. f is the y function.
Azzi Abdelmalek
Azzi Abdelmalek le 12 Fév 2014
And what is the y function?
Ehi Eromosele
Ehi Eromosele le 12 Fév 2014
the function i'm trying to interpolate and plot. on the interval 0 and 7 with tolerance 0.7
Ehi, look at the first three lines of your function refine
function points=refine(x1, x2, tol)
xm = (x1+x2)/2;
if abs((f(x1)+f(x2))/2-f(xm))<tol
In the third line f(x1) is used. How Matlab is supposed to know what f represent?
Ehi Eromosele
Ehi Eromosele le 12 Fév 2014
o so instead f input y(x1)+y(x2)/2-y(xm)<tol
Ehi Eromosele
Ehi Eromosele le 12 Fév 2014
instead of f
Azzi Abdelmalek
Azzi Abdelmalek le 12 Fév 2014
Modifié(e) : Azzi Abdelmalek le 12 Fév 2014
What is the difference? y is also unknown
Ehi Eromosele
Ehi Eromosele le 12 Fév 2014
I wanted the function refine to receives the points and uses it to decide when to subdivide intervals. Then y helps plot the function when the points are implemented.
I am not sure if you know how functions work. Look at this simple example:
function out=example(in1,in2,in3)
out=(in1+in2+in3)/3
Save this file as example.m
In Matlab windows command, you can call the function example by providing the values for in1, in2 and in3
m=Example(10,45,25)
Ehi Eromosele
Ehi Eromosele le 12 Fév 2014
Wait azzi what if I did like this.
Ehi Eromosele
Ehi Eromosele le 12 Fév 2014
Modifié(e) : Azzi Abdelmalek le 12 Fév 2014
function linearinterp
x=linspace(-5, 2*pi, 30);
y=exp.^(-x./2).*sin(x.^2+8);
points=refine(0, 7, 0.1);
plot(x, y, points, f(points), 'r+');
hold on
plot(points, f(points));
hold off
end
function points=refine(x1, x2, tol)
xm = (x1+x2)/2;
y=f(x);
if abs((f(x1)+f(x2))/2-f(xm))<tol
points=[x1,x2];
else
left=refine(x1, xm, tol);
right=refine(xm, x2, tol);
points=[left, right(2:length(right))];
end
end
Ehi Eromosele
Ehi Eromosele le 12 Fév 2014
i'll post it for better view...

Cette question est clôturée.

Tags

Clôturé :

le 20 Août 2021

Community Treasure Hunt

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

Start Hunting!

Translated by