obliczenia_naukowe/l2/4.jl

62 lines
2 KiB
Julia
Raw Normal View History

2024-11-11 00:40:18 +01:00
#!/usr/bin/env julia
# Jacek Poziemski 272389
import Pkg
Pkg.add("Polynomials")
using Polynomials
coefficients::Vector{Float64} = [1, -210.0, 20615.0,-1256850.0,
53327946.0,-1672280820.0, 40171771630.0, -756111184500.0,
11310276995381.0, -135585182899530.0,
1307535010540395.0, -10142299865511450.0,
63030812099294896.0, -311333643161390640.0,
1206647803780373360.0, -3599979517947607200.0,
8037811822645051776.0, -12870931245150988800.0,
13803759753640704000.0, -8752948036761600000.0,
2432902008176640000.0]
polynomial::Polynomial = Polynomial(reverse(coefficients))
polynomialroots::Vector{Float64} = roots(polynomial)
wilkinson::Polynomial = fromroots(polynomialroots)
println("P(n):")
for k in 1:20
z_k::Float64 = polynomialroots[k]
Pz_k::Float64 = abs(polynomial(z_k))
pz_k::Float64 = abs(wilkinson(z_k))
error::Float64 = abs(z_k - k)
println("k: $k; z_k: $z_k; P(z_k): $Pz_k; p(z_k): $pz_k; error: $error")
end
println()
wilkinsoncoefficients::Vector{Float64} = [1, -210.0 - 2.0^(-23.0), 20615.0,-1256850.0,
53327946.0,-1672280820.0, 40171771630.0, -756111184500.0,
11310276995381.0, -135585182899530.0,
1307535010540395.0, -10142299865511450.0,
63030812099294896.0, -311333643161390640.0,
1206647803780373360.0, -3599979517947607200.0,
8037811822645051776.0, -12870931245150988800.0,
13803759753640704000.0, -8752948036761600000.0,
2432902008176640000.0]
polynomialb::Polynomial = Polynomial(reverse(wilkinsoncoefficients))
polynomialbroots::Vector{ComplexF64} = roots(polynomialb)
wilkinsonb::Polynomial = fromroots(polynomialbroots)
println("p(n):")
for k in 1:20
z_k::ComplexF64 = polynomialbroots[k]
Pz_k::Float64 = abs(polynomialb(z_k))
pz_k::Float64 = abs(wilkinsonb(z_k))
error::Float64 = abs(z_k - k)
println("k: $k; z_k: $z_k; P(z_k): $Pz_k; p(z_k): $pz_k; error: $error")
end