La commande size de matlab

Bonjour,

Quelqu'un aurait il une explication à ce curieux phénomène ?
On dirait que pour Matlab 2021a, on a $1=3$.
clear all, clc

syms a1 a2 x real

Pol(x)=(x-a1)*(x-a2);
P=coeffs(Pol,x,'All');
P
S1=size(P)
S2=size([1, - a1 - a2, a1*a2])
qui me répond:
P(x) =[1, - a1 - a2, a1*a2]
S1 =     1     1
S2 =     1     3

Cordialement,

Rescassol

Réponses

  • Bonjour.

    Essaie ceci :
    [P, T]=coeffs(Pol,x,'All')
    

    Tu verras quelle figure ont les termes renvoyés, tu pourrais être surpris.

    À bientôt.

    Cherche livres et objets du domaine mathématique :

    Intégraphes, règles log et calculateurs électromécaniques.

  • Bonjour,
    [P, T]=coeffs(Pol,x,'All')
    
    me répond:
    P(x) =[1, - a1 - a2, a1*a2]
    T(x) =[x^2, x, 1]
    
    Ce qui me paraît normal, sauf que je voudrais que $P$ soit de taille $3$.

    Cordialement,

    Rescassol
  • Et ce P là n'est pas de taille [1, 3] ?

    C'est moi qui suis surpris.

    À bientôt.

    Cherche livres et objets du domaine mathématique :

    Intégraphes, règles log et calculateurs électromécaniques.

  • Bonjour,

    Ben non, toujours $[1 , 1]$. Nous sommes donc deux surpris.
    D'ailleurs $size(T)$ fait aussi $[1 , 1]$.

    Cordialement,

    Rescassol
  • Je pense que la commande
    coeffs(Pol,x,'All')
    
    écrit le polynôme P en base 10 c'est-à-dire que $P=1*10^2+(-a_1-a_2)*10^1+a_1a_2*10^0=[1,-a_1-a_2,a_1a_2]$ avec les puissances qui correspondent aux variables $x,x^2$. Du coup, lorsque la commande size est utilisé on a bien un nombre et pas un vecteur. Ce qui n'est pas le cas en écrivant directement $size([1,-a_1-a_2,a_1a_2])$.

    D'ailleurs, pour définir un polynôme on peut utiliser un vecteur ligne (ou colonne) qui ne nécessite pas la bibliothèque de calcul symbolique. L'addition est facile à faire mais pour la multiplication c'est plus compliquée. En effet, soient $P$ et $Q = ax^2+bx+c$ deux polynômes. Le produit $P*Q$ se définit par:
    $P*Q = P*c + P*b*x + P*a*x^2 = P*c + x*(P*b + x*(P*a))$
    Il suffit donc d'écrire la multiplication d'un polynôme par un scalaire, la multiplication d'un polynôme par le monôme x (qui correspond a la multiplication par 10 pour les nombres classiques) et l'addition de 2 polynômes.
  • Bonjour,

    Problème résolu, ceci fonctionne:
    clear all, clc
    
    syms a1 a2 x real
    
    Pol=(x-a1)*(x-a2);
    P=coeffs(Pol,x,'All');
    P
    S1=size(P)
    S2=size([1, - a1 - a2, a1*a2])
    
    et donne:
    P = [1, - a1 - a2, a1*a2]
    S1 =      1     3
    S2 =      1     3
    
    Il ne fallait pas faire de $P$ une fonction.

    Tatof, j'ai acheté et utilise régulièrement la bibliothèque de calcul symbolique dont je ne peut plus me passer.
    Pour la multiplication, il y a la fonction $\text{conv}$, abréviation de "convolution", et même "quorem" pour la division (quotient et remainder).
    Il n'y a aucun rapport avec la base $10$.
    A la rigueur, on peut interpréter un polynôme come une écriture en base $x$ ou n'importe quelle indéterminée.

    Cordialement,

    Rescassol

    Edit: Qu'est ce que c'est que ce changement de titre avec une faute de frappe ?
Connectez-vous ou Inscrivez-vous pour répondre.