Ticket #1559: SimpsonTest_1.mo

File SimpsonTest_1.mo, 655 bytes (added by asodja, 13 years ago)
Line 
1model SimpsonTest
2
3  function simpson "Simpson's numerical integration formula"
4    input Real vals[:] "function values";
5    input Real a "Lower limit";
6    input Real b "Upper limit";
7    output Real res;
8    algorithm 
9    //assert(size(vals,1) >= 3,"Not enough points for Simpson integration!");
10    if size(vals, 1) >= 3 then
11      res := (b - a)/(size(vals, 1) - 1)*(vals[1] + 2*sum(vals[3:2:end - 1])
12        + 4*sum(vals[2:2:end - 1]) + vals[end])/3;
13    else
14      res := (b - a)*sum(vals)/2;
15    end if;
16  end simpson;
17
18  parameter Real a = simpson({0.4, 0.3, 0.1, 0.2, 0.3},0,1);
19  Real x(start=1);
20equation
21  der(x) = -a * x;
22end SimpsonTest;