Clear Filters
Clear Filters

Unable to convert expression containing symbolic variables into double array.

12 views (last 30 days)
I am following this algorithm (pic) and in Step 4, in the line "wij(i,2)=(1-lambda^2)*f(i*h)+(lambda^2/2)*(f((i+1)*h)+f((i-1)*h))+k*g(i*h);" I am getting the error "Unable to convert expression containing symbolic variables into double array. Apply 'subs' function first to substitute values for variables." I tried applying subs to f(i*h) and g(i*h), so it was wij(i,2)=(1-lambda^2)*(subs(f(x),x,(i*h)))+(lambda^2/2)*(subs(f(x),x,((i+1)*h)))+(subs(f(x),x,((i-1)*h)))+k*(subs(g(x),x,(i*h))); but I still get the same error. Please help
This is my whole program:
%Problem:
l=1; %endpoint
T=1; %maximum time
alpha = 2; %constant
m=10;
N=20;
syms f(x) g(x,t)
f(x)=sin(pi*x);
g(x)=(sin(pi*x))*(cos(2*pi*t));
%STEP1
h=l/m;
k=T/N;
lambda=k*alpha/h;
%STEP2
for j=2:N
wij(1,j)=0; %wij(0,j)
wij(m,j)=0;
end
%STEP3
wij(1,1)=f(0); %wij(0,0)
wij(m,1)=f(l);
%STEP4
for i=2:m-1
wij(i,1)=subs(f(x),x,(i*h)); %wij(i,0)
wij(i,2)=(1-lambda^2)*(subs(f(x),x,(i*h)))+(lambda^2/2)*(subs(f(x),x,((i+1)*h)))+(subs(f(x),x,((i-1)*h)))+k*(subs(g(x),x,(i*h)));
end
%STEP5
for j=2:N-1
for i=2:m-1
wij(i,j+1)=2*(1-lambda^2)*w(i,j)+lambda^2*(wij(i+1,j)+wij(i-1,j))-wij(i,j-1);
end
end
%STEP6
for j=1:N
t=j*k;
for i=1:m
x=i*h;
fprintf( '%.1f %.1f %.10f',x,t,wij(i,j))
end
end

Accepted Answer

