Integration symbiolic form in matlab gives error
72 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
%here is my matlab script
Part_1=@(r,theta) 1+(2.*(1+r.*cos(theta))).^2;
W_i=@(r,theta) Part_1(r,theta).*(whittakerW(50, 0.5,(2.*(r))./(50)));
Matrix_element=(quad2d(W_i,0.5, 2000,0,pi));
This gives me error. What is the best way to solve this integration?
0 commentaires
Réponses (3)
Jaimin
le 7 Nov 2024 à 10:46
Hi @Anal
The error in your MATLAB script likely arises from the way you are using the “whittakerW” function and the “quad2d” function.
Ensure that the function handles you are using are properly vectorized. The “quad2d” function expects the integrand to accept arrays as inputs and return an array of outputs.
Make sure that the “whittakerW” function is available in your MATLAB environment. This function is part of the Symbolic Math Toolbox, so ensure you have it installed and the toolbox is loaded.
Kindly refer to the following code snippet for understanding.
% Define the function Part_1
Part_1 = @(r, theta) 1 + (2 .* (1 + r .* cos(theta))).^2;
% Define the function W_i, ensuring vectorization
W_i = @(r, theta) Part_1(r, theta) .* whittakerW(50, 0.5, (2 .* r) ./ 50);
% Perform the double integration using quad2d
Matrix_element = quad2d(W_i, 0.5, 2000, 0, pi);
% Display the result
disp(Matrix_element);
Kindly refer following MathWorks documentation for more information:
I hope this will be helpful.
Torsten
le 7 Nov 2024 à 12:13
Modifié(e) : Torsten
le 7 Nov 2024 à 12:14
I think you will have big problems if you try to integrate a function with values in the order of +/- 1e70.
syms r theta
Part_1= 1+(2*(1+r*cos(theta)))^2;
W_i = Part_1*whittakerW(50,0.5,2*r/50);
M = int(W_i,theta,0,pi);
rad = 0.5:0.5:2000;
plot(rad,double(subs(M,r,rad)))
0 commentaires
Star Strider
le 7 Nov 2024 à 12:55
Modifié(e) : Star Strider
le 7 Nov 2024 à 12:57
Part_1=@(r,theta) 1+(2.*(1+r.*cos(theta))).^2;
W_i=@(r,theta) Part_1(r,theta).*(whittakerW(50, 0.5,(2.*(r))./(50)));
Matrix_element=(integral2(W_i,0.5, 2000,0,pi))
clearvars
syms r theta
Part_1(r,theta) = 1+(2*(1+r*cos(theta)))^2;
W_i(r,theta) = Part_1(r,theta).*(whittakerW(50, 0.5,(2*(r))/(50)));
Matrix_element=int(int(W_i,r,0.5, 2000), theta,0,pi)
Matrix_element = vpa(Matrix_element)
The symbolic results do not show up here after submitting the post.
.
Voir également
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!