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

Find more on Mathematics in Help Center and File Exchange

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!