2011-02-24 2 views
3

Я изо всех сил пытаюсь избавиться от выражений, которые тривиально равны нулю в Mathematica с выхода. Пример:Mathematica, leftover zeros

pVec = Table[{i, Exp[-i*0.03]}, {i, 0, 2.5, 1/2}]; 

    pVec[[2, 2]] = p1; 
    pVec[[3, 2]] = p2; 
    pVec[[4, 2]] = p3; 
    pVec[[5, 2]] = p4; 
    pVec[[6, 2]] = p5; 

    qq = Interpolation[pVec, InterpolationOrder -> 1]; 

>> qq[0.5] 
>> 0. (1 - p1) + p1 

0*(1-p1), очевидно, равна нулю, но я не мог найти способ, чтобы избавиться от него? (Я относительно новичок в Mathematica ...) Упрощение didnt работает, N[ ] did not работает FullSimplyfy[ ] также.

Любые советы? Поскольку в большом выражении, использующем эту интерполяцию, эти нулевые выражения накапливаются ... и у меня есть 10-строчный ответ вместо константы.

+1

@Vyautas Я вижу, что у вас уже есть хороший ответ. Я упомянул, что в качестве альтернативы вы можете попытаться собрать эти нули и отправить их в какую-то страну, у которой есть недостаток. Затраты почти ничего не отправляют - нули довольно легкие (некоторые говорят, что они безмассовые, но я не убежден). –

ответ

4

Я думаю, что вам нужна функция Chop.

Из справки: «Chop[expr] заменяет приблизительные вещественные числа в выраж, которые близки к нулю точным целым числом 0»

Например:

[email protected][0.5] 
Chop[0.` (1 - p1) + p1] 

оба дают в качестве вывода:

p1

+0

Спасибо! Именно то, что мне нужно! – Vytautas