Error while integrating with changing value of alpha and beta

1 view (last 30 days)
I am getting error in this code
x=-5:0.1:5;
a=5;
alpha=linspace(0,30*pi/180,12);
beta=linspace(0,30*pi/180,12);
Z=3;
for i=1:length(x)
z(i)=sqrt(a^2-x(i).^2);
Q1=quad(@(y)pi/180*sqrt((a^2-x(i)^2-y.^2).*( ( -Z*sin(beta).*sin(alpha) - y.*cos(alpha) ).^2+( cos(alpha)*x(i) + cos(beta)*sin(alpha) *Z) .^2)),0,z(i));
if Q1>=pi/2
Q1= rem(Q1,pi/2);
elseif Q1<=-pi/2
Q1= rem(Q1,-pi/2);
end
Q2(i)=abs(Q1);
end
k=0.23;
Fn=2500;wo=15;va=5;
h=-((3*k*Fn*wo)/(pi*va*a^3))*Q2
plot(x,h)
grid on
xlabel('tool Path')
ylabel('Material Removal Depth')
I am getting this error
Error in quad (line 67)
y = f(x, varargin{:});
Error in Untitled6 (line 8)
Q1=quad(@(y)pi/180*sqrt((a^2-x(i)^2-y.^2).*( ( -Z*sin(beta).*sin(alpha) - y.*cos(alpha) ).^2+( cos(alpha)*x(i) +
cos(beta)*sin(alpha) *Z) .^2)),0,z(i));

Answers (1)

Walter Roberson
Walter Roberson on 30 Apr 2021
Edited: Walter Roberson on 30 Apr 2021
Q1=quad(@(y)pi/180*sqrt((a^2-x(i)^2-y.^2).*( ( -Z*sin(beta).*sin(alpha) - y.*cos(alpha) ).^2+( cos(alpha)*x(i) + cos(beta)*sin(alpha) *Z) .^2)),0,z(i));
alpha and beta are vectors. cos(beta) * sin(alpha) is an attempt to use the * operator between two 1 x 12 arrays, but * is algebraic matrix multiplication which requires that the second dimension of the first operand be the same as the first dimension of the second operand.
quad is going to pass in a vector of y values, not a scalar. y.*sin(alpha) is going to be a size mismatch unless y happens to be a column vector, but it will be a row vector.
Each of the function calls must return a vector the same size as the input.
Please consider what you are doing further. If the quad worked with the vector of angles you would expect one result for each angle, but your code expects a single scalar output.

Categories

Find more on Function Creation in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!