Using fsolve in simulink with a different equation each time

1 Ansicht (letzte 30 Tage)
I have created this matlab scribt which solves the non-linear equation F with a given value of a. I would like to do the same in simulink. To solve the equation F for a given value of a. I have tried to use a interpreted matlab function but i can only change the initial guess not a value which is in the equation. Is it possible to do something similar in simulink?
function y = solve_theta_Be_to_theta_c(a)
y = fsolve(@(x)Function(x,a),[1]);
end
function F = Function(x,a)
l_1 = 75;
l_2 = 105;
l_3 = 450;
l_4x = 450;
l_4y = 110;
F = (l_4x + l_1 * cos(x) - l_3 * cos(a))^2 + (l_4y + l_3 * sin(a) - l_1 * sin(x))^2 - l_2^2;
end

Akzeptierte Antwort

Davide Masiello
Davide Masiello am 3 Okt. 2022
In Simulink, you can keep a as a generic parameter
syms x a
eqn = (450 + 75 * cos(x) - 450 * cos(a))^2 + (110 + 450 * sin(a) - 75* sin(x))^2 - 105^2 == 0;
S = solve(eqn)
S = 
Now that you have the solution, just give a a specific value and you get your answer
for a = 1:4
fprintf('--------------------------------------------------------------------------------\n')
fprintf('Solution for a = %d\n',a)
subs(S)
end
--------------------------------------------------------------------------------
Solution for a = 1
ans = 
--------------------------------------------------------------------------------
Solution for a = 2
ans = 
--------------------------------------------------------------------------------
Solution for a = 3
ans = 
--------------------------------------------------------------------------------
Solution for a = 4
ans = 

Weitere Antworten (0)

Kategorien

Mehr zu General Applications finden Sie in Help Center und File Exchange

Produkte


Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by