Confusion on function handles
3 次查看(过去 30 天)
显示 更早的评论
Greetings,
I know this is a tricky subject for me to understand, but I want to see if I'm going about this right.
I have the following three functions:
f(x)= x^8 + 8*x^7 + 28*x^6 + 56*x^5 +70*x^4 - 56*x^3 + 28*x^2 - 8*x +1
g(x)=(((((((x-8)*x + 28) - 56)*x + 70) - 56)*x + 28)*x - 8)*x + 1
h(x)=(x-1)^8
that need to be evaluated at 101 equally spaced points in the interval [0.99,1.01] and plot the results on the magnified scale.
Now, can I use function handles with this, i.e. (as a start),
f =@(x) x^8 + 8*x^7 + 28*x^6 + 56*x^5 +70*x^4 - 56*x^3 + 28*x^2 - 8*x +1
g =@(x) (((((((x-8)*x + 28) - 56)*x + 70) - 56)*x + 28)*x - 8)*x + 1
h =@(x) (x-1)^8
n = 100;
a = 0.99;
b = 1.01;
t = a:(b-a)/n:b;
Or am I way off?
Thanks!
1 个评论
回答(2 个)
Shashank Prasanna
2013-9-26
编辑:Shashank Prasanna
2013-9-26
You need to precede your operations with a dot "." as described here:
http://www.mathworks.com/help/matlab/matlab_prog/array-vs-matrix-operations.html#btyv9yp-3 http://www.mathworks.com/help/matlab/ref/times.html
Then create your anonymous function handles.
Create linearly spaced points using LINSPACE:
x = linspace(0.99,1.01,100);
Call the function with x as input
2 个评论
Azzi Abdelmalek
2013-9-26
Jesse commented
Shashank,
Thanks for the response. Forgot about the dots! So, like this?
f =@(x) x.^8 + 8*x.^7 + 28*x.^6 + 56*x.^5 +70*x.^4 - 56*x.^3 + 28*x.^2 - 8*x +1 g =@(x) (((((((x-8)*x + 28) - 56)*x + 70) - 56)*x + 28)*x - 8)*x + 1 h =@(x) (x-1).^8
x = linspace(0.99,1.01,100);
Shouldn't the 100 be 101 for 101 equally spaced points?
So how is the call made in this fashion?
Thanks again!
Shashank Prasanna
2013-9-27
Jesse, here is an example, you can follow the same approach for any anonymous function handles that has been defined the proper way to do elementwise operations:
h =@(x) (x-1).^8;
x = linspace(0.99,1.01,100);
plot(x,h(x))
Azzi Abdelmalek
2013-9-26
for k=1:numel(t)
y(k)=f(t(k))+g(t(k))+h(t(k))
end
plot(t,y)
1 个评论
Azzi Abdelmalek
2013-9-26
Jesse commented
Azzi,
I take it I still need the dots to definte t(k)? How is t(k) defined? Thanks!
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Whos 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!