I want to integrate a function

2 次查看(过去 30 天)
i want to integrate this function used quad function but giving error
kindly resolve
  2 个评论
Walter Roberson
Walter Roberson 2021-12-28
Your code is
function Ix = f(x)
global Lz cr2 n1 n2
%wq = x.*x *cr2/(2 * Lz*Lz);
wq = x;
f5 = fbjnn(x,n1,n2);
Ix = (x.^3).*f5;
end
We do not have values for those global variables, and we do not have your fbjnn function, so we are not able to test the code.
What error message is given?
Torsten
Torsten 2021-12-28
Can "fbjnn" handle vector inputs for x ?

请先登录,再进行评论。

回答(5 个)

reshma nesargi
reshma nesargi 2021-12-28
kindly go through the entire program and help me sought out the problem.
fbjnn is the function written to calculate the formula given in untitled file.

reshma nesargi
reshma nesargi 2021-12-28
the program worked error free from 2,3 days all of a sudden since yesterday it is giving the error like this
not understanding what the problem is
Error using .^
Arrays have incompatible sizes for
this operation.
Error in fbjnn (line 11)
fz = exp(-z).* (z.^k);
Error in f (line 6)
f5 = fbjnn(x,n1,n2);
Error in quad (line 67)
y = f(x, varargin{:});
Error in Bulk (line 32)
Ix = quad('f',0,100);
  1 个评论
Torsten
Torsten 2021-12-28
编辑:Torsten 2021-12-28
z and k are incompatible in size.
That's why I asked whether fbjnn can deal with vector input. This shows: it can't.
Use "integral" instead of "quad" and call it with the option 'ArrayValued',true :
Ix = quad('f',0,100); -> Ix = integral(@f,0,100,'ArrayValued',true);
Iz = quad('fun',0,100); -> Iz = integral(@fun,0,100,'ArrayValued',true);

请先登录,再进行评论。


reshma nesargi
reshma nesargi 2021-12-28
Thank you but what is meant by 'ArrayValued' should we give some value there or write as it is what ever you have suggested
  1 个评论
Walter Roberson
Walter Roberson 2021-12-29
'ArrayValued',true is a "name/value pair" that should be written exactly as Torsten showed.

请先登录,再进行评论。


reshma nesargi
reshma nesargi 2021-12-28
on substituting quad with integral it gave this error
Warning: Minimum step size reached
near x = 6.284. There may be a
singularity, or the tolerances may
be too tight for this problem.
> In integralCalc/checkSpacing (line 467)
In integralCalc/iterateArrayValued (line 215)
In integralCalc/vadapt (line 130)
In integralCalc (line 75)
In integral (line 87)
In Bulk (line 36)
Unable to perform assignment
because the indices on the left
side are not compatible with the
size of the right side.
Error in Bulk (line 59)
cmb(i+1) = (pref *sumn2)/(9*10^11);

Walter Roberson
Walter Roberson 2021-12-29
global Lz cr2 n1 n2
Uh-oh... caution time.
Lz = 1*10^-06;
cr2 = (hc * c)/(ec * b);
Okay, the globals Lz and cr2 are defined.
for i = 0:1:20
t(i+1)=i;
bkt=kB*t(i+1);
Ix = integral(@f, 0, 100, 'arrayvalued', true)
Okay, what does f do?
function Ix = f(x)
global Lz cr2 n1 n2
%wq = x.*x *cr2/(2 * Lz*Lz);
wq = x;
f5 = fbjnn(x,n1,n2);
Ix = (x.^3).*f5;
end
... f uses the global variables n1 and n2 that are not defined.
  3 个评论
Walter Roberson
Walter Roberson 2022-1-1
Show us the lines that assign values to n1 and n2 in Bulk.
reshma nesargi
reshma nesargi 2022-1-2
N1 and N2 comes in the for loop of the main program Bulk. I was trying to call the quad function outside the for the so may be the value of N1 and N2 were not reaching it. Now i tried calling it with in the for loop it worked.
thankq very much for all your suggestions to get through this.
thanks much

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by