Finding x for y = f(x) in simulink
9 ビュー (過去 30 日間)
古いコメントを表示
I have an equation which is uel = 3 + 3 * iel + 3 * log (3 * iel +1) a.k.a uel = f(iel) and I want to find iel ( uel is already known), so I have used fsolve to solve the problem in matlab and it works. Here is the code
---------------------------------------------------------------------
function iel = test(uel)
f = @(x) uel-(3 + 3 * x + 5 * log(3 * x + 1));
iel = fsolve(f,uel);
end
----------------------------------------------------------------------
But when i try to add this code into matlab function block in simulink, the model just don't run. I want my input to be uel and output to be iel. Can anyone please help me on this problem. Thank you so so much
2 件のコメント
回答 (2 件)
Paul
2022 年 1 月 19 日
編集済み: Paul
2022 年 1 月 19 日
According to the Symbolic Math Toolbox, the solution can be expressed as
%iel = wrightOmega(uel/3 - log(3) - 2/3) - 1/3
assuming that iel and uel are real. If they can be complex, the expression for iel is the same, but there are some other conditions that have to be satisfied.
Check
%doc wrightOmega
for more info.
Check a couple of test cases (note that I changed the 5 to a 3 in the function test() to match the equation in the question)
uel = 0.3
iel = test(uel)
iel = wrightOmega(uel/3 - log(3) - 2/3) - 1/3
uel = 5.4
iel = test(uel)
iel = wrightOmega(uel/3 - log(3) - 2/3) - 1/3
function iel = test(uel)
% f = @(x) uel-(3 + 3 * x + 5 * log(3 * x + 1)); % doesn't match equation in Question
f = @(x) uel-(3 + 3 * x + 3 * log(3 * x + 1));
iel = fsolve(f,uel);
end
0 件のコメント
Dat Trương Lê Trí
2022 年 7 月 6 日
Hi, I am facing the same problem, did you have any posible solution for this case?
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Spectral Measurements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!