Walter Roberson
Walter Roberson on 7 Feb 2021
%Problem:
l=1; %endpoint
T=1; %maximum time
alpha = 2; %constant
m=10;
N=20;
syms f(x) g(x,t)
f(x)=sin(pi*x);
g(x)=(sin(pi*x))*(cos(2*pi*t));
%STEP1
h=l/m;
k=T/N;
lambda=k*alpha/h;
%STEP2
wij = zeros(m,N,'sym');
for j=2:N
wij(1,j)=0; %wij(0,j)
wij(m,j)=0;
end
%STEP3
wij(1,1)=f(0); %wij(0,0)
wij(m,1)=f(l);
%STEP4
for i=2:m-1
wij(i,1)=subs(f(x),x,(i*h)); %wij(i,0)
wij(i,2)=(1-lambda^2)*(subs(f(x),x,(i*h)))+(lambda^2/2)*(subs(f(x),x,((i+1)*h)))+(subs(f(x),x,((i-1)*h)))+k*(subs(g(x),x,(i*h)));
end
%STEP5
for j=2:N-1
for i=2:m-1
wij(i,j+1)=2*(1-lambda^2)*wij(i,j)+lambda^2*(wij(i+1,j)+wij(i-1,j))-wij(i,j-1);
end
end
%STEP6
for j=1:N
t=j*k;
for i=1:m
x=i*h;
fprintf( '%.1f %.1f %s\n',x, t, char(vpa(wij(i,j),10)));
end
end
0.1 0.1 0.0 0.2 0.1 0.5877852523 0.3 0.1 0.8090169944 0.4 0.1 0.9510565163 0.5 0.1 1.0 0.6 0.1 0.9510565163 0.7 0.1 0.8090169944 0.8 0.1 0.5877852523 0.9 0.1 0.3090169944 1.0 0.1 0.0 0.1 0.1 0.0 0.2 0.1 0.02938926261*cos(6.283185307*t) + 0.7135254916 0.3 0.1 0.04045084972*cos(6.283185307*t) + 1.06331351 0.4 0.1 0.04755282581*cos(6.283185307*t) + 1.309016994 0.5 0.1 0.05*cos(6.283185307*t) + 1.426584774 0.6 0.1 0.04755282581*cos(6.283185307*t) + 1.404508497 0.7 0.1 0.04045084972*cos(6.283185307*t) + 1.244949142 0.8 0.1 0.02938926261*cos(6.283185307*t) + 0.9635254916 0.9 0.1 0.01545084972*cos(6.283185307*t) + 0.5877852523 1.0 0.1 0.0 0.1 0.2 0.0 0.2 0.2 0.04045084972*cos(6.283185307*t) + 0.4755282581 0.3 0.2 0.07694208843*cos(6.283185307*t) + 1.213525492 0.4 0.2 0.09045084972*cos(6.283185307*t) + 1.538841769 0.5 0.2 0.09510565163*cos(6.283185307*t) + 1.713525492 0.6 0.2 0.09045084972*cos(6.283185307*t) + 1.720477401 0.7 0.2 0.07694208843*cos(6.283185307*t) + 1.559016994 0.8 0.2 0.05590169944*cos(6.283185307*t) + 1.244949142 0.9 0.2 0.02938926261*cos(6.283185307*t) + 0.6545084972 1.0 0.2 0.0 0.1 0.2 0.0 0.2 0.2 0.04755282581*cos(6.283185307*t) + 0.5 0.3 0.2 0.09045084972*cos(6.283185307*t) + 0.9510565163 0.4 0.2 0.1244949142*cos(6.283185307*t) + 1.618033989 0.5 0.2 0.1309016994*cos(6.283185307*t) + 1.832734395 0.6 0.2 0.1244949142*cos(6.283185307*t) + 1.868033989 0.7 0.2 0.1059016994*cos(6.283185307*t) + 1.720477401 0.8 0.2 0.07694208843*cos(6.283185307*t) + 1.25 0.9 0.2 0.04045084972*cos(6.283185307*t) + 0.6571638901 1.0 0.2 0.0 0.1 0.2 0.0 0.2 0.2 0.05*cos(6.283185307*t) + 0.4755282581 0.3 0.2 0.09510565163*cos(6.283185307*t) + 0.9045084972 0.4 0.2 0.1309016994*cos(6.283185307*t) + 1.244949142 0.5 0.2 0.1538841769*cos(6.283185307*t) + 1.772542486 0.6 0.2 0.1463525492*cos(6.283185307*t) + 1.832734395 0.7 0.2 0.1244949142*cos(6.283185307*t) + 1.559016994 0.8 0.2 0.09045084972*cos(6.283185307*t) + 1.132692148 0.9 0.2 0.04755282581*cos(6.283185307*t) + 0.5954915028 1.0 0.2 0.0 0.1 0.3 0.0 0.2 0.3 0.04755282581*cos(6.283185307*t) + 0.4045084972 0.3 0.3 0.09045084972*cos(6.283185307*t) + 0.7694208843 0.4 0.3 0.1244949142*cos(6.283185307*t) + 1.059016994 0.5 0.3 0.1463525492*cos(6.283185307*t) + 1.244949142 0.6 0.3 0.1538841769*cos(6.283185307*t) + 1.463525492 0.7 0.3 0.1309016994*cos(6.283185307*t) + 1.244949142 0.8 0.3 0.09510565163*cos(6.283185307*t) + 0.9045084972 0.9 0.3 0.05*cos(6.283185307*t) + 0.4755282581 1.0 0.3 0.0 0.1 0.4 0.0 0.2 0.4 0.04045084972*cos(6.283185307*t) + 0.2938926261 0.3 0.4 0.07694208843*cos(6.283185307*t) + 0.5590169944 0.4 0.4 0.1059016994*cos(6.283185307*t) + 0.7694208843 0.5 0.4 0.1244949142*cos(6.283185307*t) + 0.75 0.6 0.4 0.1309016994*cos(6.283185307*t) + 0.6571638901 0.7 0.4 0.1244949142*cos(6.283185307*t) + 0.8090169944 0.8 0.4 0.09045084972*cos(6.283185307*t) + 0.5877852523 0.9 0.4 0.04755282581*cos(6.283185307*t) + 0.3090169944 1.0 0.4 0.0 0.1 0.4 0.0 0.2 0.4 0.02938926261*cos(6.283185307*t) + 0.1545084972 0.3 0.4 0.05590169944*cos(6.283185307*t) + 0.2938926261 0.4 0.4 0.07694208843*cos(6.283185307*t) + 0.25 0.5 0.4 0.09045084972*cos(6.283185307*t) + 0.181635632 0.6 0.4 0.09510565163*cos(6.283185307*t) + 0.09549150281 0.7 0.4 0.09045084972*cos(6.283185307*t) 0.8 0.4 0.07694208843*cos(6.283185307*t) + 0.2135254916 0.9 0.4 0.04045084972*cos(6.283185307*t) + 0.1122569941 1.0 0.4 0.0 0.1 0.5 0.0 0.2 0.5 0.01545084972*cos(6.283185307*t) 0.3 0.5 0.02938926261*cos(6.283185307*t) - 0.1545084972 0.4 0.5 0.04045084972*cos(6.283185307*t) - 0.2938926261 0.5 0.5 0.04755282581*cos(6.283185307*t) - 0.4045084972 0.6 0.5 0.05*cos(6.283185307*t) - 0.4755282581 0.7 0.5 0.04755282581*cos(6.283185307*t) - 0.5 0.8 0.5 0.04045084972*cos(6.283185307*t) - 0.4755282581 0.9 0.5 0.02938926261*cos(6.283185307*t) - 0.09549150281 1.0 0.5 0.0 0.1 0.5 0.0 0.2 0.5 -0.3090169944 0.3 0.5 -0.5877852523 0.4 0.5 -0.8090169944 0.5 0.5 -0.9510565163 0.6 0.5 -1.0 0.7 0.5 -0.9510565163 0.8 0.5 -0.8090169944 0.9 0.5 -0.5877852523 1.0 0.5 0.0 0.1 0.6 0.0 0.2 0.6 - 0.01545084972*cos(6.283185307*t) - 0.5877852523 0.3 0.6 - 0.02938926261*cos(6.283185307*t) - 0.9635254916 0.4 0.6 - 0.04045084972*cos(6.283185307*t) - 1.244949142 0.5 0.6 - 0.04755282581*cos(6.283185307*t) - 1.404508497 0.6 0.6 - 0.05*cos(6.283185307*t) - 1.426584774 0.7 0.6 - 0.04755282581*cos(6.283185307*t) - 1.309016994 0.8 0.6 - 0.04045084972*cos(6.283185307*t) - 1.06331351 0.9 0.6 - 0.02938926261*cos(6.283185307*t) - 0.7135254916 1.0 0.6 0.0 0.1 0.6 0.0 0.2 0.6 - 0.02938926261*cos(6.283185307*t) - 0.6545084972 0.3 0.6 - 0.05590169944*cos(6.283185307*t) - 1.244949142 0.4 0.6 - 0.07694208843*cos(6.283185307*t) - 1.559016994 0.5 0.6 - 0.09045084972*cos(6.283185307*t) - 1.720477401 0.6 0.6 - 0.09510565163*cos(6.283185307*t) - 1.713525492 0.7 0.6 - 0.09045084972*cos(6.283185307*t) - 1.538841769 0.8 0.6 - 0.07694208843*cos(6.283185307*t) - 1.213525492 0.9 0.6 - 0.04045084972*cos(6.283185307*t) - 0.4755282581 1.0 0.6 0.0 0.1 0.7 0.0 0.2 0.7 - 0.04045084972*cos(6.283185307*t) - 0.6571638901 0.3 0.7 - 0.07694208843*cos(6.283185307*t) - 1.25 0.4 0.7 - 0.1059016994*cos(6.283185307*t) - 1.720477401 0.5 0.7 - 0.1244949142*cos(6.283185307*t) - 1.868033989 0.6 0.7 - 0.1309016994*cos(6.283185307*t) - 1.832734395 0.7 0.7 - 0.1244949142*cos(6.283185307*t) - 1.618033989 0.8 0.7 - 0.09045084972*cos(6.283185307*t) - 0.9510565163 0.9 0.7 - 0.04755282581*cos(6.283185307*t) - 0.5 1.0 0.7 0.0 0.1 0.7 0.0 0.2 0.7 - 0.04755282581*cos(6.283185307*t) - 0.5954915028 0.3 0.7 - 0.09045084972*cos(6.283185307*t) - 1.132692148 0.4 0.7 - 0.1244949142*cos(6.283185307*t) - 1.559016994 0.5 0.7 - 0.1463525492*cos(6.283185307*t) - 1.832734395 0.6 0.7 - 0.1538841769*cos(6.283185307*t) - 1.772542486 0.7 0.7 - 0.1309016994*cos(6.283185307*t) - 1.244949142 0.8 0.7 - 0.09510565163*cos(6.283185307*t) - 0.9045084972 0.9 0.7 - 0.05*cos(6.283185307*t) - 0.4755282581 1.0 0.7 0.0 0.1 0.8 0.0 0.2 0.8 - 0.05*cos(6.283185307*t) - 0.4755282581 0.3 0.8 - 0.09510565163*cos(6.283185307*t) - 0.9045084972 0.4 0.8 - 0.1309016994*cos(6.283185307*t) - 1.244949142 0.5 0.8 - 0.1538841769*cos(6.283185307*t) - 1.463525492 0.6 0.8 - 0.1463525492*cos(6.283185307*t) - 1.244949142 0.7 0.8 - 0.1244949142*cos(6.283185307*t) - 1.059016994 0.8 0.8 - 0.09045084972*cos(6.283185307*t) - 0.7694208843 0.9 0.8 - 0.04755282581*cos(6.283185307*t) - 0.4045084972 1.0 0.8 0.0 0.1 0.8 0.0 0.2 0.8 - 0.04755282581*cos(6.283185307*t) - 0.3090169944 0.3 0.8 - 0.09045084972*cos(6.283185307*t) - 0.5877852523 0.4 0.8 - 0.1244949142*cos(6.283185307*t) - 0.8090169944 0.5 0.8 - 0.1309016994*cos(6.283185307*t) - 0.6571638901 0.6 0.8 - 0.1244949142*cos(6.283185307*t) - 0.75 0.7 0.8 - 0.1059016994*cos(6.283185307*t) - 0.7694208843 0.8 0.8 - 0.07694208843*cos(6.283185307*t) - 0.5590169944 0.9 0.8 - 0.04045084972*cos(6.283185307*t) - 0.2938926261 1.0 0.8 0.0 0.1 0.9 0.0 0.2 0.9 - 0.04045084972*cos(6.283185307*t) - 0.1122569941 0.3 0.9 - 0.07694208843*cos(6.283185307*t) - 0.2135254916 0.4 0.9 -0.09045084972*cos(6.283185307*t) 0.5 0.9 - 0.09510565163*cos(6.283185307*t) - 0.09549150281 0.6 0.9 - 0.09045084972*cos(6.283185307*t) - 0.181635632 0.7 0.9 - 0.07694208843*cos(6.283185307*t) - 0.25 0.8 0.9 - 0.05590169944*cos(6.283185307*t) - 0.2938926261 0.9 0.9 - 0.02938926261*cos(6.283185307*t) - 0.1545084972 1.0 0.9 0.0 0.1 0.9 0.0 0.2 0.9 0.09549150281 - 0.02938926261*cos(6.283185307*t) 0.3 0.9 0.4755282581 - 0.04045084972*cos(6.283185307*t) 0.4 0.9 0.5 - 0.04755282581*cos(6.283185307*t) 0.5 0.9 0.4755282581 - 0.05*cos(6.283185307*t) 0.6 0.9 0.4045084972 - 0.04755282581*cos(6.283185307*t) 0.7 0.9 0.2938926261 - 0.04045084972*cos(6.283185307*t) 0.8 0.9 0.1545084972 - 0.02938926261*cos(6.283185307*t) 0.9 0.9 -0.01545084972*cos(6.283185307*t) 1.0 0.9 0.0 0.1 1.0 0.0 0.2 1.0 0.5877852523 0.3 1.0 0.8090169944 0.4 1.0 0.9510565163 0.5 1.0 1.0 0.6 1.0 0.9510565163 0.7 1.0 0.8090169944 0.8 1.0 0.5877852523 0.9 1.0 0.3090169944 1.0 1.0 0.0 0.1 1.0 0.0 0.2 1.0 0.02938926261*cos(6.283185307*t) + 0.7135254916 0.3 1.0 0.04045084972*cos(6.283185307*t) + 1.06331351 0.4 1.0 0.04755282581*cos(6.283185307*t) + 1.309016994 0.5 1.0 0.05*cos(6.283185307*t) + 1.426584774 0.6 1.0 0.04755282581*cos(6.283185307*t) + 1.404508497 0.7 1.0 0.04045084972*cos(6.283185307*t) + 1.244949142 0.8 1.0 0.02938926261*cos(6.283185307*t) + 0.9635254916 0.9 1.0 0.01545084972*cos(6.283185307*t) + 0.5877852523 1.0 1.0 0.0
  2 Comments
LightFury Yeji
LightFury Yeji on 7 Feb 2021
Thank you so much for this! Is there any way I can only display the first eleven lines of the answer?
0.1 0.1 0.0
0.2 0.1 0.5877852523
0.3 0.1 0.8090169944
0.4 0.1 0.9510565163
0.5 0.1 1.0
0.6 0.1 0.9510565163
0.7 0.1 0.8090169944
0.8 0.1 0.5877852523
0.9 0.1 0.3090169944
1.0 0.1 0.0
Walter Roberson
Walter Roberson on 7 Feb 2021
%STEP6
stopping_loop = false;
for j=1:N
t=j*k;
for i=1:m
x=i*h;
if ~isempty(symvar(wij(i,j))
stopping_loop = true;
break;
end
fprintf( '%.1f %.1f %.10f\n',x, t, double(wij(i,j)));
end
if stopping_loop; break; end
end

Sign in to comment.

More Answers (1)

toka hakim
toka hakim on 21 May 2021
syms x;
f=cos(x)-x;
x1=0.5;
x2=pi/4;
for i=3:6
x(i)=x(i-1)-(f(x(i-1))*(x(i-1)-x(i-2)))/f(x(i-1)-f(x(i-2)));
vpa(x(i),10);
end

Categories

Find more on Symbolic Math Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!