Mercurial > repos > public > sbplib
annotate plotConvergenceFit.m @ 798:e76321b89c1e feature/grids
Fix bug in spdiag
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 26 Jul 2018 17:47:21 -0700 |
parents | 0ef8965dd745 |
children |
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 |