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

답변 (1개)

Azzi Abdelmalek
Azzi Abdelmalek 2014년 2월 12일

0 개 추천

What is f in your function refine?

댓글 수: 12

Ehi Eromosele
Ehi Eromosele 2014년 2월 12일
the formula for Bisection. f is the y function.
Azzi Abdelmalek
Azzi Abdelmalek 2014년 2월 12일
And what is the y function?
Ehi Eromosele
Ehi Eromosele 2014년 2월 12일
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 2014년 2월 12일
o so instead f input y(x1)+y(x2)/2-y(xm)<tol
Ehi Eromosele
Ehi Eromosele 2014년 2월 12일
instead of f
Azzi Abdelmalek
Azzi Abdelmalek 2014년 2월 12일
편집: Azzi Abdelmalek 2014년 2월 12일
What is the difference? y is also unknown
Ehi Eromosele
Ehi Eromosele 2014년 2월 12일
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 2014년 2월 12일
Wait azzi what if I did like this.
Ehi Eromosele
Ehi Eromosele 2014년 2월 12일
편집: Azzi Abdelmalek 2014년 2월 12일
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 2014년 2월 12일
i'll post it for better view...

이 질문은 마감되었습니다.

태그

질문:

2014년 2월 12일

마감:

2021년 8월 20일

Community Treasure Hunt

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

Start Hunting!

Translated by