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

 Accepted Answer

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 Comments

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);
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.
Thanks sir for your suggestion and time

Sign in to comment.

More Answers (0)

Asked:

on 16 May 2020

Commented:

on 16 May 2020

Community Treasure Hunt

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

Start Hunting!