• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

biohazard999

Dúvidas em Matlab

23 mensagens neste tópico

alguém sabe programar matlab é k tenho umas dúvidas???????

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

entao as minhas duvidas sao as seguintes tou a tentar implementar um script e uma função,

a função deve ser uma sucessão que é a seguinte a(n+1)= p*a(n)* (1-a(n)).

o problema o k me pede é k implemente uma função recursiva a partir da sucessão.

O script já o defini, mas ainda faltam umas coisas k e por o grafico e mais umas coisas, ai é k eu tenho a duvida e tambem como se faz a função e k e um pouco complicado.

Aki ta o script

%Script file: sucessão.m
%Este script testa a sucessão a(n+1)=p*a(n) * [1-a(n)]

clc;
clear all;
close all;

disp('Este script testa a sucessão a(n+1)=p*a(n) * [1-a(n)]')

%Pede ao utilizador o termo a(0),i.e., o valor inicial da sequência

ainicial_incorrecto=true
while (ainicial_incorrecto)
    ainicial = input('Introduza o termo ou valor inicial (a(0)), pretendido: ')
   ainicial_incorrecto=( ainicial<1)
end


p = input('Introduz o valor de p pretendido: ')


n = input ('Introduza o valor de n pretendido: ')

O enunciado é este

Escreva um programa (denominada problema_A.m) em MATLAB que calcule os N

primeiros termos da sucessão:

a(n+1) = p × a(n) × [1-a(n)]

A .m file problema_A.m deve pedir ao utilizador os valores de N, p e a(0), i.e. o valor

inicial da sequência, e apresentar um gráfico com o resultado. Deve ser implementada

uma função recursiva (denominada sucessao.m), a qual deve ser chamada pela .m file

problema_A.m.

O programa só deve terminar após opção do utilizador, caso contrário deve pedir

novos dados para cálculo.

Apresente dois gráficos com os seguintes valores:

Gráfico 1) N= 100, p=2.9 e a(0) = 0.5

Gráfico 2) N= 100, p=3.1 e a(0) = 0.5

Comente os resultados.

Se alguem me poder ajudar. :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O programa só deve parar após opção do utilizador? É esse o critério de paragem da função recursiva?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

lol... Não... "Escreva um programa (denominada problema_A.m) em MATLAB que calcule os N primeiros termos da sucessão:"...

Agora não te vou poder ajudar porque estou com pressa. Mas se sabes o que é programação recursiva, e se leste o enunciado, a função recursiva tem que estar em sucessao.m, ou seja, esta função deve calcular o valor da sucessão em função do valor anterior... Algo como isto:

%Função recursiva sucessão
function [an] = sucessao(n)
if n>0
  an1=p*sucessao(n-1)*(1-sucessao(n-1));
else
  an=a0;
end

Isto em princípio bastaria... Depois no problema_A.m é que deves pedir os valores ao utilizador e chamar a sucessão...

Mas pela tua dúvida acho que não percebeste muito bem o que é programação recursiva...

Se tiveres dúvidas pergunta.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

obrigado, pela vossa atenção.

Já agora o k e isso da programação recursiva.

Mais uma duvida com e k se faz esta parte do programa.

O programa só deve terminar após opção do utilizador, caso contrário deve pedir

novos dados para cálculo.

sim o programa so deve terminar apos opcao do utilizador.

Como se faz isso de chamar a função sucessão para o script.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ja modifiquei um pouco o problema:

%Script file: sucessão.m
%Este script testa a sucessão a(n+1)=p*a(n) * [1-a(n)]

clc;
clear all;
close all;

disp('Este script testa a sucessão a(n+1)=p*a(n) * [1-a(n)]')


a0 = input ('Introduza o termo ou valor inicial (a(0)), pretendido: ')    %Pede ao utilizador o termo a(0),i.e., o valor inicial da sequência

n_incorrecto=true;
while (n_incorrecto)
    n = input('Introduza o valor n pretendido: ')
   n_incorrecto=( n<0)
end


p = input('Introduz o valor de p pretendido: ')

stem(,'r*')
title (['Sucessão até ao termo ' (n)]);
grid on;

O k devo por para aparecer o grafico, o problema e k este n aparece.

Ja agora se alguem me poder ajudar como e k devo começar a implementar as funções e scripts pa estes problemas

Um número primo é um número natural, maior do que 1, que é divisível por apenas

dois números naturais, o 1 e ele mesmo. Logo, os primeiros números primos são: 2, 3,

5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97,

etc.

Eratóstenes (um matemático, geógrafo e astrónomo grego), viveu no século III a.C, e

entre suas contribuições (além de provar que a Terra era esférica!), apresentou um

algoritmo para calcular os números primos até um determinado valor limite.

Algoritmo esse, que é conhecido como o crivo de Eratóstenes, o qual se descreve de

seguida:

Seja N (inteiro >=2), o valor limite a testar.

1) Criar uma lista com todos os naturais de 2 até N;

