Effacer les filtres
Effacer les filtres

I want to integrate a function

2 vues (au cours des 30 derniers jours)
reshma nesargi
reshma nesargi le 28 Déc 2021
i want to integrate this function used quad function but giving error
kindly resolve
  2 commentaires
Walter Roberson
Walter Roberson le 28 Déc 2021
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 le 28 Déc 2021
Can "fbjnn" handle vector inputs for x ?

Connectez-vous pour commenter.

Réponses (5)

reshma nesargi
reshma nesargi le 28 Déc 2021
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 le 28 Déc 2021
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 commentaire
Torsten
Torsten le 28 Déc 2021
Modifié(e) : Torsten le 28 Déc 2021
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);

Connectez-vous pour commenter.


reshma nesargi
reshma nesargi le 28 Déc 2021
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 commentaire
Walter Roberson
Walter Roberson le 29 Déc 2021
'ArrayValued',true is a "name/value pair" that should be written exactly as Torsten showed.

Connectez-vous pour commenter.


reshma nesargi
reshma nesargi le 28 Déc 2021
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 le 29 Déc 2021
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 commentaires
Walter Roberson
Walter Roberson le 1 Jan 2022
Show us the lines that assign values to n1 and n2 in Bulk.
reshma nesargi
reshma nesargi le 2 Jan 2022
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

Connectez-vous pour commenter.

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by