annotate plotConvergenceFit.m @ 658:1201eb16557e feature/grids

Allow the possibility to have discr as an input the an error function
author Jonatan Werpers <jonatan@werpers.com>
date Sat, 11 Nov 2017 13:02:57 -0800
parents 0ef8965dd745
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
440
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
1 % Draws a line in a loglog plot with slope `slope` fitted to the data in `x`
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
2 % and `y`. `xlength` scales how much of the interval [x(1) x(end)] is coverd
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
3 % by the line. `offset` is a multiplicative offset to where the line is drawn
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
4 % relative to the data.
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
5 function hand = plotConvergenceFit(slope, x, y, xlength, offset)
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
6 default_arg('xlength', 0.8)
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
7 default_arg('offset', 1);
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
8
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
9 % Optimise for log(y) = p*log(x) + q
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
10
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
11 p = slope;
38
4fcc4448682f Added function for drawing fitting lines to convergence plots.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12
440
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
13 logx = log(x);
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
14 logy = log(y);
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
15
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
16 N = length(logx);
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
17
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
18 q = 1/N*sum(logy-p*logx);
38
4fcc4448682f Added function for drawing fitting lines to convergence plots.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19
440
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
20 logxlength = xlength * abs(logx(end)-logx(1));
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
21 logxends = (logx(1)+logx(end))/2 + [-logxlength/2, logxlength/2];
38
4fcc4448682f Added function for drawing fitting lines to convergence plots.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22
440
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
23 xends = exp(logxends);
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
24 yends = exp(q)*xends.^p;
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
25
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
26 hand = line(xends, yends);
38
4fcc4448682f Added function for drawing fitting lines to convergence plots.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27 hand.Color = Color.black;
4fcc4448682f Added function for drawing fitting lines to convergence plots.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28 hand.LineStyle = '--';
4fcc4448682f Added function for drawing fitting lines to convergence plots.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29 hand.LineWidth = 2;
440
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
30 end
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
31
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
32
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
33
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
34 % function hand = plotConvergenceFit(slope, pos, width)
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
35 % x0 = pos(1);
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
36 % y0 = pos(2);
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
37
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
38 % x = [x0*10^-(width/2) x0*10^(width/2)];
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
39 % y = x.^slope * x0^-slope * y0;
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
40
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
41 % hand = line(x,y);
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
42 % hand.Color = Color.black;
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
43 % hand.LineStyle = '--';
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
44 % hand.LineWidth = 2;
0ef8965dd745 Improve inteface and functionality of plotConvergence()
Jonatan Werpers <jonatan@werpers.com>
parents: 38
diff changeset
45 % end