2) Se N=2 ir para o passo 8), caso contrário ir para o passo 3)

3) Determinar a raiz quadrada de N;

4) Arredondar o valor obtido em 3) para o inteiro inferior mais próximo;

2

5) Atribuir a k o valor 1;

6) Ciclo:

a. Remover da lista todos os elementos que sejam múltiplos do k

elemento da lista (excepto o elemento k);

b. Incrementar k de uma unidade;

c. Se o k elemento da lista for maior do que o valor obtido em 4) ir para o

passo 7), caso contrário ir para o passo 6.a)

7) Fim de ciclo

8) Apresentar lista

Exemplo: N=23

Arredondamento da raiz quadrada de 23: 4;

Lista: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23;

k=1 (eliminar múltiplos de 2);

Lista: 2 3 5 7 9 11 13 15 17 19 21 23;

k=2 (eliminar múltiplos de 3); Como 3 <= 4:

Lista: 2 3 5 7 11 13 17 19 23;

k=3 (eliminar múltiplos de 5); Como 5 > 4:

Lista final: 2 3 5 7 11 13 17 19 23.

Escreva um programa (denominada problema_B.m) em MATLAB que calcule e

apresente no monitor os números primos menores ou iguais a N. Deve ser

implementada uma função (denominada primo.m), a qual deve ser chamada pela .m

file problema_B.m.O programa só deve terminar após opção do utilizador, caso

contrário deve pedir novos dados para cálculo.

Escreva um programa em MATLAB que leia dados do ficheiro fornecido alunos.mat,

manipula-os e processa-os através de ordenação. O ficheiro alunos.mat contém a

estrutura aluno com os seguintes campos: numero (inteiro correspondente ao número

do aluno), nome (cadeia de caracteres correspondente ao nome do aluno), apelido

(cadeia de caracteres correspondente ao apelido do aluno), naturalidade (cadeia de

caracteres correspondente à naturalidade do aluno), nota (real correspondente à nota

de ingresso do aluno) e curso (cadeia de caracteres correspondente ao curso em que o

aluno está inscrito).

Pretende-se que o programa ordene os alunos por ordem crescente do número. O

resultado deve ser visualizado no monitor pela seguinte ordem:

numero | curso | nome | apelido | naturalidade | nota

a) Implemente um algoritmo de ordenação à sua escolha, para obter a ordenação

pretendida. A .m file deve ser denominada problema_C_a.m. (Comente devidamente

o código e explicite que método de ordenação utilizou.)

(4 valores)

b) Utilize a função do MATLAB denominada sort para obter uma ordenação

alfabética por apelido. O resultado deve ser visualizado no monitor pela seguinte

ordem:

apelido | nome | numero | curso | naturalidade | nota

A .m file deve ser denominada problema_C_b.m.

(3 valores)

NOTA: Por facilidade de visualização considere que a string nome e apelido têm 10

caracteres, a string naturalidade 15 e a string curso 20 caracteres.

A ver se alguem me diz como devo começar pa depois tirar aki mais alguma duvida.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Directamente do teu enunciado:

"Deve ser implementada

uma função recursiva (denominada sucessao.m), a qual deve ser chamada pela .m file

problema_A.m."

Se te estão a pedir para fazeres isto... e não sabes o que é programação recursiva então algo está muito errado... :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Oh rapaz... Isto não e a sala de aula  :P Nós podemos tentar ajudar-te... mas devias ter profs que te esclarecessem essas dúvidas... Esse algoritmo de Eratóstenes implementei-o na TI-83 quando andava no 10º ano  :D

Tenta fazer essas coisas e depois vem cá esclarecer dúvidas particulares... Se não consegues perceber nada de nada disso... Então o melhor mesmo é falares com o teu prof.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok, mt bem, mas se e assim tao facil porke e k n mostras como se faz, ja agora podias ajudar no problema A

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

este serve para função do problema b

% Eratostenes - Calcula numeros primos mediante
% el metodo de la "Criba de Eratostenes"
% Solicitamos al usuario el maximo numero
ult = input('Maximo numero: ');
numeros = 1:ult; % Lista de todos los numeros
% Eliminamos los multiplos de cada numero
for n = 2:ult
if numeros(n) ~= 0
numeros(2*n:n:ult) = 0;
end
end
% Presentamos los que sean distintos de cero
disp(numeros(numeros~=0));

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O problema A já te resolvi. A função recursiva é tudo o que precisas. Se não sabes fazer o .m que chama a função recursiva com um número fornecido pelo utilizador até que este decida que já n quer, então nem vale a pena tentares fazer mais nada.

E quanto aos outros, sim são relativamente fáceis, mas como já te expliquei, este fórum não serve para resolver problemas de programação passados na escola/faculdade. Se tiveres alguma dúvida específica tudo bem, se queres que eu te faça os exercícios para passares na disciplina/cadeira sem tu perceberes nada disso, então obviamente não.

