21 views (last 30 days)

I want to integrate the following over the interval x0 = 0:2:8 . I have tried using arrayfun:

x0 = 0:2:8;

cai= @(theta) ((4.*pi.*x0.*cos(theta).*sin(theta)+8.*pi.*cos(theta).*cos(theta).*sin(theta))./(1+0.5.*x0+cos(theta)));

xval = arrayfun(@(uplim) integral(cai, 0, uplim, 'ArrayValued',true), x0);

plot(x0, xval)

grid

But I got the following error code:

Error using arrayfun

Non-scalar in Uniform output, at index 1, output 1.

Set 'UniformOutput' to false.

Error in PlottingFx (line 6)

xval = arrayfun(@(uplim) integral(cai, 0, uplim, 'ArrayValued',true), x0);

Can anyone help me?

infinity
on 9 Jul 2019

Hello,

The way you try to plot the integral may be not correct, for x0 you can compute the integral by using the integral fuction with repsect to theta. This code below may help you understand this well

x0 = 0:2:8;

cai= @(theta) ((4.*pi.*x0.*cos(theta).*sin(theta)...

+8.*pi.*cos(theta).*cos(theta).*sin(theta))...

./(1+0.5.*x0*cos(theta)));

xval = integral(cai, 0, pi,'ArrayValued',true);

plot(x0, xval)

grid

Also, I fix an mismatch between your code and your provided function

In your code:

./(1+0.5.*x0+cos(theta)));

I change it to

./(1+0.5.*x0*cos(theta)));

which is correct with your given equation.

Opportunities for recent engineering grads.

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

Start Hunting!
## 0 Comments

Sign in to comment.