How can I create expression or vector function handle, then plot it ?
Afficher commentaires plus anciens
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
le 11 Déc 2017
@work wolf: why do you need to use a symbolic variable?
Réponses (1)
Walter Roberson
le 11 Déc 2017
plot(x,subs(iFx))
Catégories
En savoir plus sur Mathematics dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!