solve an equation using solve() produces an array instead of a unique value

d = 32*h + 200*(32*h - 8)*((4*h - 1)^2 - 1) - 16
I am trying to solve for h using "solve(d,h)" , however, I keep getting an array for of solutions!
[1/2
1/8 - (7*2^(1/2))/80
(7*2^(1/2))/80 + 1/8 ]
How could I obtain a unique value for h? The solution does not seem right. Is there a better function to be used ?
Thanks.

 Accepted Answer

The result is correct. There are three roots.
Plot it to see the result:
syms h
d = 32*h + 200*(32*h - 8)*((4*h - 1)^2 - 1) - 16;
ds = solve(d)
figure
fplot(d, [-0.1 0.6])
hold on
plot(ds, zeros(size(ds)), 'pg')
hold off
grid

6 Comments

Yup. There is a term containing h multiplied by a term containing h^2, so you have a cubic polynomial. That is going to have 3 roots.
Folllowing up on Walter’s comment, a note added in proof:
d = collect(d,h)
produces:
d =
102400*h^3 - 76800*h^2 + 12832*h - 16
The problem I am running to is the following:
I initially define x(1) = 4, y(1) = 2.
And the h has been expected to be a single digit.
How can I define x(1), y(1) to account for both sinular numbers and tree dimentional arrays?
I do not understand.
The ‘x’ and ‘y’ values do not appear anywhere in anything you have posted.
I did not post them initially. I was just explaining that 'h' is to be assigned to some x and y parameters that take singular values. Is there a way of writing x and y such that they can take both single digits and arrays size of h? like x(:,3) something like that. I am knew to matlab and I do not fully grasp array slicing and indexing yet. Thanks.
I will need more details.
It depends on how you want to define ‘h’ and what you want to do.

Sign in to comment.

More Answers (0)

Categories

Asked:

on 17 Nov 2019

Commented:

on 18 Nov 2019

Community Treasure Hunt

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

Start Hunting!