How to drop small terms in symbolic expression?

36 visualizaciones (últimos 30 días)
JT
JT el 18 de Nov. de 2020
Comentada: Walter Roberson el 16 de Mzo. de 2021
Hello,
I have a large complicated matrix with symbolic expressions within such as:
(3.7e-33*A*E)/R + (12.0*E*I)/R^3
Attached is a larger subset of the large matrice to give you an idea.
I want to loop through each cell to remove the small terms such as (3.7e-33*A*E)/R or (6.1e-17*A*E)/R - (7.3e-16*E*I)/R^3. If only I could target any numbers less than a certain threshold (like 1e-10) and make them 0. That would effectively accomplish that task. Any ideas how I would do this?
Thanks!

Respuestas (2)

Prudhvi Peddagoni
Prudhvi Peddagoni el 25 de Nov. de 2020
Hi,
You can use conditional indexing this
a={1; 2; 3; 4; 5};
a(cell2mat(a)>3)={0}
Hope this helps.
  1 comentario
JT
JT el 27 de Nov. de 2020
Hello,
Unfortunately, the terms I want to drop are within each cell. For example, in a cell that says:
(3.7e-33*A*E)/R + (12.0*E*I)/R^3
I want it to be edited to:
(12.0*E*I)/R^3
And the variables are symbolic which adds complication.
Thanks

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 27 de Nov. de 2020
I was sure that I had posted code for this at one point, but I cannot find it.
threshold = 1e-10;
syms A E I R
M = (sym('3.7e-33')*A*E)/R + (sym('12.0')*E*I)/R^3
M = 
mapSymType(M, 'vpareal', @(x) piecewise(abs(x)<=threshold, 0, x))
ans = 
  2 comentarios
ali akbar
ali akbar el 16 de Mzo. de 2021
How to set this as default?
Walter Roberson
Walter Roberson el 16 de Mzo. de 2021
You cannot set this as default.
There are cases, such as working with the bessel functions, where values smaller than 1e-10 (or 1e-16) are important to the calculation. Bessel function often occur in ratios, so although the individual components might be small, the ratio might be subtantial enough to affect the calculation. So in the general case having this as a default facility would lead to results that would be difficult to explain.

Iniciar sesión para comentar.

Community Treasure Hunt

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

Start Hunting!

Translated by