How can I create expression or vector function handle, then plot it ?

4 vues (au cours des 30 derniers jours)
work wolf
work wolf le 8 Déc 2017
Commenté : work wolf le 12 Déc 2017
How can I create vector function handle (anonymous function) with product a scalar value, then plot result. Clearly, I want to plot this formula
Let f(x,ym)= (1-exp(x-ym)/h); and
iX(x)=1/6.f(x,ym(1))+
7/6.f(x,ym(2))+
25/6.f(x,ym(3))+
43/6.f(x,ym(4));
iY(x)=1/5.f(x,ym(1))+
2/5.f(x,ym(2))+
14/5.f(x,ym(3))+
4/5.f(x,ym(4));
This code without loop but give me: ''Error using plot Conversion to double from sym is not possible''.
clear all;clc;a=0;b=2;n=3;h=(b-a)/n;ym=a:h:b;
X=[ 1/6, 7/6, 25/6,43/6]; % Data
Y=[ 1/5, 2/5, 14/5,14/5];
f=@(x,ym) (1-exp(x-ym)/h);
% with syms
syms x;
iX=f(x,ym(1:length(ym))).*X; % result iX= [f.1/6 , f.7/6 , f.25/6 , f.43/6]
iY=f(x,ym(1:length(ym))).*Y;
iFx= sum(iX);iFy=sum(iY); % result iFx= f.1/6 + f.7/6 + f.25/6 + f.43/6
x=ym;
plot(x,iFx,'r+');hold on;plot(x,iFy,'og');
Moreover, I tired to use a alternate codes with loop condition but the error persists as conversion to logical from sym is not possible.
% clear all;clc
% a=0;b=2;n=3;h=(b-a)/n;ym=a:h:b;
% %
% X=[ 1/6, 7/6, 25/6,43/6]; % Data
% Y=[ 1/5, 2/5, 14/5,4/5];
% %
% f=@(x,ym) (1-exp(x-ym)/h);
% %
% syms x %double(subs(x))
% iX=cell(1,length(ym));iY=cell(1,length(ym)); % cell, iX{k} and iY{k}
% % iX=zeros(1,length(ym));iY=zeros(1,length(ym));
% for k=1:length(ym)
% % iX(k) = f(x,ym(k)).*X(k);
% % iY(k) = f(x,ym(k)).*Y(k);
% iX{k} = @(x,k) f(x,ym(k)).*X(k);
% iY{k} = @(x,k) f(x,ym(k)).*Y(k);
% iX(x,k);
% end
% whos
% x=ym;
% plot(x,iX{:},'r:');hold on;plot(x,iY{:},'b--');
please, how can i fix it?
  2 commentaires
Stephen23
Stephen23 le 11 Déc 2017
@work wolf: why do you need to use a symbolic variable?
work wolf
work wolf le 11 Déc 2017
Modifié(e) : work wolf le 11 Déc 2017
Hello, Stephen Cobeldick :). I don't need to use a symbolic variable! I want to create a function with product data as scalar elements (constant), then plot it as I mentioned above, either codes are some attempts. I hope it's more clear now. If you have any idea. please, do not hesitate to present it.

Connectez-vous pour commenter.

Réponses (1)

Walter Roberson
Walter Roberson le 11 Déc 2017
plot(x,subs(iFx))
  1 commentaire
work wolf
work wolf le 12 Déc 2017
@ Walter , Thanks .
subs() or matlabFunction(),
take too much time. In particular, at a long interval as ym=linspace(a,b,50000) or n large.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Mathematics dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by