EDIT: LOOOOOOL ya essa função escrita por alguém que fala castelhano resolve o problema, tens é que mudar os comentários para português

P.S.: Detesto cábulas e chicos-espertos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

por lo menos no necessita ningun tradutor, que me traduzca lo que esta en el puto texto, pero bueno entiendo la situacion, creo que proximamente metere mis dudas e no algo copiado ya lo cogi.

entao está bem, quanto ao problema A, eu não sei é como é que ei-de por o programa a dar a hipótese ao utilizador, já ouvi falara em "quit" ou algo assim, mas ainda não sei bem, se me poderes ajudar.

Quanto ao problema B, eu já tive a ver tenho que definir uma função, que me de uma lista que faça um floor sqrt do valor que eu meta la, dps ja e mais facil so keria saber como havia de começar k dps eu já fazia.

Mais uma coisa, eu tentei por o stem a funcionar no problema A, pus la o nome da função mas não da, por que razao.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e pa pedrosorio n fikes xateado isto e so no gozo, e pa me ajudares, pois tenho alguns problemas em computação e programação, e k o prof vamos la tirar duvidas e o gajo diz, exemplo:

Ha isso, vai pa casa e procura no google, dps vem ca mostrar pa eu ver como ta e ja te comento isso, e manda-nos nitidamente dar uma volta

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
7.º - Lembrem-se também que ninguém deve fazer os trabalhos de casa a ninguém, como tal, se querem ajuda em algo para a escola, faculdade ou cursos de formação, devem apresentar propostas ou código já feito para o problema em questão, demonstrando as dúvidas precisas que têm.

Regras do forum, embora em tenha sido parvo em meter ai os problemas, o k eu pretendia era k me dessem uma ideia geral de como havia de começar não era precisso dar-me  o codigo ou fazer-me o problema, bastava dizer, epa usa esta função ou akela e novas duvidas k me surgissem, ja perguntava.

Quanto ao problema A, eu pus uma duvida sobre a parte de como havia de por o grafico e k tava a dar erro.

Dps sou eu é k n sei as regras do forum.

Conclusou a pessoa k tava a responder e k tem uma distorção do sentido da palavra e deve tar abituado a k lhe peçam os trabalhos já feitos, o k eu pretendia não era nada disso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tem calma. Se ninguém respondeu ainda é porque ninguém que saiba a resposta viu a pergunta.

Estás a utilizar o stem de forma incorrecta. Não te está a dar erro nem nada? No código que puseste aí ainda não calculaste os termos da sucessão. Precisas de ter este resultado antes de chamar a função stem. depois de teres os termos por exemplo num array y, chamas stem do seguinte modo:

stem(y, 'r*');

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

TheDark... O problema dele não é com a parte gráfica. Ele não sabe o que é programação recursiva e estão a pedir-lhe para implementar um função recursiva. Eu pus-lhe um exemplo de função recursiva que resolveria o problema mas ele insiste em usar programação imperativa... Não há milagres

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

lol. "Programação Imperativa" não exclui "funções recursivas" :)

Uma função recursiva é uma função que em vez de utilizar ciclos internos, pega nos argumentos que lhe foram passados, altera-os (por exemplo, decrementa [dica!!!]) e se chama a si própria com os argumentos alterados, até que esses argumentos cheguem a um certo valor (por exemplo, zero [dica!!!]), para os quais retorna um valor pré-definido (por exemplo, sabes o valor de a(0) [dica!!!]).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok, mas  o problema é k eu n sou um programador, nem ando em nenhuma engenharia informatica ou do genero, o k eles me ensinam é o basico, n e nada do resto.

Normalmente, as pessoas kando kerem ajudar as outras não se põe com papaias, perguntam às pessoas o que pretendem de modo a ajudar, não ta aki ninguèm para fazer os trabalhos, aos outros, mas se eu soubesse algo ajudava os outros de modo a conseguir.

Pelo menos o The Dark, deu uma resposta decente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok desculpa aí... Não percebo que raio de ensino este onde te pedem cenas que nunca te ensinaram...  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

lol... Não... "Escreva um programa (denominada problema_A.m) em MATLAB que calcule os N primeiros termos da sucessão:"...

Agora não te vou poder ajudar porque estou com pressa. Mas se sabes o que é programação recursiva, e se leste o enunciado, a função recursiva tem que estar em sucessao.m, ou seja, esta função deve calcular o valor da sucessão em função do valor anterior... Algo como isto:

%Função recursiva sucessão
function [an] = sucessao(n)
if n>0
  an1=p*sucessao(n-1)*(1-sucessao(n-1));
else
  an=a0;
end

Isto em princípio bastaria... Depois no problema_A.m é que deves pedir os valores ao utilizador e chamar a sucessão...

Mas pela tua dúvida acho que não percebeste muito bem o que é programação recursiva...

Se tiveres dúvidas pergunta.

so uma questao, a funcao sucessao nao deveria ter mais 2 argumentos de entrada, o p e o a(0)?

obg

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora