% householder reflection

v0 = [1; 0];
v0 = v0./norm(v0);

v1 = [1; -1];
v1 = v1./norm(v1);

v = 1/2.*(v1-v0);
vnorm = norm(v);

H = eye(2) - 2/(vnorm^2).*(v*v')

A = [...
];

f = [...
0;
-4.33681e-19;
0;
1.0842e-19;
-2.66671e-06;
-4.94914e-07;
0;
-2.71051e-20;
-4.19923e-06;
-4.21374e-07;
-3.92235e-06;
-8.64817e-07;
0;
-5.42101e-20;
-4.96301e-06;
-4.13502e-06;
0;
0;
-7.03515e-06;
-5.84881e-06;
-4.93309e-06;
-2.37804e-06;
0;
0;
-2.90755e-06;
-1.23334e-06;
0;
0;
-2.2449e-06;
-8.21563e-07;
0;
0;
0;
0;
0;
0;
-7.24652e-06;
-8.25293e-07;
0;
2.4104e-06;
-8.19294e-06;
-1.18617e-06;
-5.58223e-06;
-1.69348e-06;
0;
1.88001e-06;
-1.03387e-05;
-8.22886e-06;
0;
0;
-1.07258e-05;
-8.62344e-06;
-9.76077e-06;
-4.93954e-06;
-9.10261e-06;
-7.35307e-06;
-4.01973e-06;
-2.38351e-06;
-5.92659e-06;
-4.23858e-07;
-7.9911e-06;
-4.04139e-06;
-3.80594e-06;
-3.06903e-06;
-3.92924e-06;
-2.71681e-06;
-5.12975e-06;
-1.37642e-06;
-4.79892e-06;
-1.14935e-06;
-7.19726e-06;
-3.54967e-06;
-6.62755e-06;
-6.1499e-07;
0;
1.28701e-05;
0;
0;
-1.09944e-05;
-1.92221e-06;
0;
1.17853e-05;
-1.21456e-05;
-2.20784e-06;
-8.3682e-06;
-2.01449e-06;
0;
0;
-1.43122e-05;
-1.00938e-05;
0;
0;
-1.48374e-05;
-1.03947e-05;
-1.3684e-05;
-6.31825e-06;
-1.35318e-05;
-9.3703e-06;
-5.76679e-06;
-1.88878e-06;
-9.18524e-06;
-1.51544e-06;
-1.16296e-05;
-5.64398e-06;
-5.20301e-06;
-2.13559e-06;
-5.55432e-06;
-2.017e-06;
-7.96841e-06;
-1.7895e-06;
-7.95375e-06;
-1.76175e-06;
-1.0596e-05;
-5.24553e-06;
-1.02345e-05;
-1.74422e-06;
-2.16064e-05;
-1.85059e-06;
-2.24752e-05;
-3.34957e-07;
-1.34774e-05;
-2.51353e-06;
-2.18312e-05;
-1.04202e-06;
-1.99898e-05;
-1.463e-06;
-1.94256e-05;
-2.11821e-06;
-5e-05;
5.03269e-07;
-2.00631e-05;
-2.41829e-06;
-2.11637e-05;
-1.12298e-06;
-1.61508e-05;
-1.11752e-05;
-1.7267e-05;
-6.9337e-06;
-1.43931e-05;
-6.46903e-06;
-1.70354e-05;
-2.45177e-06;
-5e-05;
-2.50465e-06;
-5e-05;
-1.21588e-05;
-2.01431e-05;
-1.19797e-05;
];

d = 0.00075745;
A2 = [...
];

f2 = [...
0;
0;
0;
0;
-3.01994e-06;
-1.76298e-07;
0;
0;
-4.78204e-06;
-2.0995e-07;
-5.01951e-06;
1.22653e-06;
0;
0;
-4.98476e-06;
-3.57931e-06;
0;
0;
-7.06572e-06;
-4.97786e-06;
-5.40025e-06;
-1.91591e-06;
0;
0;
-3.26344e-06;
-9.4196e-07;
0;
0;
-3.47107e-06;
1.69693e-06;
0;
0;
0;
0;
0;
0;
-8.36624e-06;
-3.21786e-07;
0;
0;
-9.19771e-06;
-4.8646e-07;
-9.46319e-06;
2.13218e-06;
0;
0;
-1.03261e-05;
-6.78209e-06;
0;
0;
-1.09634e-05;
-7.09926e-06;
-1.01615e-05;
-3.77678e-06;
-9.09151e-06;
-6.13484e-06;
-9.06507e-06;
4.28268e-06;
-6.83374e-06;
-2.4706e-07;
-8.51881e-06;
-3.22169e-06;
-7.83369e-06;
3.49294e-06;
-8.45665e-06;
3.90404e-06;
-7.913e-06;
1.91502e-06;
-7.13457e-06;
1.77604e-06;
-7.71821e-06;
-2.87949e-06;
-7.58455e-06;
-3.19117e-07;
0;
0;
0;
0;
-1.17905e-05;
-6.57623e-07;
0;
0;
-1.26738e-05;
-7.75536e-07;
-1.28663e-05;
2.59111e-06;
0;
0;
-1.33726e-05;
-8.23012e-06;
0;
0;
-1.40382e-05;
-8.4827e-06;
-1.3445e-05;
-4.60248e-06;
-1.21277e-05;
-7.7075e-06;
-1.20933e-05;
5.59837e-06;
-1.00511e-05;
-5.83173e-07;
-1.16989e-05;
-4.19969e-06;
-1.07938e-05;
5.03904e-06;
-1.14551e-05;
5.33497e-06;
-1.1057e-05;
2.39173e-06;
-1.01977e-05;
2.22842e-06;
-1.08385e-05;
-3.93909e-06;
-1.09119e-05;
-6.59537e-07;
-1.51572e-05;
6.80143e-06;
-1.97651e-05;
7.92292e-06;
-1.3582e-05;
-8.81729e-07;
-1.73372e-05;
7.52177e-06;
-1.63794e-05;
2.79237e-06;
-1.33659e-05;
2.38778e-06;
-5e-05;
7.93536e-06;
-1.92072e-05;
-9.96979e-07;
-1.93357e-05;
3.15138e-06;
-1.54595e-05;
-9.11795e-06;
-1.68142e-05;
-5.1397e-06;
-1.4113e-05;
-4.66534e-06;
-1.63265e-05;
-9.49749e-07;
-5e-05;
-1.0631e-06;
-5e-05;
-1.02021e-05;
-1.98778e-05;
-9.99727e-06;
];

d2 = 0;

sum(sum(abs(f-f2)>1e-14))


sum(sum(abs(A-A2)>1e-14))


alpha0 = 100;
V = 1e-5; %1e-20;
V0 = 5e-5;
L = 2.25e-5;

alpha = @(t) log(exp(alpha0 - V.*t./L ) - V0 * (exp(-t./L.*V)-1)./V);

x = [0:0.001:0.1];
alpha(x)
plot(x, alpha(x));

%abs(d-d2)

% x = [...
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% -1.2337e-10;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% 0;
% -1.2337e-10;
% 0;
% -1.2337e-10;
% 0;
% 0;
% 0;
% ];
% 
% ignore = [...
% 0;
% 0; 
% 0;
% 0; 
% 0;
% 0; 
% 0; 
% 0; 
% 0;
% 0; 
% 0;
% 0; 
% 0;
% 0; 
% 0;
% 0; 
% 0;
% 0; 
% 0;
% 0; 
% 0;
% 0; 
% 1;
% 1; 
% 0;
% 0; 
% 1; 
% 1; 
% 0;
% 0; 
% 1;
% 1; 
% 0;
% 0; 
% 0;
% 0; 
% 0;
% 0; 
% 0;
% 0; 
% 0;
% 0; 
% 0;
% 0; 
% 1;
% 0; 
% 0;
% 0; 
% 0;
% 0; 
% 0; 
% 0; 
% 0;
% 0; 
% 0; 
% 0; 
% 0; 
% 0; 
% 1;
% 0; 
% 1;
% 0; 
% 0;
% 0; 
% ];
% 
% newA = A;
% newf = f;
% for i=1:length(ignore)
%     if (ignore(i)==1)
%         for j=1:length(ignore)
%             newA(i,j) = (i==j);
%         end
%         newf(i) = x(i);
%     end
% end
% newA
% newf

% ignore = zeros(1, length(f));
% for i=1:length(ignore)
%     if (A(i,i)==0)
%         ignore(1, i) = 1;
%     end
% end
% 
% indices = [];
% for i=1:length(ignore)
%     if (ignore(i)==0)
%         indices = [indices i];
%     end
% end
% 
% len = length(indices);
% newA = zeros(len, len);
% newf = zeros(1, len);
% for i=1:len
%     newf(i) = f(indices(i));
% 
%     for j=1:len
%         newA(i,j) = A(indices(i), indices(j));
%     end
% end
% newf;
% newA

%inv(A);

% sol = newA\newf
% 
% tnnmgSol = [...
%     -1.03349;
% -0.0502635;
% 0.0161336;
% -0.00852914;
% -0.0130659;
% 0.00660115;
% -0.434915;
% -0.0128241;
% -0.00893317;
% 0.00884256;
% -0.0110232;
% -0.10936;
% 1.14978;
% 0.0581132;
% 0.019598;
% 0.190758;
% 0.478393;
% -0.00433049;
% 0.0513446;
% 0.353218;
% -0.00482644;
% 0.11758;
% 0;
% 0;
% -0.013677;
% 0.0512563;
% 0;
% 0;
% -0.00514197;
% -0.117664;
% 0;
% 0;
% 0.130034;
% 0.574041;
% 0.0136965;
% 0.214953;
% 0.0335986;
% -0.00703477;
% 0.0438202;
% 0.346506;
% -0.000896805;
% 0.127837;
% 0.041946;
% 0.217409;
% -1.2337e-10;
% 0.112528;
% -0.00828618;
% 0.00453345;
% -0.00898709;
% 0.0781683;
% 0.092355;
% -0.556143;
% -0.00443686;
% -0.140953;
% 0.0424371;
% -0.250082;
% -0.00336878;
% 0.00105471;
% -1.2337e-10;
% 0.0188452;
% -1.2337e-10;
% -0.14111;
% 0.00298499;
% -0.190904;
% ];
% 
% sol-tnnmgSol