From: Michael Orlitzky Date: Thu, 15 Nov 2012 06:49:44 +0000 (-0500) Subject: Add the c_norm function and l2_project functions. X-Git-Url: https://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=79707c807c6f44eb95ec0eeeaa28f7e98bf8c319;p=octave.git Add the c_norm function and l2_project functions. Fix legendre_p and legendre_p_tilde to work with vectors. --- diff --git a/c_norm.m b/c_norm.m new file mode 100644 index 0000000..865ff8b --- /dev/null +++ b/c_norm.m @@ -0,0 +1,20 @@ +function c_norm = c_norm(w, a, b, v) + ## + ## The norm on C[a,b] induced by c_inner_product. + ## + ## INPUT: + ## + ## * ``w`` -- The weight function. + ## + ## * ``a`` -- The left endpoint of the interval. + ## + ## * ``b`` -- The right endpoint of the interval. + ## + ## * ``v`` -- The vector. + ## + ## OUTPUT: + ## + ## The norm of `v`; that is, the inner product sqrt(). + ## + c_norm = sqrt(c_inner_product(w, a, b, v, v)); +end diff --git a/legendre_p.m b/legendre_p.m index 6238929..276e740 100644 --- a/legendre_p.m +++ b/legendre_p.m @@ -14,14 +14,14 @@ function P = legendre_p(n) P = NA; elseif (n == 0) ## One of our base cases. - P = @(x) 1 + P = @(x) 1; elseif (n == 1) ## The second base case. - P = @(x) x + P = @(x) x; else ## Compute recursively. - prev = legendre_p(n-1) - prev_prev = legendre_p(n-2) - P = @(x) (1/n)*( (2*n - 1)*prev(x) - (n-1)*prev_prev(x) ) + prev = legendre_p(n-1); + prev_prev = legendre_p(n-2); + P = @(x) (1/n).*( (2*n - 1).*x.*prev(x) - (n-1).*prev_prev(x) ); end end diff --git a/legendre_p_tilde.m b/legendre_p_tilde.m index e5e6f63..0b3a87b 100644 --- a/legendre_p_tilde.m +++ b/legendre_p_tilde.m @@ -18,7 +18,7 @@ function P_tilde = legendre_p_tilde(n, a, b) P = NA; else ## Compute the Legendre polynomial over [-1,1] and mangle it. - P = legendre_p(n) - P_tilde = @(x) P( (2/(b-a))*x + 1 - (2*b)/(b-a) ) + P = legendre_p(n); + P_tilde = @(x) P( (2/(b-a)).*x + 1 - (2*b)/(b-a) ); end end