getting error as integralParseArgs

Hi all,
i am trying to solve the above equation in matlab, but when i am trying to substitute the alp values and x1 values in code and i am getting an error as matrix dimensions must agree while solving the code
any suggestions and thanks in advance
clc;
clear;
format short
ro= 17.5; R = 65; %polar boss opening radius and radius of cylinder
wa= asind(ro/R); b= 1.225*ro; % winding angle
x = b:5:R;
y = ro:0.45:b;
x1 = x/R;
y1 = y/R;
alp = asind(ro./x); alp1 = asind(ro./y);
i = zeros(size(alp));
j= zeros(size(x1));
for c = 1:numel(alp,x1)
func1= @(x)((cosd(wa).*(x.^3))./((sqrt(1-(x.^3))).*((cosd(wa)*cosd(wa)).*((x.^2).*(1+(x.^2)))-(sind(alp).*sind(alp)))));
i(c) = integral(func1,1,alp(c),x1(c));
end

 Respuesta aceptada

Ameer Hamza
Ameer Hamza el 16 de Mayo de 2020
Which variable represent ρ is not clear. Also, the syntax for calling integral is incorrect. Try this code
clc;
clear;
format short
ro= 17.5; R = 65; %polar boss opening radius and radius of cylinder
wa= asind(ro/R); b= 1.225*ro; % winding angle
x = b:5:R;
y = ro:0.45:b;
x1 = x/R;
y1 = y/R;
alp = asind(ro./x); alp1 = asind(ro./y);
i = zeros(size(alp));
j= zeros(size(x1));
for c = 1:numel(alp)
func1= @(x)((cosd(wa).*(x.^3))./((sqrt(1-(x.^3))).*((cosd(wa)*cosd(wa)).*((x.^2).*(1+(x.^2)))-(sind(alp(c)).*sind(alp(c))))));
i(c) = integral(func1,1,x(c));
end

5 comentarios

nikhil
nikhil el 16 de Mayo de 2020
Sir, ρ is represented as x in code
In that case, my code is correct. Just change the following line
i(c) = integral(func1,1,x(c));
to
i(c) = integral(func1,1,x(c)/ro);
nikhil
nikhil el 16 de Mayo de 2020
Sir, thanks for your suggestion and time
but in my case ρ0 is R and when i replaced the x(c) to x(c)/R and when i am trying to plot the results i getting a complete distrubance curve instead of curve below and below is code which i updated
clc;
clear;
format short
ro= 17.5; R = 65; %polar boss opening radius and radius of cylinder
wa= asind(ro/R); b= 1.225*ro; % winding angle
x = b:5:R;
y = ro:0.45:b;
x1 = x/R;
y1 = y/R;
alp = asind(ro./x); alp1 = asind(ro./y);
i = zeros(size(alp));
for c = 1:numel(alp)
func1= @(x)((cosd(wa).*(x.^3))./((sqrt(1-(x.^3))).*((cosd(wa).*cosd(wa)).*((x.^2).*(1+(x.^2)))-(sind(alp(c)).*sind(alp(c))))));
i(c) = integral(func1,1,x(c)/R);
end
j= -65.*(i);
k = zeros(size(alp1));
for d = 1:numel(alp1)
func2= @(y)((cosd(wa).*(y.^3))./((sqrt(1-(y.^3))).*((cosd(wa).*cosd(wa)).*((y.^2).*(1+(y.^2)))-(sind(alp1(d)).*sind(alp1(d))))));
k(d) = integral(func2,1,y(d)/R);
end
j1= -65.*(k);
hold on
plot(x,j);
plot(y,j1)
There seems to be some problem with the limits of integration or the function itself. If you plot the denominator in the limit of integration, you get the following curve
figure
den = @(y) ((sqrt(1-(y.^3))).*((cosd(wa).*cosd(wa)).*((y.^2).*(1+(y.^2)))-(sind(alp1(d)).*sind(alp1(d)))));
a1 = linspace(y(1)/65, 1, 1000);
a2 = den(a1);
plot(a1, a2);
As you can see, the curve passes through y=0, which means that it has a singularity at that point, which might make the integral diverge. You need to figure out how to avoid this singularity.
nikhil
nikhil el 16 de Mayo de 2020
Thanks sir for your suggestion and time

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Preguntada:

el 16 de Mayo de 2020

Comentada:

el 16 de Mayo de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by