Conversion to logical from sym is not possible
조회 수: 1 (최근 30일)
이전 댓글 표시
Hi everyone, can you help me fix this problem
1. This is my matlab code
clc
clear all
syms v u w
w= exp(v)/(v^2 + u)
diffw = diff(w,v)
simplify(diffw)
eq = v^2 - 2*v + u == 0
D1 = 4-4*u < 0
D2 = 4-4*u == 0
D3 = 4-4*u > 0
if D1 < 0
fprintf('No solution')
solve(D1,u)
elseif D == 0
fprintf('Dual solution')
solveD(D2,u)
else D > 0
fprintf('Two solution')
solve(D3,u)
end
prompt1='u=';
u= input(prompt1);
xSol=solve(eq,v)
subs(xSol,u)
Error : Conversion to logical from sym is not possible
2.I don't know matlab can solve > 0 or < 0 with no u(number) so i put another code and it have the same error
clc
clear all
syms v u w
w= exp(v)/(v^2 + u)
diffw = diff(w,v)
simplify(diffw)
eq = v^2 - 2*v + u == 0
prompt1='u=';
u= input(prompt1);
D1 = 4-4*u < 0
D2 = 4-4*u == 0
D3 = 4-4*u > 0
if D1 < 0
fprintf('No solution')
solve(D1,u)
elseif D == 0
fprintf('Dual solution')
solveD(D2,u)
else D > 0
fprintf('Two solution')
solve(D3,u)
end
xSol=solve(eq,v)
subs(xSol,u)
Error :When I put u=1
D1 =
logical
0
D2 =
logical
1
D3 =
logical
0
Unrecognized function or variable 'D'.
elseif D == 0
Thank you very much.
댓글 수: 0
채택된 답변
madhan ravi
2020년 7월 3일
편집: madhan ravi
2020년 7월 3일
4 * u
% ^
Give assumptions for u:
assume(u > 0)
D1 = isAlways(4-4*u < 0)
D2 = isAlways(4-4*u == 0)
D3 = isAlways(4-4*u > 0)
And in if block remove the comparator.
if D1
fprintf('No solution')
solve(D1,u)
elseif D2
fprintf('Dual solution')
solveD(D2,u)
else D3
fprintf('Two solution')
solve(D3,u)
end
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Special Values에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!