MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Jon on 20 Feb 2013

Hi, I'm trying to write a series summation code and I'm getting the "conversion to double" error when I plot.

Here's the part of the code with trouble:

syms m rhs = (1./(1+(2.*(t- m.*p))./tc)).* exp((-2.*r^2)./(r^2.*(1+ (2.*(t-m.*p)./tc)))); summation1 = symsum(rhs,0,1.89E5);

Where tc, r, and p are constants and t is a timespace with 36 spaces.

Is the problem that I'm asking it to sum from 0 to 1.89e5 with those 36 time spaces?

Thanks

EDIT: http://i.imgur.com/mz2KV5h.jpg Link is of the sum

*No products are associated with this question.*

Answer by bym on 21 Feb 2013

Accepted answer

At some point, Matlab gives up & returns the indefinite summation. You can try this:

clc;clear

syms m tc = 3; p = 3; t = 1:10; r =2;

rhs = (1./(1+(2.*(t- m.*p))./tc)).* exp((-2.*r^2)./(r^2.*(1+ (2.*(t-m.*p)./tc)))); summation1 = symsum(rhs); f = matlabFunction(summation1); f(189000) f(10)

ans =

1.0e-005 *

Columns 1 through 8

-0.2646 -0.2646 -0.2646 -0.2646 -0.2646 -0.2646 -0.2646 -0.2646

Columns 9 through 10

-0.2646 -0.2646

ans =

Columns 1 through 8

-0.0608 -0.0634 -0.0662 -0.0692 -0.0725 -0.0762 -0.0802 -0.0847

Columns 9 through 10

-0.0897 -0.0954

Answer by Walter Roberson on 20 Feb 2013

You could try

double(summation1)

If that gives you the same error then your summation1 must still contain some symbolic variable. Try

symvar(summation1)

Jon on 20 Feb 2013

I get the same error when using both

Conversion to double from sym is not possible.

I had read about converting that symbolic variable and figured that could be the issue but I used the

subs(summation1, 'new array to replace "m" ' )

and that seemed to accept it, now it's about fixing my values

EDIT: False alarm - it just makes the variable a single value.

## 0 Comments