You are on page 1of 14

clc

clear all
%%%%%%%%% informacoes importantes
% spy(A) (Matriz de rigidez de 1 elemento
% spy(KG) (Matriz de rigidez global)

%%%%%%%%%%%%%%%%%%%%% INICIO DOS DADOS DE ENTRADA %%%%%%%%%%%%%%


%%%% NUMERO DE ELEMENTOS (DEVE SER PAR)
n_elem=6
%%%% Tamanho total da viga "L_viga"
L_viga=1
%%%% Tamanho de cada elemento "L"
L=L_viga/n_elem
%%%%%%%%% Ordem da expansao do caos
ordem_caos=3
%%%%%%%%% Modulos de rigidez
kp=1000
kw=1000
E=210000000000;
%mu_E=210000000000;
%des_E=mu_E/10;
%alt=1/50;
mu_alt=1/50;
des_alt=mu_alt/10;
%des_alt=0

syms t1 t2 t3 t4
syms x
alt=mu_alt+des_alt*((3)^(1/2))*(t1*cos(x/(1*L))+t2*sin(x/(1*L))+t3*cos(x/(2*L))+
t4*sin(x/(2*L)))
base=1/100
I=(base*alt^3)/12
%Carga distribuida
q=1000;
%%%%%%%%%%%%%%%%%%%%%

FIM DOS DADOS DE ENTRADA %%%%%%%%%%%%%%%

t_inicial=cputime;

%%%%%%%%%%%%%%%% Construcao dos polinomios multidimensionais do caos de ordem <=


ordem_caos
%v.as t1, t2, t3, t4 (definidas no intervalo (-1,1)
% polinomios de Legendre (definidos no intervalo (-1,1)
%h(p,s) o polinomio univariado de ordem (p-1) na variavel s
%Observao:
%h(1,.) uma funcao par (ordem zero, cte 0 )
%h(2,.) uma funcao impar (ordem 1)
%h(3,.) uma funcao par (ordem 2)
%h(4,.) uma funcao impar (ordem 3)

h(1,1)=sym((2^(1/2))*((2*0+1)/2)^(1/2))*1
h(2,1)=sym((2^(1/2))*((2*1+1)/2)^(1/2))*t1
h(3,1)=sym((2^(1/2))*((2*2+1)/2)^(1/2))*(1/2)*(3*t1^2-1)
h(4,1)=sym((2^(1/2))*((2*3+1)/2)^(1/2))*(1/2)*(5*t1^3-3*t1)
h(5,1)=sym((2^(1/2))*((2*4+1)/2)^(1/2))*(1/8)*(35*t1^4-30*t1^2+3)
h(1,2)=sym((2^(1/2))*((2*0+1)/2)^(1/2))*1
h(2,2)=sym((2^(1/2))*((2*1+1)/2)^(1/2))*t2
h(3,2)=sym((2^(1/2))*((2*2+1)/2)^(1/2))*(1/2)*(3*t2^2-1)
h(4,2)=sym((2^(1/2))*((2*3+1)/2)^(1/2))*(1/2)*(5*t2^3-3*t2)
h(5,2)=sym((2^(1/2))*((2*4+1)/2)^(1/2))*(1/8)*(35*t2^4-30*t2^2+3)
h(1,3)=sym((2^(1/2))*((2*0+1)/2)^(1/2))*1
h(2,3)=sym((2^(1/2))*((2*1+1)/2)^(1/2))*t3
h(3,3)=sym((2^(1/2))*((2*2+1)/2)^(1/2))*(1/2)*(3*t3^2-1)
h(4,3)=sym((2^(1/2))*((2*3+1)/2)^(1/2))*(1/2)*(5*t3^3-3*t3)
h(5,3)=sym((2^(1/2))*((2*4+1)/2)^(1/2))*(1/8)*(35*t3^4-30*t3^2+3)
h(1,4)=sym((2^(1/2))*((2*0+1)/2)^(1/2))*1
h(2,4)=sym((2^(1/2))*((2*1+1)/2)^(1/2))*t4
h(3,4)=sym((2^(1/2))*((2*2+1)/2)^(1/2))*(1/2)*(3*t4^2-1)
h(4,4)=sym((2^(1/2))*((2*3+1)/2)^(1/2))*(1/2)*(5*t4^3-3*t4)
h(5,4)=sym((2^(1/2))*((2*4+1)/2)^(1/2))*(1/8)*(35*t4^4-30*t4^2+3)

%%%%POLINOMIOS DE LEGENDRE MULTIPLICADOS POR 2^1/2 PARA AS FUNES SEREM ORTOGONAIS


FUNCAO PESO 1/(B-A)=1/(1--1)=1/2
%H(p,x,y,z) o polinomio multivariado. A ordem de cada polinomio univariado (p-1)

, (x-1), etc.
i=0
for i1=1:5
for i2=1:5
for i3=1:5
for i4=1:5
if((i1-1)+(i2-1)+(i3-1)+(i4-1)<=ordem_caos)
i=i+1;
H_ordem_caos(i)=(i1-1)+(i2-1)+(i3-1)+(i4
-1);
H(i)=h(i1,1)*h(i2,2)*h(i3,3)*h(i4,4);
end
end
end
end
end
dim_caos=i

%%%%%%%%%%%%%%%%%%%%%% Funcoes da base do dominio espacial Pol Hermite (Ver li


vro cook e Pasternak FEM Teodoru)
%Tamanho do elemento (todos iguais)

dim_det=4
phi(1)=1-3*(x^2)/(L^2)+2*(x^3)/(L^3)
phi(2)=x-2*(x^2)/L+(x^3)/(L^2)
phi(3)=3*(x^2)/(L^2)-2*(x^3)/(L^3)
phi(4)=-(x^2)/L+(x^3)/(L^2)
j=0
for j1=1:dim_det
for j2=1:dim_caos
j=j+1
delta_ordem_caos(j)=1*H_ordem_caos(j2);
delta(j)=phi(j1)*H(j2);
delta_aux(j)=1*H(j2);
end
end

%%%%%%%%%% INICIO DAS ROTINAS DE SIMPLIFICACAO DA MATRIZ DE RIGIDEZ ESPARSA

dim=dim_caos*dim_det
for i=1:dim
for j=1:dim
delta_delta_ordem_caos(i,j)=delta_ordem_caos(i)+delta_ordem_caos
(j);

end
end
%ordem das funcoes apos multiplicacao pelas funcao de 1o grau que define E
for i=1:dim
for j=1:dim
delta_delta_ordem_caos_E(i,j)=delta_ordem_caos(i)+delta_ordem_ca
os(j)+1;
end
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%555
i=0
for i1=1:5
for i2=1:5
for i3=1:5
for i4=1:5
if((i1-1)+(i2-1)+(i3-1)+(i4-1)<=ordem_caos)
i=i+1;
H_ordem_caos_i1(i)=(i1-1);
H_ordem_caos_i2(i)=(i2-1);
H_ordem_caos_i3(i)=(i3-1);
H_ordem_caos_i4(i)=(i4-1);
end
end
end
end
end

j=0
for j1=1:dim_det
for j2=1:dim_caos
j=j+1
delta_ordem_caos_i1(j)=1*H_ordem_caos_i1(j2);
delta_ordem_caos_i2(j)=1*H_ordem_caos_i2(j2);
delta_ordem_caos_i3(j)=1*H_ordem_caos_i3(j2);
delta_ordem_caos_i4(j)=1*H_ordem_caos_i4(j2);
end
end

for i=1:dim
for j=1:dim
delta_delta_ordem_caos_i1(i,j)=delta_ordem_caos_i1(i)+delta_orde
m_caos_i1(j);
delta_delta_ordem_caos_i2(i,j)=delta_ordem_caos_i2(i)+delta_orde
m_caos_i2(j);
delta_delta_ordem_caos_i3(i,j)=delta_ordem_caos_i3(i)+delta_orde
m_caos_i3(j);
delta_delta_ordem_caos_i4(i,j)=delta_ordem_caos_i4(i)+delta_orde

m_caos_i4(j);
end
end
%ordem das funcoes apos multiplicacao pelas funcao de 1o grau que define E
for i=1:dim
for j=1:dim
delta_delta_ordem_caos_E_i1(i,j)=delta_delta_ordem_caos_i1(i,j)+
1;
delta_delta_ordem_caos_E_i2(i,j)=delta_delta_ordem_caos_i2(i,j)+
1;
delta_delta_ordem_caos_E_i3(i,j)=delta_delta_ordem_caos_i3(i,j)+
1;
delta_delta_ordem_caos_E_i4(i,j)=delta_delta_ordem_caos_i4(i,j)+
1;
end
end
%%%%%%%%%%%%%%%ZERANDO FUNCOES IMPARES
matriz1=zeros(dim,dim);
matriz2=zeros(dim,dim);
matriz3=zeros(dim,dim);
matriz4=zeros(dim,dim);
matriz5=zeros(dim,dim);

for j=1:dim
for i=1:dim
if((mod(delta_delta_ordem_caos_E_i1(i,j),2)==0)&(mod(delta_delta
_ordem_caos_i2(i,j),2)==0)&(mod(delta_delta_ordem_caos_i3(i,j),2)==0)&(mod(delta
_delta_ordem_caos_i4(i,j),2)==0))
matriz1(i,j)=1;
else
matriz1(i,j)=0;
end
end
end
for j=1:dim
for i=1:dim
if((mod(delta_delta_ordem_caos_i1(i,j),2)==0)&(mod(delta_delta_o
rdem_caos_E_i2(i,j),2)==0)&(mod(delta_delta_ordem_caos_i3(i,j),2)==0)&(mod(delta
_delta_ordem_caos_i4(i,j),2)==0))
matriz2(i,j)=1;
else
matriz2(i,j)=0;
end
end
end

for j=1:dim
for i=1:dim
%if(int(delta_aux(i),t1,-1,1)==0|int(delta_aux(j),-1,1)==0)
%
matriz3(i,j)=0;
%
else
if((mod(delta_delta_ordem_caos_i1(i,j),2)==0)&(mod(delta
_delta_ordem_caos_i2(i,j),2)==0)&(mod(delta_delta_ordem_caos_E_i3(i,j),2)==0)&(m
od(delta_delta_ordem_caos_i4(i,j),2)==0))
matriz3(i,j)=1;
else
matriz3(i,j)=0;
end
%
end
end
end
for j=1:dim
for i=1:dim
if((mod(delta_delta_ordem_caos_i1(i,j),2)==0)&(mod(delta_delta_o
rdem_caos_i2(i,j),2)==0)&(mod(delta_delta_ordem_caos_i3(i,j),2)==0)&(mod(delta_d
elta_ordem_caos_E_i4(i,j),2)==0))
matriz4(i,j)=1;
else
matriz4(i,j)=0;
end
end
end

%matriz5=matriz1+matriz2+matriz3+matriz4

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ZERANDO funcoes da base q


so funcoes exclusivamente de v.as diferentes.
j=0
for j1=1:dim_det
for j2=1:dim_caos
j=j+1
delta_ordem_caos_vas(j,1)=1*H_ordem_caos_i1(j2);
delta_ordem_caos_vas(j,2)=1*H_ordem_caos_i2(j2);
delta_ordem_caos_vas(j,3)=1*H_ordem_caos_i3(j2);
delta_ordem_caos_vas(j,4)=1*H_ordem_caos_i4(j2);
end
end
nvas=4;
for j=1:dim
for i=1:dim
matriz5(i,j)=1;
chave1=0;
chave2=0;
chave3=0;
posicao_i=zeros(nvas);
posicao_j=zeros(nvas);
for va=1:nvas

if(delta_ordem_caos_vas(i,va)>0)
posicao_i(va)=1;
chave1=1;
end
if(delta_ordem_caos_vas(j,va)>0)
posicao_j(va)=1;
chave2=1;
end
if((posicao_i(va)==1)&(posicao_j(va)==1))
chave3=1;
end
end
if((chave3==0)&((chave1==1)&(chave2==1)))
matriz5(i,j)=0;
end
end
end

%spy(matriz5)

%%%%%%%%%%%%%%zerando demais componentes atraves do padro geometrico do caos


%%%%%%%%%%1o - calculando apenas componentes da diagonal e acima para o 1o padro
Ne=0;
c=0;
for j=1:dim_caos
Ne=Ne+1;
for i=1:Ne
c=c+1
if(matriz5(i,j)==1)
KV_T(i,j)=int((1/2)*int((1/2)*int((1/2)*int((1/2)*E*I*H(
i)*H(j),t1,-1,1),t2,-1,1),t3,-1,1),t4,-1,1);
else
KV_T(i,j)=0;
end
end
end

%%%%%%%%%%%copiando a matriz diagonal


Ne=0;
C2=0;
for j=1:dim_caos
Ne=Ne+1;
for i=1:Ne
C2=C2+1
KV_T(j,i)=KV_T(i,j);
end
end

KV=zeros(dim,dim);
KP=zeros(dim,dim);
KW=zeros(dim,dim);
%%%%%%%%%%%%%%zerando demais componentes atraves do padro geometrico do caos
%%%%%%%%%%1o - calculando apenas componentes da diagonal e acima para o 1o padro
Ne2=0
Ne=0;
c=0;
for n1=1:1
for n2=1:1
for j=1:dim_caos
Ne=Ne+1;
for i=1:dim_caos
c=c+1
%if(matriz5(i,j)==1)
KV(dim_caos*(n1-1)+i,dim_caos*(n2-1)+j)=
double(int(KV_T(i,j)*diff(diff(phi(n1),x),x)*diff(diff(phi(n2),x),x),x,0,L));
%
else
%
KV(dim_caos*(n1-1)+i,dim_caos*(n2-1)+j)=
0;
%
end
end
end
end
end

%%%%%%%%%%%%%%%%%%20 - Copiando o padro para a matriz 'binaria' matriz5


for i=1:dim_caos
for j=1:dim_caos
if(KV(i,j)~=0)
matriz5(i,j)=1;
else
matriz5(i,j)=0;
end
end
end

%%%%%%%%%%%%%%%%%%20 - Replicando o padro na matriz 'binaria' matriz5


for i=1:dim
for j=1:dim
auxiliar_i=mod(i,dim_caos);
auxiliar_j=mod(j,dim_caos);

if(auxiliar_i==0)
auxiliar_i=dim_caos;
end
if(auxiliar_j==0)
auxiliar_j=dim_caos;
end
matriz5(i,j)=matriz5(auxiliar_i,auxiliar_j);
end
end

%spy(matriz5)
Ne2=0
Ne=0;
c=0;
for n1=1:4
for n2=1:4
if((n1>1)|(n2>1))
for j=1:dim_caos
Ne=Ne+1;
for i=1:dim_caos
c=c+1
if(matriz5(i,j)==1)
KV(dim_caos*(n1-1)+i,dim_caos*(n2-1)+j)=
double(int(KV_T(i,j)*diff(diff(phi(n1),x),x)*diff(diff(phi(n2),x),x),x,0,L));
else
KV(dim_caos*(n1-1)+i,dim_caos*(n2-1)+j)=
0;
end
end
end
end
end
end

Ne=0;
C=0;
for j=1:dim
Ne=Ne+1;
for i=1:Ne
C=C+1
if(mod(i,dim_caos)==mod(j,dim_caos))
KP(i,j)= double(int((1/2)*int((1/2)*int((1/2)*int((1/2)*
int(kp*diff(delta(i),x)*diff(delta(j),x),x,0,L),t1,-1,1),t2,-1,1),t3,-1,1),t4,-1
,1));
KW(i,j)= double(int((1/2)*int((1/2)*int((1/2)*int((1/2)*
int(kw*delta(i)*delta(j),x,0,L),t1,-1,1),t2,-1,1),t3,-1,1),t4,-1,1));
else
KP(i,j)=0;
KW(i,j)=0;
end

end
end
Ne=0;
C2=0;
for j=1:dim
Ne=Ne+1;
for i=1:Ne
C2=C2+1
%KV(j,i)=KV(i,j);
KP(j,i)=KP(i,j);
KW(j,i)=KW(i,j);
end
end

A=KW+KP+KV;

%%%%%%%%%%%%%%%%%
sobreposicao de matrizes n_elem vigas
%%%%%%%%%%%%%%%%%%%%%
KGdim=dim+(n_elem-1)*dim/2;

%%%%%%%%%%%%%%%%%%%

KG=zeros(KGdim,KGdim);
contador=0
for N=1:n_elem
for i=1:dim
for j=1:dim
contador=contador+1
KG(i+(N-1)*dim/2,j+(N-1)*dim/2)=KG(i+(N-1)*dim/2,j+(N-1)
*dim/2)+A(i,j);
end
end
end

%%%%%%%%%%%%%% Condicoes de contorno %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%Graus de liberdade
NGL = 4+(n_elem-1)*2

%%%%%Valores impares dos GL so deslocamentos e pares so rotacoes (1=u1, 2=theta1,


...)
for i=1:NGL
gl(i)=1;
end
%%%%%Graus de liberdade Fixos (biapoiada)
gl(1)=0;
gl(NGL-1)=0;
%Variavel auxiliar binaria
for i=1:KGdim
desloc(i)=1;
end
for i=1:NGL
if(gl(i)==0)
for j=1:dim_caos
desloc(j+(i-1)*dim_caos)=0;
end
end
end

contador_i=0
contador_j=0
for i=1:KGdim
if(desloc(i)==1)
contador_i=contador_i+1
contador_j=0
for j=1:KGdim
if(desloc(j)==1)
contador_j=contador_j+1
KG_CC(contador_i,contador_j)=KG(i,j);
end
end
end
end
KG_CC;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%

%calculo para um elemento


contador2=0
for j=1:dim
contador2=contador2+1

Carregamentos (vetor completo)

%%%%%%%%%%%%%%

f(j,1)=double(int((1/2)*int((1/2)*int((1/2)*int((1/2)*int(q*delta(j),x,0
,L),t1,-1,1),t2,-1,1),t3,-1,1),t4,-1,1));
end
%montagem do vetor global para 'n_elem' elementos horizontais e iguais
fG=zeros(KGdim,1)
contador=0;
for N=1:n_elem
for i=1:dim
contador=contador+1
fG(i+(N-1)*dim/2,1)=fG(i+(N-1)*dim/2,1)+f(i,1);
end
end

%formacao do vetor com os carregamentos correspondentes aos deslocamentos a dete


rminar
contador_j=0;
for j=1:KGdim
if(desloc(j)==1)
contador_j=contador_j+1
fG_CC(contador_j,1)=fG(j,1);
end
end

%Calculo dos 'deslocamentos estocasticos


uG_CC=KG_CC\fG_CC
%Deslocamento estocastico nos ns nao fixos
for N=1:(n_elem-1)
u_omega(N)=sym(0);
end
for N=1:(n_elem-1)
for j=1:dim_caos
u_omega(N)=u_omega(N)+uG_CC(dim_caos*(2*N-1)+j)*H(j);
end
end
%media de deslocamento no CENTRO DO VAO (NUMERO PAR DE ELEMENTOS)
%O fator (1/2)* dentro de cada integral de v.a a funo densidade de probabilidade d
a v.a 1/(b-a)=1/2
format long
for N=1:(n_elem-1)

media_u(N)=double(int((1/2)*int((1/2)*int((1/2)*int((1/2)*u_omega(N),t1,
-1,1),t2,-1,1),t3,-1,1),t4,-1,1));
var_u(N)=double(int((1/2)*int((1/2)*int((1/2)*int((1/2)*(u_omega(N)^2),t
1,-1,1),t2,-1,1),t3,-1,1),t4,-1,1)-(int((1/2)*int((1/2)*int((1/2)*int((1/2)*u_om
ega(N),t1,-1,1),t2,-1,1),t3,-1,1),t4,-1,1))^2);
end
u_x_medio=zeros(1,n_elem+1)
var_x=zeros(1,n_elem+1)
pos_x=zeros(1,n_elem+1)
for N=1:(n_elem-1)
u_x_medio(1+N)=media_u(N);
var_u_x(1+N)=var_u(N);
pos_x(1+N)=N
end
u_x_medio
var_u_x
plot(u_x_medio)
duracao_seg=cputime-t_inicial

%A funcao FDP da formulacao do Caos eh obtida por amostragem fazendo relizacoes


das v.a.s, para calcular o desloc. Depois usa-se o comando hist( ) novamente.
%Resultado copiado da variavel u_omega(3)
clear
clear
clear
clear

t1
t2
t3
t4

T_Amostra=50000
u_centro_amostragem=zeros(T_Amostra,1)
for Realizacao=1:T_Amostra
Realizacao
t1= -1 + (1-(-1)).*rand;
t2= -1 + (1-(-1)).*rand;
t3= -1 + (1-(-1)).*rand;
t4= -1 + (1-(-1)).*rand;
u_omega_centro=-5943178899733735/590295810358705651712*5^(1/2)*(3*t2^2-1
)*3^(1/2)*t4-7251316398890237/295147905179352825856*5^(1/2)*(3*t2^2-1)*3^(1/2)*t
3-5525049003315651/295147905179352825856*3^(1/2)*t1*5^(1/2)*(3*t2^2-1)-325225576
7738153/2305843009213693952*3^(1/2)*t2+2413090465682013/4611686018427387904*t2*t
4-6267013763693213/1180591620717411303424*7^(1/2)*(5*t2^3-3*t2)+1320366754035573
3/9223372036854775808*t2*t3-5763955051232893/2305843009213693952*3^(1/2)*t1+3258
659029146449/18446744073709551616*5^(1/2)*(3*t1^2-1)+5221822558175767/7378697629
4838206464*5^(1/2)*(3*t2^2-1)+3169130470682203/147573952589676412928*5^(1/2)*(3*
t4^2-1)+23373451309071855/36893488147419103232*t1*t4-2128110680775695/2951479051
79352825856*3^(1/2)*t3*5^(1/2)*(3*t4^2-1)+14298543807877917/18446744073709551616
*t3*t4+4076207180779449/18446744073709551616*5^(1/2)*(3*t3^2-1)-2469521366802163
/147573952589676412928*7^(1/2)*(5*t1^3-3*t1)-1618958074254775/295147905179352825

856*3^(1/2)*t1*5^(1/2)*(3*t4^2-1)-3255343312712859/590295810358705651712*3^(1/2)
*t2*5^(1/2)*(3*t4^2-1)-5761407557783479/295147905179352825856*5^(1/2)*(3*t3^2-1)
*3^(1/2)*t4-8010441812731251/36893488147419103232*t1*t3*3^(1/2)*t4-1336327746667
8891/73786976294838206464*t2*t3*3^(1/2)*t4-2725049138152365/73786976294838206464
*3^(1/2)*t2*5^(1/2)*(3*t3^2-1)-5344214632183471/73786976294838206464*3^(1/2)*t1*
5^(1/2)*(3*t3^2-1)-158896692839073/1152921504606846976*t1*t2*3^(1/2)*t4-67129646
62487089/295147905179352825856*7^(1/2)*(5*t3^3-3*t3)-7618412474244843/1844674407
3709551616*t1*t2*3^(1/2)*t3-7501148163619943/590295810358705651712*5^(1/2)*(3*t1
^2-1)*3^(1/2)*t4-4836338013127535/73786976294838206464*5^(1/2)*(3*t1^2-1)*3^(1/2
)*t3+21703950287179761/18446744073709551616*t1*t2-7171113245739503/2951479051793
52825856*5^(1/2)*(3*t1^2-1)*3^(1/2)*t2-3553274896895281/4611686018427387904*3^(1
/2)*t4-4077751658560439/4722366482869645213696*7^(1/2)*(5*t4^3-3*t4)+24242692961
131131/9223372036854775808*t1*t3-6489303139895935/2305843009213693952*3^(1/2)*t3
+2785871383741797/288230376151711744;
u_centro_amostragem(Realizacao)=-u_omega_centro;
end
hist(u_centro_amostragem)
cdfplot(u_centro_amostragem)

You might also like