471 views (last 30 days)

Dear everyone,

I want to calculate an equation with letter and variable.

Now I can get the variable value presented with the letters I used

but I don't know how to change the letters as real numbers.

this is the example

%declear syms

syms x0 y0 x1 y1 x2 y2 a b p q d positive;

[x0 y0] = solve('(x-p)^2+(y-q)^2=d^2','(p-a)*(y-b)=(x-a)*(q-b)')

then I can get the result

but the problem is how to enter the real number value of letters like

a = 1;

b = 2;

p = 3;

q = 4;

d = 5;

then I can get the numerical value of x, y ???

Star Strider
on 4 May 2017

The substitution will occur automatically. The problem is that you must put ‘x’, ‘x0’ and ‘y0’ in the equations you want to solve for them.

This will do the substitutions:

syms x0 y0 x1 y1 x2 y2 a b p q d positive

a = 1;

b = 2;

p = 3;

q = 4;

d = 5;

Eq1 = (x-p)^2+(y-q)^2==d^2;

Eq2 = (p-a)*(y-b)==(x-a)*(q-b);

[x0 y0] = solve(Eq1, Eq2);

Star Strider
on 6 May 2017

As always, my pleasure!

It appears that you have resolved this, and you have a method to choose the ‘correct’ ‘(x0,y0)’.

Walter Roberson
on 7 May 2017

HONG CHENG comments on Star Strider's Answer:

kind and big god in MATLAB

Sign in to comment.

Karan Gill
on 9 May 2017

Edited: Stephen Cobeldick
on 17 Oct 2017

Use subs to substitute values, as shown below. You only get one solution because in the other solution, "x" is negative, which is not allowed due to the assumption that it is positive.

BUT if don't substitute values before solving, then you get two solutions because the second solution can be positive under certain conditions. "solve" also issues a warning stating that conditions apply to the solutions. If you use the "ReturnConditions" option, then you get these conditions. Applying these conditions will let you find correct values. See the doc: https://www.mathworks.com/help/symbolic/solve-an-algebraic-equation.html.

syms x y a b p q d positive

eqn1 = (x-p)^2+(y-q)^2 == d^2;

eqn2 = (p-a)*(y-b) == (x-a)*(q-b);

vars = [a b p q d];

vals = sym([1 2 3 4 5]);

eqn1 = subs(eqn1,vars,vals);

eqn2 = subs(eqn2,vars,vals);

[xSol ySol] = solve(eqn1, eqn2)

xSol =

(5*2^(1/2))/2 + 3

ySol =

(5*2^(1/2))/2 + 4

Lastly, do not redeclare symbolic variables as doubles because you are overwriting them. So don't do this.

syms a

a = 1

Just do

a = 1

Or use "subs" to substitute for "a" in an expression

f = a^2

subs(f,a,2)

Karan (Symbolic doc)

Karan Gill
on 9 May 2017

Glad to hear that! If my answer was helpful, could you accept it so that others can find the reason.

Sign in to comment.

Sign in to answer this question.

Opportunities for recent engineering grads.

Apply Today
## 1 Comment

## Direct link to this comment

https://uk.mathworks.com/matlabcentral/answers/338609-how-to-calculate-the-equation-with-letter-and-variable#comment_450950

⋮## Direct link to this comment

https://uk.mathworks.com/matlabcentral/answers/338609-how-to-calculate-the-equation-with-letter-and-variable#comment_450950

Sign in to comment.