• Matlab Gauss quadrature


    % matlab script to demonstrate use of Gauss quadrature
    
    clear all 
    close all
    
    % first derive the 2-point Gauss quadrature rule
    
    eq1 = 'w1*1 + w2*1 = 2';
    
    eq2 = 'x1*w1 + x2*w2 = 0';
    
    eq3 = 'x1^2*w1 + x2^2*w2 = 2/3';
    
    eq4 = 'x1^3*w1 + x2^3*w2 = 0';
    
    [w1,w2,x1,x2] = solve(eq1,eq2,eq3,eq4)
    pause
    
    % note: there are two solutions
    % we pick the one where x1 < x2
    
    [x1,index] = min(double(x1))
    w1 = double(w1(index))
    
    x2 = double(x2(index))
    w2 = double(w2(index))
    
    % define the integrand
    
    f = @(t) exp(-((t+1)./2).^2)
    
    % use Gauss-Legendre quadrature to approximate it
    
    gq = (w1*feval(f,x1) + w2*feval(f,x2));
    % don't forget the scaling!
    gq = gq/2
    
    % now let's find the exact answer and see what the error is ...
    
    syms x
    I = double(int(exp(-x^2),0,1))
    
    errorGQ = I - gq
    
    % compare to Simpson's rule
    
    a = -1; b = 1; c = (a+b)/2;
    s = (b-a)/6*(feval(f,a)+4*feval(f,c)+feval(f,b));
    % don't forget the scaling!
    s = s/2
    
    errorS = I - s
    

  • 相关阅读:
    2016年开源软件评选(截图备份)
    牛逼的思维方式都是倒逼出来的(摘)
    3-22 多态
    3 -20 类
    3 -19标准库
    3 -16 json序列化
    3 -16 内置方法
    迭代对象 和 迭代器
    3 -14 迭代 和列表 生成器
    3-13 装饰器
  • 原文地址:https://www.cnblogs.com/vigorz/p/10499199.html
Copyright © 2020-2023  润新知