using LinearAlgebra
using SymPy
@vars x
p=x^9-18x^8+144x^7-672x^6+2016x^5-4032x^4+5376x^3-4608x^2+2304x-512
p1=diff(p,x)
x0=1.5
X=factor(x-p//p1)
k=1
while k<60
global k+=1
global x0
xk=X(x=>x0)
deta=xk-x0
print("xk = $xk; x0 = $x0 ; k = $k ; prec = $deta \n")
x0=xk
end
输出结果位数比较多,尤其当我用big类型时位数更多,请问有没有类似C或GO语言控制输出有效数字的那种格式或函数??
import Printf.@printf
@printf "%.2f" 2.222" ;2.22
这样?
谢谢!!
请问如何设置打印输出矩阵,使矩阵的每一个元素都保持给定的有效数字输出呢?
可以这样,定义一个函数format_print(fmt,num) = @printf(fmt,num)
,
然后foreach(format_print,matrix)
,但是定义函数的时候我遇到了点问题,我需要去问一问
julia> format(fmt,num) = @printf(fmt,num)
ERROR: LoadError: ArgumentError: @printf: first or second argument must be a format string
Stacktrace:
[1] @printf(::LineNumberNode, ::Module, ::Symbol, ::Vararg{Any,N} where N) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.3/Printf/src/Printf.jl:41
in expression starting at REPL[39]:1
你这个是保留两位小数吧,只是保留几位小数的话,用 round
就是了。比如
println(round.(A,digits=3))
但是要保留几位有效数字的话,也许需要写一个自定义的打印函数,因为对于某些数需要使用科学计数法。
1 个赞
对于矩阵或数组的格式化输出,我刚刚学到了一招,使用PrettyTables这个包,结果看起来还是不错的