andreasvarga / periodicsystems.jl Goto Github PK
View Code? Open in Web Editor NEWLinear periodic time-varying systems tools in Julia
License: MIT License
Linear periodic time-varying systems tools in Julia
License: MIT License
This issue is used to trigger TagBot; feel free to unsubscribe.
If you haven't already, you should update your TagBot.yml
to include issue comment triggers.
Please see this post on Discourse for instructions and more details.
If you'd like for me to do this for you, comment TagBot fix
on this issue.
I'll open a PR within a few hours, please be patient!
The function dpsylv2
to solve small dimension periodic Sylvester equations (of a special type) should be replaced with a more reliable solver for bordered almost block diagonal (BABD) coefficient matrices. The Algorithm 5.1 of
COMPUTING PERIODIC DEFLATING SUBSPACES ASSOCIATED WITH A SPECIFIED SET OF EIGENVALUES
R. GRANAT, B. KAGSTROM and D. KRESSNER
BIT Numerical Mathematics (2007) 47: 763โ791
is a good candidate for implementation.
See #11
There are several types of periodic matrices which are not covered.
For continuous-time periodic systems, the periodic time-series matrix
object does not cover the case of matrix time-series defined on non-uniform time grids, which would be useful to model periodic switching systems.
For discrete-time periodic systems, the defintions of periodic matrix
and periodic array
objects do not cover systems with non-uniform sample times. Also, there are sampled-data systems using non-uniform/non-standard sample-and-hold devices, which can be modelled as periodic discrete-time systems ( see the paper A unified approach to the theory of sampling systems, by R. E. Kalman and J. E. Bertram, J. Franklin Institute, pp. 405-436, May 1959.).
The following error occurs during testing under Windows with Julia 1.8, leading to crashing Julia (see CI.log):
Test_psfutils
Please submit a bug report with steps to reproduce this fault, and any error messages that follow (in their entirety). Thanks.
Exception: EXCEPTION_ACCESS_VIOLATION at 0x0 -- unknown function (ip: 0000000000000000)
in expression starting at D:\a\PeriodicSystems.jl\PeriodicSystems.jl\test\test_pschur.jl:15
unknown function (ip: 0000000000000000)
Allocations: 107208134 (Pool: 107190352; Big: 17782); GC: 43
ERROR: LoadError: Package PeriodicSystems errored during testing
Stacktrace:
[1] pkgerror(msg::String)
@ Pkg.Types C:\hostedtoolcache\windows\julia\1.8.1\x64\share\julia\stdlib\v1.8\Pkg\src\Types.jl:67
[2] test(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}; coverage::Bool, julia_args::Cmd, test_args::Cmd, test_fn::Nothing, force_latest_compatible_version::Bool, allow_earlier_backwards_compatible_versions::Bool, allow_reresolve::Bool)
@ Pkg.Operations C:\hostedtoolcache\windows\julia\1.8.1\x64\share\julia\stdlib\v1.8\Pkg\src\Operations.jl:1813
[3] test(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}; coverage::Bool, test_fn::Nothing, julia_args::Vector{String}, test_args::Cmd, force_latest_compatible_version::Bool, allow_earlier_backwards_compatible_versions::Bool, allow_reresolve::Bool, kwargs::Base.Pairs{Symbol, IOContext{Base.PipeEndpoint}, Tuple{Symbol}, NamedTuple{(:io,), Tuple{IOContext{Base.PipeEndpoint}}}})
@ Pkg.API C:\hostedtoolcache\windows\julia\1.8.1\x64\share\julia\stdlib\v1.8\Pkg\src\API.jl:431
[4] test(pkgs::Vector{Pkg.Types.PackageSpec}; io::IOContext{Base.PipeEndpoint}, kwargs::Base.Pairs{Symbol, Any, Tuple{Symbol, Symbol, Symbol}, NamedTuple{(:coverage, :julia_args, :force_latest_compatible_version), Tuple{Bool, Vector{String}, Bool}}})
@ Pkg.API C:\hostedtoolcache\windows\julia\1.8.1\x64\share\julia\stdlib\v1.8\Pkg\src\API.jl:156
[5] test(; name::Nothing, uuid::Nothing, version::Nothing, url::Nothing, rev::Nothing, path::Nothing, mode::Pkg.Types.PackageMode, subdir::Nothing, kwargs::Base.Pairs{Symbol, Any, Tuple{Symbol, Symbol, Symbol}, NamedTuple{(:coverage, :julia_args, :force_latest_compatible_version), Tuple{Bool, Vector{String}, Bool}}})
@ Pkg.API C:\hostedtoolcache\windows\julia\1.8.1\x64\share\julia\stdlib\v1.8\Pkg\src\API.jl:171
[6] top-level scope
@ D:\a\_actions\julia-actions\julia-runtest\v1\test_harness.jl:15
[7] include(fname::String)
@ Base.MainInclude .\client.jl:476
[8] top-level scope
@ none:1
in expression starting at D:\a\_actions\julia-actions\julia-runtest\v1\test_harness.jl:7
This error can be reproduced using the following code (this will probably crash Julia):
using PeriodicSystems
using LinearAlgebra
using LinearAlgebra: BlasInt
# MB03BD example
A1 = Matrix{Float64}(I,3,3); A2 = [ 1.0 2.0 0.0; 4.0 -1.0 3.0; 0.0 3.0 1.0]; A3 = Matrix{Float64}(I,3,3);
E1 = [2.0 0.0 1.0; 0.0 -2.0 -1.0; 0.0 0.0 3.0]; E2 = Matrix{Float64}(I,3,3);
E3 = [ 1.0 0.0 1.0; 0.0 4.0 -1.0; 0.0 0.0 -2.0];
ihess = 2
# using the SLICOT wrapper mb03bd!
A = reshape([E1 A2 E3],3,3,3);
KMAX = 3
NMAX = 3
LDA1 = NMAX
LDA2 = NMAX
LDQ1 = NMAX
LDQ2 = NMAX
LDWORK = KMAX + max( 2*NMAX, 8*KMAX )
LIWORK = 2*KMAX + NMAX
QIND = Array{BlasInt,1}(undef, KMAX)
S = [-1,1,-1];
Q = Array{Float64,3}(undef, LDQ1, LDQ2, KMAX)
ALPHAR = Array{Float64,1}(undef, NMAX)
ALPHAI = Array{Float64,1}(undef, NMAX)
BETA = Array{Float64,1}(undef, NMAX)
SCAL = Array{BlasInt,1}(undef, NMAX)
IWORK = Array{BlasInt,1}(undef, LIWORK)
DWORK = Array{Float64,1}(undef, LDWORK)
mb03bd!('T','C','I',QIND,3,3,ihess,1,3,S,A,Q,ALPHAR, ALPHAI, BETA, SCAL, LIWORK, LDWORK)
Because the above sequence correctly works under Linux with Julia 1.8, this error should originate from the generation of the SLICOT_jll binary library.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.