Dúvida com o Octave [RESOLVIDO]

1. Dúvida com o Octave [RESOLVIDO]

Fabrício
fabbaraujo

(usa Debian)

Enviado em 02/03/2012 - 11:34h

Bom dia,

Sou iniciante no Octave e preciso fazer um trabalho da faculdade que consiste em, transcrever uma sub-rotina que está desenvolvida em FORTRAN77 para um script ".m".

Segue o código em FORTRAN77:

SUBROUTINE BILIN(DER, FUN, SAMP, ISAMP, I, J)

REAL DER(2,4),FUN(4),SAMP(ISAMP,2)
ETA = SAMP(I,1)
XI = SAMP(J,1)
ETAM = .25* (1.-ETA)
ETAP = .25* (1.+ETA)
XIM = .25* (1.-XI)
SIP = .25* (1.+XI)
FUN(1) = 4.*XIM*ETAM
FUN(2) = 4.*XIM*ETAP
FUN(3) = 4.*XIP*ETAP
FUN(4) = 4.*XIP*ETAM
DER(1,1) = -ETAM
DER(1,2) = -ETAP
DER(1,3) = ETAP
DER(1,4) = ETAM
DER(2,1) = -XIM
DER(2,2) = XIM
DER(2,3) = XIP
DER(2,4) = -XIP
RETURN
END

Se alguém souber e puder me ajudar.
Muito obrigado de qualquer forma


  


2. MELHOR RESPOSTA

Valdelírio da Silva e Silva
valdelirio

(usa Ubuntu)

Enviado em 05/03/2012 - 15:34h

Olá!
Eu escrevi em matlab, que é semelhante a octave. Espero que ajude.
Primeiro seu código foi escrito como uma função (function) .m, com duas saídas, a matriz Der e o vetor fun. Segue abaixo tal function:

function [Der,fun]=bilin(samp,i,j)
Der=zeros(2,4);
fun=zeros(4,1);
eta=samp(i,1);
xi=samp(j,1);
etam=0.25*(1-eta);
etap=0.25*(1+eta);
xim=0.25*(1-xi);
xip=0.25*(1+xi);
fun(1)=4*xim*etam;
fun(2)=4*xim*etap;
fun(3)=4*xip*etap;
fun(4)=4*xip*etam;
Der(1,1)=-etam;
Der(1,2)=-etap;
Der(1,3)=etap;
Der(1,4)=etam;
Der(2,1)=-xim;
Der(2,2)=xim;
Der(2,3)=xip;
Der(2,4)=-xip;

Salve-a em alguma pasta, eu a salvei com o nome bilin.m. Depois para usá-la você deve entrar no workspace, direcionar a pasta gravada que esta gravada a function e criar as variáveis de entrada, que nesse caso são samp, i e j. A variável samp me pareceu ser um vetor-coluna e i e j são inteiros que não ultrapassam o número de linhas de samp. Abaixo está um exemplo (os comandos estão após o prompt >>):

>> samp=[2;4];i=1;j=2;
>> [A,B]=bilin(samp,i,j)

você terá como resposta:

A =

0.2500 -0.7500 0.7500 -0.2500
0.7500 -0.7500 1.2500 -1.2500


B =

0.7500
-2.2500
3.7500
-1.2500

Nesse caso A é a matriz Der e B é o vetor fun.

Qualquer dúvida pode escrever.
Abraço

4. Re: Dúvida com o Octave [RESOLVIDO]

Valdelírio da Silva e Silva
valdelirio

(usa Ubuntu)

Enviado em 03/03/2012 - 16:43h

Se você souber o que essa subrotina faz seria bem mais fácil ajudar ou o que é cada entrada da subrotina; por exemplo, o que é isamp?

Caso você já tenha conseguido favor desconsidere minha opnião.


5. Re: Dúvida com o Octave [RESOLVIDO]

Fabrício
fabbaraujo

(usa Debian)

Enviado em 05/03/2012 - 08:39h

Pelo que entendi, ela faz cálculos de transformação em/de quadriláteros. Esses parâmetros, como o ISAMP, eu não sei dizer ao certo a que valor se refere.


6. Re: Dúvida com o Octave [RESOLVIDO]

Fabrício
fabbaraujo

(usa Debian)

Enviado em 07/03/2012 - 12:17h

Entendi, muito bacana cara. Fiz os testes aqui e funcionou sim.
Com base nessa sua solução, vou tentar transcrever para ".m", o método de Cholesky.

Muito obrigado a todos!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts