Projeto de Calculo numerico
Por: iagodoido • 6/3/2016 • Trabalho acadêmico • 890 Palavras (4 Páginas) • 275 Visualizações
Questao 1
Na primeira questão implementamos um código o número de dígitos da matissa da máquina.
No algoritmo tivemos que dobrar o último valor de ‘a’ para resultar na precisão, pois o programa só calcula com valores positivos.
Ex: se a mantissa da máquina for de quantidade igual a 5, ela irá reconhecer do número -2 até o número 2.
% Questão 1;
%
% Danilo Jorge / Edllen Randelley / Jonathan Dário;
%
% Turma A;
%
% O programa consiste em revelar a mantissa da máquina.
a = 1;
b = 2;
digitos = 0;
while ( b > 1)
a = a / 2;
b = a + 1;
digitos = digitos + 1;
end
prec = 2 * a;
disp ('A precisão eh: ');
disp (prec);
disp ('O número de digitos eh: ');
disp (digitos);
disp ('O valor de eps: ');
disp (eps);
Questão 2
Na questão 2 implementamos códigos, na linguagem matlab para transformar um dado número binário (de base 2) em número fracionário (de base 10), e transformar um número fracionário (de base 10) em um número binário (de base 2).
Utilizamos a função floor, fornecida no projeto, para auxiliar na transformação de um dado número real qualquer em um número binário, pois a forma de obtenção do numero binário da parte inteira é diferente da forma de obtenção da parte fracionária. Com o auxílio dessa função, pode-se ser calculadas as partes separadamente e unidas ao final.
Algoritmo de transformação de número binário em número fracionário:
% Questão 2;
% Danilo Jorge / Edllen Randelley / Jonathan Dário;
% Turma A;
% O programa consiste transformar um dado número binário (na base 2) em um número decimal (na base 10).
numbin = input ('Digite o número binário: ');
cont = 0;
% o cont serve para saber a quantidade de dígitos do número binário para posteriiormente podermos calcular o mesmo na base 10; %
numero = 0;
% Essa variável será o número impresso.
% Nessa etapa estmos calculando a quantiade de dígitos do número binário e guardando cada dígito numa posição de um vetor; %
while (numbin >= 1)
numdec = mod(numbin,10);
numbin = numbin/10 - numdec*(1/10);
cont = cont + 1;
v(cont) = numdec;
end
% Nessa etapa está sendo calculado o número binário pela forma que aprendemos em sala; %
for (i=0 : cont-1)
numero = numero + v(i+1) * 2^(i);
end
disp('O número na base 10 eh: ');
disp (numero);
Algorítmo de transformação de número fracionário real em número binário:
% Questão 2;
% Danilo Jorge / Edllen Randelley / Jonathan Dário;
% Turma A;
% O programa consiste transformar um dado número decimal (na base 10) em um número binário (na base 2).
numdec = input('Digite o número decimal: ');
% Se for digitado um número real qualquer, nessa etapa ele será dividido em duas partes: parte inteira e parte fracionária, pois cada parte será calculada de formas diferentes; %
int = floor(numdec);
frac = numdec - int;
% A variável cont é a posisão do vetor, que será ultilizado para guardar os digitos da parte inteira do número fornecido; %
cont = 1;
v = 0;
% Nessa etapa está sendo guardado os dígitos da parte inteira nas posições do vetor; %
while (int >=1)
v(cont) = mod(int,2);
int = int/2;
int = floor(int);
cont = cont + 1;
end
cont = cont - 1;
numbin = 0;
for(i=0 : cont-1)
numbin = numbin + v(i+1) * 10^(i);
end
% Nessa etapa a parte fracionária do número está sendo tranformada em parte binária; %
while (frac ~= 1 | i == 20)
frac = frac *2;
v(i) = floor(frac);
frac = frac - v(i);
end
disp('frac :');
disp(frac)
numbin2 = 0;
% Nessa etapa estamos organizando o número binário da parte fracionária, obitido à cima, e guardando numa variável; %
while (numbin2 ~=1)
numbin2 = numbin2 + v(i) * 10^-i;
end
% Aqui é montado o número binário completo, com o número binário da parte inteira e o número binário da parte fracionária. %
numbin = numbin + numbin2;
Questão 3
a)(346) na base 10 para transformar p/base 2
346 | Quociente | Restos |
346/2 | 173 | 0[pic 1] |
173/2 | 86 | 1 |
86/2 | 43 | 0 |
43/2 | 21 | 1 |
21/2 | 10 | 1 |
10/2 | 5 | 0 |
5/2 | 2 | 1 |
2/2 | 1 | 0 |
[pic 2]
O numero (346) na base 2= 101011010
b) (0,654) na base 10 p/ transformar p/ base 2
0,654 x 2 | 1,308 |
0,308x2 | 0,616 |
0,616x2 | 1,232 |
0,232x2 | 0,464 |
0,464x2 | 0,928 |
0,928x2 | 1,856 |
0,856x2 | 1,712 |
O numero(0,654)na base 2= 1010011
c)transformar 78,10 na base 10 para base 2
...