I need to pass different values of (theta_r) into F(1) and F(2) to get different values of x(1) and x(2).
i use this code, but it shows me many errors.
clear all;
%defining the parameters.
global R L3 L4 L5 theta_r
R=80; L5=360; L4=360; L3=120; n=2; m=100*n;
theta_r=linspace(0,2*pi*n,m);
function F = value(x,theta_r)
F(1)=R*sin(theta_r)+L3*sin(x(1))-L5*sin(x(2));
F(2)= R*cos(theta_r)+L3*cos(x(1))-L5*cos(x(2))-L4;
end
for b = 1:numl(theta_r)
x(b,:)=fsolve(@(x)value(x,theta_r(b),[1,0]));
end

 Réponse acceptée

Jan
Jan le 20 Mai 2021
Modifié(e) : Jan le 21 Mai 2021

0 votes

global R L3 L4 L5
R=80; L5=360; L4=360; L3=120; n=2; m=100*n;
theta_r=linspace(0,2*pi*n,m);
for b = 1:numel(theta_r) % fixed: "numl"
x(b,:) = fsolve(@(x) value(x, theta_r(b)), [1,0]);
end
function F = value(x,theta_r)
global R L3 L4 L5
F(1)=R*sin(theta_r)+L3*sin(x(1))-L5*sin(x(2));
F(2)= R*cos(theta_r)+L3*cos(x(1))-L5*cos(x(2))-L4;
end

5 commentaires

Luqman Alabri
Luqman Alabri le 20 Mai 2021
Thank you so much.
Luqman Alabri
Luqman Alabri le 21 Mai 2021
Hello Jan,
How to make sure that the angles x(1) and x(2) were mesured from the positive x axis, because when I plot input versus output there were some incorrect values of x(1) and x(2).
like this:
You could try
initial = [1,0];
for b=1:numel(theta_r)
x(b,:) = fsolve(@(x) value(x,theta_r(b),initial);
initial = x(b,:);
end
Jan
Jan le 21 Mai 2021
@Torsten: A good idea.
Luqman Alabri
Luqman Alabri le 21 Mai 2021
Thank you all.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by