как преобразовать этот ответ решения в числовой в MATLAB

я решаю символьное уравнение:

>> A=sym('[34618-150*w^2,-16502,0,0,0;-16502,31144-150*w^2,-14642,0,0;0,-14642,27018-150*w^2,-12376,0;0,0,-12376,22447-150*w^2,-10071;0,0,0,-10071,10071-150*w^2]')

A =

[ 34618-150*w^2,        -16502,             0,             0,             0]
[        -16502, 31144-150*w^2,        -14642,             0,             0]
[             0,        -14642, 27018-150*w^2,        -12376,             0]
[             0,             0,        -12376, 22447-150*w^2,        -10071]
[             0,             0,             0,        -10071, 10071-150*w^2]

>> solve(det(A),'w')

ans =

solvelib::Union({[-z1^(1/2), 1], [z1^(1/2), 1]}, z1, RootOf(X19^5 - (20883*X19^4)/25 + (17855633*X19^3)/75 - (11413518430603*X19^2)/421875 + (33558897596166236*X19)/31640625 - 631449249611223316/87890625, X19))

как я могу преобразовать этот символический ответ в числовой?

я использую «двойной», но ответ неверен?

Я использую vpa, но при подстановке в определитель нельзя обнулить!!!

пожалуйста помогите!!

Благодарность


person KAZEM MANZOOR    schedule 17.05.2013    source источник
comment
для преобразования символического в числовое используется inline, например, если x является символьным, вы можете преобразовать его в числовое, сказав: x=inline(x), в вашем случае, я думаю, вам нужно будет преобразовать z1 во встроенное. я прав?   -  person Aayman Khalid    schedule 17.05.2013


Ответы (2)


Я бы сделал так:

double(solve(det(A),'w'))

но я не совсем уверен, что это будет решение, которое вы ищете.

person fpe    schedule 17.05.2013

Для таких числовых задач я предпочитаю Mathematica. Я вставил в него ваше уравнение и получил Det как:

543676857927080439744 - 80400721107071258400 w^2 + 
 2052468350731440000 w^4 - 18069295320000000 w^6 + 
 63416925000000 w^8 - 75937500000 w^10

Не уверен, что это поможет..? Возможно, используйте mupad при выполнении символьных вычислений.

person Steve Hatcher    schedule 17.05.2013