cov := {{2, -1/3}, {-1/3, 2/3}};
normal := MultinormalDistribution[{t1, t2}, cov];
(fit[t1_, t2_, x1_, x2_] := PDF[#, {x1, x2}]) & @ normal
fit[0, 0, 0, 1] // N
0.0635204
If you prefer a more automated approach or you cannot have even normal evaluate at the time of defining fit try blockSet from Expressions containing globally undefined symbols inside a function where they are defined
ClearAll[fit]
blockSet[
fit[t1_, t2_, x1_, x2_] := PDF[normal, {x1, x2}]
]
fit[0, 0, 0, 1] // N
0.0635204
The definition that was created:
?fit
fit[t1$535_, t2$536_, x1$537_, x2$538_] :=
Block[{t1 = t1$535, t2 = t2$536, x1 = x1$537, x2 = x2$538},
PDF[normal, {x1, x2}]]
In most cases I would favor anderstood's recommendation of explicit parameter passing however.
normal[t1_, t2_] := ...in the first line andnormal[t1,t2]in the second. – anderstood Mar 07 '17 at 04:00