중력 보간 수식의 가중치를 계산하는 함수를 작성했습니다. 형태 안정성을 무시하고, 그 쉬운 충분하다 : 유형 안정성대소 문자 구별이 포함 된 함수의 유형 안정성
function baryweights(x)
n = length(x)
if n == 1; return [1.0]; end # This is obviously not type stable
xmin,xmax = extrema(x)
x *= 4/(xmax-xmin)
#^Multiply by capacity of interval to avoid overflow
return [
1/prod(x[i]-x[j] for j in 1:n if j != i)
for i = 1:n
]
end
문제는 그래서는 n == 1
경우에 올바른 유형의 배열을 반환 할 수 n > 1
가지 경우 반환 형식을 해결하는 것입니다. 이것을 달성하기위한 쉬운 트릭이 있습니까?
무엇 기대되는 결과인가? 왜냐하면'baryweights ([1,2,3]) '를 호출하면 매개 변수가'Array {Int}'이고 결과는'Array {Float64}'입니다! 정말로 당신이 지적하고있는 문제입니까? – Liso
네, 그게 바람직합니다. 나는 반환 값의 타입을'n> 1'이 반환하는 값과 같게하고 싶습니다만,'n == 1 '을 포함하여'n = 1'의 값이면됩니다. – gTcV
하지만 유스 케이스 란 무엇입니까? 나는 복소수를 시도했지만'extrema' 함수로는 작동하지 않습니다. 형식이 예상과 다른 경우 몇 가지 예를 보여줄 수 있습니까? – Liso