Ticket #1559: SimpsonTest_1.mo

File SimpsonTest_1.mo, 655 bytes (added by asodja, 14 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;