-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
14 changed files
with
736 additions
and
338 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
```{julia} | ||
using LinearAlgebra, SparseArrays | ||
using Symbolics | ||
speye(n) = SparseArrays.sparse(I, n, n) | ||
function Base.diff(x::SparseMatrixCSC, d::Integer=1) | ||
D = x[2:end, :] .- x[1:end-1, :] | ||
d >= 2 ? diff(D, d - 1) : D | ||
end | ||
function ddmat(x::AbstractVector, d::Integer=2) | ||
m = length(x) | ||
if d == 0 | ||
return speye(m) | ||
else | ||
dx = x[(d+1):m] - x[1:(m-d)] # bug may here | ||
return diff(ddmat(x, d - 1)) | ||
end | ||
end | ||
n = 8 | ||
D = ddmat(1:n, 4) | ||
display(D) | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,223 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 10, | ||
"id": "cd3c38ac-780c-4e99-9e4f-7c26c3d1cf6d", | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"text/plain": [ | ||
"diag_m (generic function with 1 method)" | ||
] | ||
}, | ||
"metadata": {}, | ||
"output_type": "display_data" | ||
} | ||
], | ||
"source": [ | ||
"# 这里是whittaker 3阶向量求解过程\n", | ||
"include(\"main_whit.jl\")" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 46, | ||
"id": "a2c429bc-be39-41e5-a7a0-31ce5e4e0439", | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"text/latex": [ | ||
"$$ \\begin{equation}\n", | ||
"\\left[\n", | ||
"\\begin{array}{c}\n", | ||
"\\frac{\\left( - e_1 + c_1 c_2 \\right)^{2}}{d_3} + \\frac{\\left( - \\left( - e_4 + c_4 c_5 \\right) f_1 + \\left( f_3 - c_5 e_3 + c_3 \\left( - e_4 + c_4 c_5 \\right) \\right) e_1 - c_1 \\left( c_5 f_2 - \\left( - e_4 + c_4 c_5 \\right) e_2 + c_2 \\left( f_3 - c_5 e_3 + c_3 \\left( - e_4 + c_4 c_5 \\right) \\right) \\right) \\right)^{2}}{d_6} + \\frac{\\left( - f_1 + c_3 e_1 - c_1 \\left( - e_2 + c_2 c_3 \\right) \\right)^{2}}{d_4} + \\frac{\\left( c_4 f_1 - \\left( - e_3 + c_3 c_4 \\right) e_1 + c_1 \\left( f_2 - c_4 e_2 + c_2 \\left( - e_3 + c_3 c_4 \\right) \\right) \\right)^{2}}{d_5} + \\frac{1}{d_1} + \\frac{c_1^{2}}{d_2} \\\\\n", | ||
"\\frac{\\left( c_5 f_2 - \\left( - e_4 + c_4 c_5 \\right) e_2 + c_2 \\left( f_3 - c_5 e_3 + c_3 \\left( - e_4 + c_4 c_5 \\right) \\right) \\right)^{2}}{d_6} + \\frac{\\left( - e_2 + c_2 c_3 \\right)^{2}}{d_4} + \\frac{\\left( - f_2 + c_4 e_2 - c_2 \\left( - e_3 + c_3 c_4 \\right) \\right)^{2}}{d_5} + \\frac{1}{d_2} + \\frac{c_2^{2}}{d_3} \\\\\n", | ||
"\\frac{1}{d_3} + \\frac{c_3^{2}}{d_4} + \\frac{\\left( - f_3 + c_5 e_3 - c_3 \\left( - e_4 + c_4 c_5 \\right) \\right)^{2}}{d_6} + \\frac{\\left( - e_3 + c_3 c_4 \\right)^{2}}{d_5} \\\\\n", | ||
"\\frac{c_4^{2}}{d_5} + \\frac{\\left( - e_4 + c_4 c_5 \\right)^{2}}{d_6} + \\frac{1}{d_4} \\\\\n", | ||
"\\frac{1}{d_5} + \\frac{c_5^{2}}{d_6} \\\\\n", | ||
"\\frac{1}{d_6} \\\\\n", | ||
"\\end{array}\n", | ||
"\\right]\n", | ||
"\\end{equation}\n", | ||
" $$" | ||
], | ||
"text/plain": [ | ||
"6-element Vector{Num}:\n", | ||
" ((-e[1] + c[1]*c[2])^2) / d[3] + ((-(-e[4] + c[4]*c[5])*f[1] + (f[3] - c[5]*e[3] + c[3]*(-e[4] + c[4]*c[5]))*e[1] - c[1]*(c[5]*f[2] - (-e[4] + c[4]*c[5])*e[2] + c[2]*(f[3] - c[5]*e[3] + c[3]*(-e[4] + c[4]*c[5]))))^2) / d[6] + ((-f[1] + c[3]*e[1] - c[1]*(-e[2] + c[2]*c[3]))^2) / d[4] + ((c[4]*f[1] - (-e[3] + c[3]*c[4])*e[1] + c[1]*(f[2] - c[4]*e[2] + c[2]*(-e[3] + c[3]*c[4])))^2) / d[5] + 1 / d[1] + (c[1]^2) / d[2]\n", | ||
" ((c[5]*f[2] - (-e[4] + c[4]*c[5])*e[2] + c[2]*(f[3] - c[5]*e[3] + c[3]*(-e[4] + c[4]*c[5])))^2) / d[6] + ((-e[2] + c[2]*c[3])^2) / d[4] + ((-f[2] + c[4]*e[2] - c[2]*(-e[3] + c[3]*c[4]))^2) / d[5] + 1 / d[2] + (c[2]^2) / d[3]\n", | ||
" 1 / d[3] + (c[3]^2) / d[4] + ((-f[3] + c[5]*e[3] - c[3]*(-e[4] + c[4]*c[5]))^2) / d[6] + ((-e[3] + c[3]*c[4])^2) / d[5]\n", | ||
" (c[4]^2) / d[5] + ((-e[4] + c[4]*c[5])^2) / d[6] + 1 / d[4]\n", | ||
" 1 / d[5] + (c[5]^2) / d[6]\n", | ||
" 1 / d[6]" | ||
] | ||
}, | ||
"metadata": {}, | ||
"output_type": "display_data" | ||
} | ||
], | ||
"source": [ | ||
"n = 6\n", | ||
"@variables λ \n", | ||
"\n", | ||
"@variables d[1:n]\n", | ||
"@variables c[1:n]\n", | ||
"@variables e[1:n]\n", | ||
"@variables f[1:n]\n", | ||
"\n", | ||
"z = variables(:z, 1:n)\n", | ||
"w = variables(:w, 1:n)\n", | ||
"y = variables(:y, 1:n)\n", | ||
"θ = variables(:θ, 1:n)\n", | ||
"\n", | ||
"D = diag_m(d)\n", | ||
"L = Matrix{Num}(undef, n, n)\n", | ||
"fill!(L, 0)\n", | ||
"for i = 1:n\n", | ||
" L[i, i] = 1\n", | ||
" i + 1 <= n && (L[i+1, i] = c[i])\n", | ||
" i + 2 <= n && (L[i+2, i] = e[i])\n", | ||
" i+3 <= n && (L[i+3, i] = f[i])\n", | ||
"end\n", | ||
"L\n", | ||
"\n", | ||
"x = inv(L)\n", | ||
"H = x' * inv(D) * x\n", | ||
"diag(H)" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 41, | ||
"id": "978e9891-eeff-419f-9a0a-1532275e7b42", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 37, | ||
"id": "95234236-46a3-4346-9576-c27ff284868f", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# H = inv(L * D * L')\n", | ||
"# diag(H)" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "25094dd9", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 17, | ||
"id": "e34b6b09-f606-4d4c-9629-2ba664330115", | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"text/latex": [ | ||
"$$ \\begin{equation}\n", | ||
"\\left[\n", | ||
"\\begin{array}{c}\n", | ||
"y_1 \\\\\n", | ||
"y_2 - c_1 y_1 \\\\\n", | ||
"y_3 - e_1 y_1 - \\left( y_2 - c_1 y_1 \\right) c_2 \\\\\n", | ||
"y_4 - f_1 y_1 - \\left( y_2 - c_1 y_1 \\right) e_2 - \\left( y_3 - e_1 y_1 - \\left( y_2 - c_1 y_1 \\right) c_2 \\right) c_3 \\\\\n", | ||
"y_5 - \\left( y_2 - c_1 y_1 \\right) f_2 - \\left( y_3 - e_1 y_1 - \\left( y_2 - c_1 y_1 \\right) c_2 \\right) e_3 - \\left( y_4 - f_1 y_1 - \\left( y_2 - c_1 y_1 \\right) e_2 - \\left( y_3 - e_1 y_1 - \\left( y_2 - c_1 y_1 \\right) c_2 \\right) c_3 \\right) c_4 \\\\\n", | ||
"y_6 - \\left( y_3 - e_1 y_1 - \\left( y_2 - c_1 y_1 \\right) c_2 \\right) f_3 - \\left( y_4 - f_1 y_1 - \\left( y_2 - c_1 y_1 \\right) e_2 - \\left( y_3 - e_1 y_1 - \\left( y_2 - c_1 y_1 \\right) c_2 \\right) c_3 \\right) e_4 - \\left( y_5 - \\left( y_2 - c_1 y_1 \\right) f_2 - \\left( y_3 - e_1 y_1 - \\left( y_2 - c_1 y_1 \\right) c_2 \\right) e_3 - \\left( y_4 - f_1 y_1 - \\left( y_2 - c_1 y_1 \\right) e_2 - \\left( y_3 - e_1 y_1 - \\left( y_2 - c_1 y_1 \\right) c_2 \\right) c_3 \\right) c_4 \\right) c_5 \\\\\n", | ||
"y_7 - \\left( y_4 - f_1 y_1 - \\left( y_2 - c_1 y_1 \\right) e_2 - \\left( y_3 - e_1 y_1 - \\left( y_2 - c_1 y_1 \\right) c_2 \\right) c_3 \\right) f_4 - \\left( y_5 - \\left( y_2 - c_1 y_1 \\right) f_2 - \\left( y_3 - e_1 y_1 - \\left( y_2 - c_1 y_1 \\right) c_2 \\right) e_3 - \\left( y_4 - f_1 y_1 - \\left( y_2 - c_1 y_1 \\right) e_2 - \\left( y_3 - e_1 y_1 - \\left( y_2 - c_1 y_1 \\right) c_2 \\right) c_3 \\right) c_4 \\right) e_5 - \\left( y_6 - \\left( y_3 - e_1 y_1 - \\left( y_2 - c_1 y_1 \\right) c_2 \\right) f_3 - \\left( y_4 - f_1 y_1 - \\left( y_2 - c_1 y_1 \\right) e_2 - \\left( y_3 - e_1 y_1 - \\left( y_2 - c_1 y_1 \\right) c_2 \\right) c_3 \\right) e_4 - \\left( y_5 - \\left( y_2 - c_1 y_1 \\right) f_2 - \\left( y_3 - e_1 y_1 - \\left( y_2 - c_1 y_1 \\right) c_2 \\right) e_3 - \\left( y_4 - f_1 y_1 - \\left( y_2 - c_1 y_1 \\right) e_2 - \\left( y_3 - e_1 y_1 - \\left( y_2 - c_1 y_1 \\right) c_2 \\right) c_3 \\right) c_4 \\right) c_5 \\right) c_6 \\\\\n", | ||
"\\end{array}\n", | ||
"\\right]\n", | ||
"\\end{equation}\n", | ||
" $$" | ||
], | ||
"text/plain": [ | ||
"7-element Vector{Num}:\n", | ||
" y₁\n", | ||
" y₂ - c[1]*y₁\n", | ||
" y₃ - e[1]*y₁ - (y₂ - c[1]*y₁)*c[2]\n", | ||
" y₄ - f[1]*y₁ - (y₂ - c[1]*y₁)*e[2] - (y₃ - e[1]*y₁ - (y₂ - c[1]*y₁)*c[2])*c[3]\n", | ||
" y₅ - (y₂ - c[1]*y₁)*f[2] - (y₃ - e[1]*y₁ - (y₂ - c[1]*y₁)*c[2])*e[3] - (y₄ - f[1]*y₁ - (y₂ - c[1]*y₁)*e[2] - (y₃ - e[1]*y₁ - (y₂ - c[1]*y₁)*c[2])*c[3])*c[4]\n", | ||
" y₆ - (y₃ - e[1]*y₁ - (y₂ - c[1]*y₁)*c[2])*f[3] - (y₄ - f[1]*y₁ - (y₂ - c[1]*y₁)*e[2] - (y₃ - e[1]*y₁ - (y₂ - c[1]*y₁)*c[2])*c[3])*e[4] - (y₅ - (y₂ - c[1]*y₁)*f[2] - (y₃ - e[1]*y₁ - (y₂ - c[1]*y₁)*c[2])*e[3] - (y₄ - f[1]*y₁ - (y₂ - c[1]*y₁)*e[2] - (y₃ - e[1]*y₁ - (y₂ - c[1]*y₁)*c[2])*c[3])*c[4])*c[5]\n", | ||
" y₇ - (y₄ - f[1]*y₁ - (y₂ - c[1]*y₁)*e[2] - (y₃ - e[1]*y₁ - (y₂ - c[1]*y₁)*c[2])*c[3])*f[4] - (y₅ - (y₂ - c[1]*y₁)*f[2] - (y₃ - e[1]*y₁ - (y₂ - c[1]*y₁)*c[2])*e[3] - (y₄ - f[1]*y₁ - (y₂ - c[1]*y₁)*e[2] - (y₃ - e[1]*y₁ - (y₂ - c[1]*y₁)*c[2])*c[3])*c[4])*e[5] - (y₆ - (y₃ - e[1]*y₁ - (y₂ - c[1]*y₁)*c[2])*f[3] - (y₄ - f[1]*y₁ - (y₂ - c[1]*y₁)*e[2] - (y₃ - e[1]*y₁ - (y₂ - c[1]*y₁)*c[2])*c[3])*e[4] - (y₅ - (y₂ - c[1]*y₁)*f[2] - (y₃ - e[1]*y₁ - (y₂ - c[1]*y₁)*c[2])*e[3] - (y₄ - f[1]*y₁ - (y₂ - c[1]*y₁)*e[2] - (y₃ - e[1]*y₁ - (y₂ - c[1]*y₁)*c[2])*c[3])*c[4])*c[5])*c[6]" | ||
] | ||
}, | ||
"execution_count": 17, | ||
"metadata": {}, | ||
"output_type": "execute_result" | ||
} | ||
], | ||
"source": [ | ||
"L * θ\n", | ||
"L \\ y" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 19, | ||
"id": "1c25770d-29f2-483c-aa36-36b01fa50ef3", | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"text/latex": [ | ||
"$$ \\begin{equation}\n", | ||
"\\left[\n", | ||
"\\begin{array}{cc}\n", | ||
"\\left( z_1 + c_1 z_2 + e_1 z_3 + f_1 z_4 \\right) d_1 & \\theta_1 \\\\\n", | ||
"\\left( z_2 + c_2 z_3 + e_2 z_4 + f_2 z_5 \\right) d_2 & \\theta_2 \\\\\n", | ||
"\\left( z_3 + c_3 z_4 + e_3 z_5 + f_3 z_6 \\right) d_3 & \\theta_3 \\\\\n", | ||
"\\left( z_4 + c_4 z_5 + e_4 z_6 + f_4 z_7 \\right) d_4 & \\theta_4 \\\\\n", | ||
"\\left( z_5 + c_5 z_6 + e_5 z_7 \\right) d_5 & \\theta_5 \\\\\n", | ||
"\\left( z_6 + c_6 z_7 \\right) d_6 & \\theta_6 \\\\\n", | ||
"d_7 z_7 & \\theta_7 \\\\\n", | ||
"\\end{array}\n", | ||
"\\right]\n", | ||
"\\end{equation}\n", | ||
" $$" | ||
], | ||
"text/plain": [ | ||
"7×2 Matrix{Num}:\n", | ||
" (z₁ + c[1]*z₂ + e[1]*z₃ + f[1]*z₄)*d[1] θ₁\n", | ||
" (z₂ + c[2]*z₃ + e[2]*z₄ + f[2]*z₅)*d[2] θ₂\n", | ||
" (z₃ + c[3]*z₄ + e[3]*z₅ + f[3]*z₆)*d[3] θ₃\n", | ||
" (z₄ + c[4]*z₅ + e[4]*z₆ + f[4]*z₇)*d[4] θ₄\n", | ||
" (z₅ + c[5]*z₆ + e[5]*z₇)*d[5] θ₅\n", | ||
" (z₆ + c[6]*z₇)*d[6] θ₆\n", | ||
" d[7]*z₇ θ₇" | ||
] | ||
}, | ||
"metadata": {}, | ||
"output_type": "display_data" | ||
} | ||
], | ||
"source": [ | ||
"display([D * L' * z θ])\n", | ||
"# z' = (L' * z) \\ θ\n" | ||
] | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": "Julia 1.10.3", | ||
"language": "julia", | ||
"name": "julia-1.10" | ||
}, | ||
"language_info": { | ||
"file_extension": ".jl", | ||
"mimetype": "application/julia", | ||
"name": "julia", | ||
"version": "1.10.3" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 5 | ||
} |
Oops, something went wrong.