sym/double error(line 665)
8 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
syms x y
% microstructured equation
%g(x, y) = (2-3*cos(x)+cos(x).^3 + 2-3*cos(y)+cos(y).^3);
freq = 10^5; % Frequncy
geometrical_area = (1/freq)^2;
A = 10^-6; % Amplitude
g(x, y) = A*sin(2*pi*freq*x)+A*sin(2*pi*freq*y);
g_x = diff(g,x);
g_y = diff(g,y);
g_x=vpa(g_x^2);
g_y=vpa(g_y^2);
G = sqrt(1 + g_x + g_y);vpa(G);
s = int(int(G,x,0,2*pi),y,0,2*pi); % surface area equation
S=vpa(s);
roughness_area = double(S); %symbolic to double
why this code have error??
But when the parameter is ' A=1, freq=1/ (2*pi)' , the code has not problem.....
(Error code in command window)
다음 사용 중 오류가 발생함: symengine
Unable to convert expression into double array.
오류 발생: sym/double (line 665)
Xstr = mupadmex('symobj::double', S.s, 0);
what is it mean that error code?
2 comentarios
Alok Nimrani
el 18 de Feb. de 2019
The reason for this error is that 'S' is an expression and double function can convert only the symbolic values into double as mentioned here.
You will have to evaluate the expression first to obtain a symbolic value and then convert the symbolic value into a double. Are there any particular values of x and y for which you want to get the double value? In that case, you can assign corresponding values to symbolic variables x and y and then make use of subs function to evaluate the expressions at each stage.
Walter Roberson
el 18 de Feb. de 2019
The frequency is too high for matlab to be able to evaluate the integral numerically with the default error tolerances and maximum iterations
Respuestas (1)
madhan ravi
el 18 de Feb. de 2019
P.S: There is a warning at the end but yields a result without error
G = matlabFunction(sqrt(1 + g_x + g_y)); % read about matlabFunction()
s = integral2(G,0,2*pi,0,2*pi); % surface area equation
0 comentarios
Ver también
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!