2016-02-10 18 views
8

Se comincio con la seguente espressione simbolica:Fattorizza espressione simbolica (piazza di una somma) in MATLAB

a^2 + 2*a*b + b^2 

Poi gestita simplify (o factor), ottengo il risultato atteso:

>> simplify(a^2 + 2*a*b + b^2) 

(a + b)^2 

Ora quando eseguo lo stesso esempio, ma aggiungo un altro termine, non si verifica alcuna fattorizzazione:

>> simplify(a^2 + 2*a*b + b^2 + 1) 

a^2 + 2*a*b + b^2 + 1 

Come posso ottenere queste funzioni per restituire la versione più pratica di questa espressione ((a + b)^2 + 1)? Ho provato tutte le opzioni ovvie con queste funzioni (come 'Steps', 'IgnoreAnalyticConstraints', ecc.) Ma senza successo.

Contesto: ho l'espressione ax^2 - 2*ax*bx + bx^2 + ay^2 - 2*ay*by + by^2 che ho bisogno di convertire nuovamente dentro (ax - bx)^2 + (ay - by)^2 in modo che possa poi essere trattata correttamente come r^2. So che potrei usare alcune regole di sostituzione smussate, ma per qualcosa di così semplice mi sento come se mi mancasse un'ovvia soluzione 'non-hacking'.

+6

si utilizza Mathematica invece ... – bla

+1

Penso che la libreria simbolica Matlab sia un po 'limitata. I calcoli simbolici non sono la forza più grande di Matlab. – patrik

+1

Passa a 'R' e usa' Ryacas'. Non ho trovato nessuno strumento per chiamare 'yacas' da Matlab. –

risposta

1

è possibile eseguire simplify sui due termini separatamente.

simplify(ax^2 - 2*ax*bx + bx^2) + simplify(ay^2 - 2*ay*by + by^2) 

Sembra che tu sappia già come dovrebbe essere semplificato in ogni caso.

Inoltre, si desidera eventualmente scriverlo come r^2. Questo non è generalmente possibile per tutte le espressioni di secondo ordine, quindi non preoccuparti di cercare una soluzione generale.

Problemi correlati