Eu tenho a equação

 y = a + b Exp[-x/c] data = {{462.36, 8872}, {408.18, 8780}, {374.4, 8915}, {322.8, 8937}, {274.00, 8919}, {243.03, 911‌4}, {209.32, 9277}, {178.91, 9394}, {140.71, 9508}, {113.08, 9592}}; nlm = FindFit[data, y = a + b Exp[-x/c], {{a, 100}, {b, 100}, {c, 10}}, x] Show[ ListPlot[data, PlotStyle -> {Darker@Green, PointSize[0.03]}], Plot[y/. nlm, {x, 1, 600}]] 

Acima é como eu atualmente tenho tudo funcionando e gráficos.

Atualizar

Na verdade, tenho quase tudo funcionando. Tenho a linha bieing drwan. O único problema que estou tendo é que os primeiros 2 pontos de dados e o início da linha sendo desenhado realmente começa antes do eixo y no gráfico, portanto, se você olhar para o gráfico, ele é inclinado para a esquerda. Estou tentando entender qual valor precisarei alterar para mover isso de volta para a direita e estou tendo um pouco de dificuldade. qualquer ajuda será apreciada.

como posso inserir isso na função FindFit?

FindFit[data, model, parms]; 

Eu tenho meus dados, mas não consigo descobrir como colocá-los no model e params corretamente. Este é o equação que me foi dada para os dados e simplesmente não sei como inseri-los ou mostrar que será uma curva exponencial.

Comentários

  • Ok, aqui está a minha pergunta i ' tenho tudo funcionando na maior parte. a única coisa que estou tendo um problema é que o eixo X está começando em 150 e meu primeiro ponto está em 113. você vê o problema, ele traça atrás do eixo y. Então, há uma maneira de iniciar o eixo x.
  • sua pergunta atualizada é apenas sobre como definir o intervalo do gráfico, eu acho. Neste caso, configurando manualmente para funcionar melhor, coloque PlotRange – > {{0, 800}, {8000, 11000}} dentro de seu ListPlot.

Resposta

É melhor usar NonlinearModelFit:

data = {{0, 10}, {1, 5}, {3, 2}, {5, 1}, {6, 0}, {7, 0}}; nlm = NonlinearModelFit[data, a + b Exp[-x/c], {a, b, c}, x] Show[Plot[nlm[x], {x, 0, 7}] ,ListPlot[data, PlotStyle -> {Darker@Green, PointSize[0.03]}] ] 

insira a descrição da imagem aqui

Para ver os parâmetros, você pode usar nlm["BestFitParameters"] para obter

{a-> 0,100889, b-> 9,76356, c-> 1,62293}

Atualizar

Usando seus novos dados de teste com a dica @ george2079, você obtém:

data = {{462.36,8872},{408.18,8780},{374.4,8915},{322.8,8937}, {274.00,8919},{243.03,9114},{209.32,9277},{178.91,9394}, {140.71,9508},{113.08,9592}}; nlm=NonlinearModelFit[data, a + b Exp[-x /c], {{a, 100}, {b, 100}, {c, 10}},x] Show[ListPlot[data, PlotStyle -> {Darker@Green, PointSize[0.03]}] ,Plot[nlm[x],{x,1,600}] ] 

insira a descrição da imagem aqui

Comentários

  • Estou tendo problemas para obter o NonlinearModelfit para Plot, ele está me apresentando erros de sintaxe. Eu acho que é algo com o ListPlot que não está gostando.
  • Você pode adicionar alguns dados de amostra à sua pergunta, para que possamos testá-la.
  • @Bill edite sua pergunta em vez disso de nós comentários.
  • Eu adicionei os dados e as funções que estou tentando usar à minha pergunta original. quaisquer sugestões serão muito apreciadas.
  • Isso funciona muito bem. o único problema que estou tendo é realmente mostrar a linha. Pego os dados para plotar, mas não ' t realmente obtenho a curva para plotar. qualquer ideia do que posso estar fazendo de errado.

Resposta

Neste caso, FindFit e NonlinearModelFit não encontram prontamente um bom ajuste, você precisa fornecer valores iniciais razoáveis para os parâmetros:

data = {{462.36, 8872}, {408.18, 8780}, {374.4, 8915}, {322.8, 8937}, {274.00, 8919}, {243.03, 9114}, {209.32, 9277}, {178.91, 9394}, {140.71, 9508}, {113.08, 9592}} FindFit[data, a + b Exp[-x /c], {a, b, c}, x] 

(* erro O tamanho do passo na pesquisa tornou-se menor que a tolerância. .. *)

FindFit[data, a + b Exp[-x /c], {{a, 100}, {b, 100}, {c, 10}}, x] 

(* {a -> 8692,35, b -> 1910,19, c -> 161,513} *)

Este é um ajuste de boa aparência, desculpe, não posso postar gráficos.

Então, como você define os valores iniciais? Plotei a expressão e brinquei com as constantes à mão até chegar bem perto. Desculpe se isso não é satisfatório, mas realmente existe um pouco de arte no ajuste de dados que vai além do que o mathematica pode fazer de uma forma totalmente automática.

Comentários

  • Na verdade, tenho a linha para representar graficamente com seu código, mas ainda estou obtendo um gráfico distorcido. quaisquer ideias.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *