# Error using sym>convertChar (line 1537) when solving an ODE using laplace transform. How to fix the problem?

24 views (last 30 days)

Show older comments

%%CODE

%% Solving 2nd order ODE using laplace transform

clc, clear , close all

syms x t s X F

F = laplace('diff(x(t),t,t)+7*diff(x(t),t)+10*x(t)= 20',s); % solving using laplace transform

F = subs(F,{'x(0)','D(x)(0)'},{5,3}); % initial values

F = subs(F,{'laplace(x(t),t,s)'},{X}); % substituting the initial values then solve Laplace

X = solve(F,'X');

X = ilaplace(X);

X = simplify(X); pretty(X);

disp(X)

%% ERROR BELOW

Error using sym>convertChar (line 1537)

Character vectors and strings in the first argument can only

specify a variable or number. To evaluate character vectors and

strings representing symbolic expressions, use 'str2sym'.

Error in sym>tomupad (line 1253)

S = convertChar(x);

Error in sym (line 220)

S.s = tomupad(x);

Error in transform (line 22)

if ~isa(f, 'sym'), f = sym(f); end

Error in sym/laplace (line 28)

L = transform('symobj::laplace', 't', 's', 'z', F, varargin{:});

Error in HW_1_3_2_4070H300 (line 4)

F = laplace('diff(x(t),t,t)+7*diff(x(t),t)+10*x(t)= 20',s); %

solving using laplace transform

##### 2 Comments

Walter Roberson
on 15 May 2021

### Accepted Answer

Star Strider
on 15 May 2021

Eliminate the single quotes, use double equal signs in the symbolic expression, express ‘x’ as ‘x(t)’ in the syms declaration (otherwise, ‘x’ is assumed to be a constant), and it works —

syms x(t) t s X F

Dx = diff(x);

D2x = diff(Dx);

F = laplace(D2x+7*Dx+10*x(t) == 20,s); % solving using laplace transform

F = subs(F,{x(0),Dx(0)},{5,3}); % initial values

F = subs(F,{laplace(x(t),t,s)},{X}); % substituting the initial values then solve Laplace

X = solve(F,X);

X = ilaplace(X);

X = simplify(X); pretty(X);

disp(X)

Character arrays have not been allowed for the last few releases. (The one exception that remains is in the sym funciton.)

### More Answers (1)

Walter Roberson
on 15 May 2021

Edited: Walter Roberson
on 15 May 2021

%%CODE

%% Solving 2nd order ODE using laplace transform

syms x(t) s X F

Dx = diff(x,t);

D2x = diff(Dx,t);

eqn = D2x + 7*Dx + 10*x(t) == 20

F = laplace(eqn,s) % solving using laplace transform

F = subs(F,{x(0), Dx(0)},{5,3}) % initial values

F = subs(F, {laplace(x(t),t,s)},{X}) % substituting the initial values then solve Laplace

X = solve(F, X)

X = ilaplace(X)

### See Also

### Community Treasure Hunt

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

Start Hunting!