4-point Gauss Quadrature with MATLAB

  • Thread starter Thread starter stvoffutt
  • Start date Start date
  • Tags Tags
    Gauss Matlab
Click For Summary
SUMMARY

The discussion centers on implementing a 4-point Gauss Quadrature (GQ) method in MATLAB for numerical analysis. The user successfully runs a program with a specific function but encounters issues when attempting to generalize the routine to accept any function defined in a separate .m file. The solution involves correctly passing function handles to the GQ routine. The user resolves the issue by modifying the function call syntax to utilize function handles effectively.

PREREQUISITES
  • Understanding of 4-point Gauss Quadrature theory
  • Familiarity with MATLAB programming and syntax
  • Knowledge of function handles in MATLAB
  • Basic concepts of numerical integration
NEXT STEPS
  • Learn about MATLAB function handles and their usage
  • Explore advanced numerical integration techniques in MATLAB
  • Study error handling in MATLAB functions
  • Investigate the implementation of other quadrature methods in MATLAB
USEFUL FOR

Students in numerical analysis courses, MATLAB programmers, and anyone interested in implementing numerical integration techniques using Gauss Quadrature.

stvoffutt
Messages
15
Reaction score
0

Homework Statement


I need to evaluate a function using 4-point GQ.


Homework Equations


GQ theory


The Attempt at a Solution


I have got more of a programming issue in MATLAB. I am new to MATLAB. Actually this is for a numerical analysis course where we kind of learn MATLAB on the fly. First, I have 4 .m files to calculate the 4-point GQ which are listed below. Now, I have the program running for a specific function.m file and it calculates correctly. But I want to modify my existing GQ routine such that I can call any function.m file I want to. I think this is more of a syntax issue than anything. Since I have no experience with MATLAB any input or suggestions will be greatly appreciated.
.m files:

Main Program
function gauss_quadFULL(a,b,'integrand')
format longe;

%fhandle = @integrand;
reference_weights = [0.3478548 0.6521452 0.6521452 0.3478548];
reference_nodes = [-0.861136312 -0.339981044 0.3399810436 0.8611363116];
[New_weights, New_nodes] = gauss_quad(a,b,reference_weights,reference_nodes);
FourPoint_Gauss = guass_quadSUM('integrand',New_weights,New_nodes)

---------------------------------------------------------------------------------------------
%This function takes the reference weights/nodes and transforms them to the [-1,1] interval

function [weights, nodes] = gauss_quad(a,b,reference_weights,reference_node)

weights=1/2*(b-a)*reference_weights;
nodes = 1/2*((b-a)*reference_node+(b+a));
[weights, nodes]

---------------------------------------------------------------------------------------------
%Does the sum for GQ using nodes and weights

function result = guass_quadSUM(fhandle,New_weights,New_nodes)

result = 0;
nn = length(New_weights); % We choose weights here instead of nodes because
% in multidemensions nodes is a matrix.
for j=1:nn
result = result + New_weights(j)*feval(fhandle,New_nodes(j));
end

---------------------------------------------------------------------------------------------
%example function
function result = function_f_quad(x)

result = cos(pi/4*x)/sin(pi/4*x)^2;

---------------------------------------------------------------------------------------------

When I call the main function I get the following error:

EDU>> gauss_quadFULL(0,1,function_f_quad)
Error using function_f_quad (line 3)
Not enough input arguments.


Again, if I replace the loop sum by:
result = result + New_weights(j)*function_f_quad(New_nodes(j));
I get the correct answer. My question is how to pass the GQ main routine a new function, say f1.m, that does the same thing but for any function that I have in an .m file? I have tried messing with the handles and single quotes but I keep getting the same error in my program. Please help. Thank you in advance.
 
Physics news on Phys.org
I figured it out. Thanks.
 

Similar threads

  • · Replies 13 ·
Replies
13
Views
3K
Replies
3
Views
3K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 4 ·
Replies
4
Views
5K
  • · Replies 18 ·
Replies
18
Views
3K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 10 ·
Replies
10
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 2 ·
Replies
2
Views
5K
  • · Replies 21 ·
Replies
21
Views
3K