필터 지우기
필터 지우기

How can I simplify the symbolic expressions?

조회 수: 1 (최근 30일)
Ali Almakhmari
Ali Almakhmari 2023년 9월 11일
편집: Ali Almakhmari 2023년 9월 11일
I hate the fact that solve keeps outputting symbolic expressions with extremely large numbers, when clearly it can simplify further and get rid of those numbers. How can I force it to do that? Its okay with me if I can get an approximation up 6 decimal places.
clear
clc
syms q_bar delta_o theta1 theta2 q S CL_alpha CL_delta b e KT
eqn1 = (2*theta1 - theta2 - q_bar.*theta1 + q_bar.*theta2) == (-0.4805020381.*q_bar.*delta_o);
eqn2 = (-theta1 + theta2 - 2.*q_bar.*theta2) == (-0.0051005137.*q_bar.*delta_o);
sol = solve(eqn1,eqn2,theta1,theta2);
L1 = q.*S.*CL_alpha.*sol.theta1;
L2 = q.*S.*CL_alpha.*sol.theta2 + q.*S.*CL_delta.*delta_o;
eqn1 = (0.25.*L1.*b + 0.75.*L2.*b) == 0;
a=solve(eqn1,q_bar)
a = 
  댓글 수: 1
Torsten
Torsten 2023년 9월 11일
If you need 6 decimal places, why do you supply model parameters with 10 decimal places ?
-0.4805020381*q_bar
-0.0051005137*q_bar

댓글을 달려면 로그인하십시오.

채택된 답변

John D'Errico
John D'Errico 2023년 9월 11일
편집: John D'Errico 2023년 9월 11일
clear
clc
syms q_bar delta_o theta1 theta2 q S CL_alpha CL_delta b e KT
eqn1 = (2*theta1 - theta2 - q_bar.*theta1 + q_bar.*theta2) == (-0.4805020381.*q_bar.*delta_o);
eqn2 = (-theta1 + theta2 - 2.*q_bar.*theta2) == (-0.0051005137.*q_bar.*delta_o);
sol = solve(eqn1,eqn2,theta1,theta2);
L1 = q.*S.*CL_alpha.*sol.theta1;
L2 = q.*S.*CL_alpha.*sol.theta2 + q.*S.*CL_delta.*delta_o;
eqn1 = (0.25.*L1.*b + 0.75.*L2.*b) == 0;
a=solve(eqn1,q_bar)
a = 
They are simple already. At least, as simple as they can be. You have unknowns in there, inside and outside of the square roots. I suppose you could play around, and make it different, but simpify will not find anything glaring to reduce there.
Can you make the numbers smaller? Well, yes, you can force VPA to round them.
vpa(a,10)
ans = 
Is that simpler? I guess.
  댓글 수: 1
Ali Almakhmari
Ali Almakhmari 2023년 9월 11일
편집: Ali Almakhmari 2023년 9월 11일
Not really. I mean, you can take 5.642719936e17 in common from numerator and denominator and have everything simplify to have all numbers between 0.1 to 10 instead of so complicated like that with high numbers.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Eigenvalue Problems에 대해 자세히 알아보기

태그

제품


릴리스

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by