Jump to content
Sign in to follow this  
joaopffg

Função sym em Matlab

Recommended Posts

joaopffg

Bons dias

Estou a fazer um projecto de mecânica computacional e tenho de criar um vector (vector dos deslocamentos) composto por variaveis. Vi em tutoriais que o melhor a fazer era criar um vector usando sym (por ex: A = sym('A', [3 4])) mas dá sempre erro. Alguém me poderia indicar uma alternativa. Obrigado

Share this post


Link to post
Share on other sites
pedrosorio

Bons dias

Estou a fazer um projecto de mecânica computacional e tenho de criar um vector (vector dos deslocamentos) composto por variaveis. Vi em tutoriais que o melhor a fazer era criar um vector usando sym (por ex: A = sym('A', [3 4])) mas dá sempre erro. Alguém me poderia indicar uma alternativa. Obrigado

Tinha ideia que em mecânica computacional era mais comum resolver sistemas de equações numericamente e não usar variáveis simbólicas. O mais provável é estares a usar uma versão do MATLAB anterior à actual (já que na documentação do site MathWorks essa forma é válida). Por exemplo, no MATLAB que estou a usar (7.7.0), essa forma não é válida.

De qualquer forma, isso criaria uma matriz 3x4 e não um vector, como pretendes.


Não respondo a dúvidas por mensagem.

Share this post


Link to post
Share on other sites
joaopffg

o meu é o 7.7.0. Vo tentar arranjar um mais recente então.

O que queria fazer era o calculo dos deslocamentos dos nós e as reacçoes nos suportes de uma ponte, e tenho a matriz rigidez (K) a multiplicar pelo vector de cargas e a dar as forças aplicadas (também vector). Tanto o vector das cargas como o das forças são constituidos por incognitas. Eu não sei se o sym é o mais correcto a usar para a construção destes vectores mas pelo que vi parece o mais adequado. Como faria esta conta sem usar o sym??

p.s: eu sei que A = sym('A', [3 4]) vai criar uma matriz, era so para dar um exemplo  :cheesygrin:

Share this post


Link to post
Share on other sites
pedrosorio

o meu é o 7.7.0. Vo tentar arranjar um mais recente então.

O que queria fazer era o calculo dos deslocamentos dos nós e as reacçoes nos suportes de uma ponte, e tenho a matriz rigidez (K) a multiplicar pelo vector de cargas e a dar as forças aplicadas (também vector). Tanto o vector das cargas como o das forças são constituidos por incognitas. Eu não sei se o sym é o mais correcto a usar para a construção destes vectores mas pelo que vi parece o mais adequado. Como faria esta conta sem usar o sym??

p.s: eu sei que A = sym('A', [3 4]) vai criar uma matriz, era so para dar um exemplo  :cheesygrin:

A matriz de rigidez multiplica pelo vector de deslocamentos (e não de cargas), não é? Se bem me lembro, aquilo que fazia "no meu tempo", era resolver primeiro sub-sistemas que contivessem apenas os deslocamentos desconhecidos (construindo uma submatriz com todos os elementos que mutliplicam os deslocamentos desconhecidos e igualando a cargas/forças conhecidas) e depois de saber todos os deslocamentos multiplicava K pelo vector de deslocamentos (que agora é um vector conhecido) para obter as cargas/forças.


Não respondo a dúvidas por mensagem.

Share this post


Link to post
Share on other sites
joaopffg

Desculpa, enganei-me, é a matriz rigidez * vec_deslocamentos = vec_cargas (forças aplicadas + reacçoes). O meu problema é que mesmo que queira achar os deslocamentos desconhecidos primeiro, tenho de fazer uma multiplicaçao de parte da matriz rigidez por parte do vector com descolamentos desconhecidos. Eu pensei em criar este vector das cargas com um vector criado por sym. Isto pode ter uma soluçao simples mas nunca tive aulas de matlab (a parte de programação de aero do ist so da c).

Share this post


Link to post
Share on other sites
pedrosorio

Desculpa, enganei-me, é a matriz rigidez * vec_deslocamentos = vec_cargas (forças aplicadas + reacçoes). O meu problema é que mesmo que queira achar os deslocamentos desconhecidos primeiro, tenho de fazer uma multiplicaçao de parte da matriz rigidez por parte do vector com descolamentos desconhecidos. Eu pensei em criar este vector das cargas com um vector criado por sym. Isto pode ter uma soluçao simples mas nunca tive aulas de matlab (a parte de programação de aero do ist so da c).

Sim, eu sei. Sou de MEBiom do IST e também nunca aprendi MATLAB "formalmente". É daquelas coisas que eles esperam que aprendas "com a prática". Eu percebo perfeitamente a tua ideia, que é ter Ax = b em que x e b têm algumas incógnitas, e deixar que "o MATLAB resolva", e acredito que seja possível, mas nunca usei computação simbólica do MATLAB. De qualquer forma, podes fazer isso de forma numérica, da forma como disse. Exemplo:

[A11 A12 A13] [x1] = [ s ]

[A21 A22 A23] [ p ] = [b2]

[A31 A32 A33] [ r ]  = [b3]

As tuas incógnitas são p,r,s e o resto são valores conhecidos. Como queremos achar primeiro os deslocamentos desconhecidos, vamos ignorar todas as cargas desconhecidas. Neste caso, s é uma carga desconhecida portanto a primeira linha da matriz A não é utilizada (no caso geral ignoras todas as linhas que correspondam a variáveis no vector de cargas).

ficas portanto com o sistema:

[A21 A22 A23] [ x1 ] = [b2]

[A31 A32 A33] [ p ]  = [b3]

                        [ r ]

Como x1 é um deslocamento conhecido, a primeira coluna é multiplicada directamente por ele e soma-se ao resto do sistema (no caso geral, todas as colunas com deslocamento conhecido são multiplicadas por esses deslocamentos e somadas ao resto do sistema), fica portanto:

x1 * [A21] + [A22 A23] [ p ] = [b2]

        [A22]    [A32 A33] [ r ]  = [b3]

Passas o primeiro termo (que é um número conhecido) para o outro lado, e ficas com uma equação matricial 2x2 que o MATLAB resolve sem problemas, achando assim p,r. Depois basta-te substituir no x inicial e fazer Ax para calcular a carga que te falta.

       


Não respondo a dúvidas por mensagem.

Share this post


Link to post
Share on other sites
joaopffg

Obrigado pela explicação :cheesygrin:.

Vo tentar criar uma função que calcule os deslocamentos e as cargas dessa maneira. Obrigadão mesmo.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.