2016-08-30 3 views
-1

В настоящее время я пытаюсь научить себя, как строить функции с matplotlib в Python, и я застрял на довольно простой задаче: Учитывая функцию f (x) = 2x +3, постройте координаты в matplotlib.Вычислить значение y на основе значения x и функции - Python

Я решил этот нелегкий путь, через ручной расчет, создание списка как х и у-значений для й значений от -2 до 3.

The Hard Way

import matplotlib.pyplot as plt 

x = range(-2, 4) 
y = [-1, 1, 3, 5, 7, 9] 

plt.plot(x, y, 'ro') 
plt.show() 

Это работает!

Однако, есть ли способ быстро получить значения y, основанные на значениях x (от -2 до 3) и функции?

f(x) = 2x+3 

Любая помощь очень ценится!

+1

определение функции ф (х) : return 2 * x + 3' было бы хорошим началом, вы уже узнали о функциях? –

+0

Как насчет 'y = [2 * val + 3 для val in x]'? – FamousJameous

ответ

0

Функция lambda будет очень полезна в этой ситуации. Вы можете объявить свою функцию, используя f = lambda x: 2*x + 3. Функция map будет хорошим способом получить все ваши значения y простым способом: y = map(f, x).

Вот документация по lambda и map:

https://docs.python.org/2/reference/expressions.html#lambda https://docs.python.org/2/library/functions.html#map

+0

в python 3 'map' возвращает генератор вместо списка, поэтому он не может быть непосредственно использован как массив y, вместо этого я бы рекомендовал использовать понимание списка:' [f (i) для i в x] ' –

+0

Это правда. Если вы используете python 3, то наилучшим способом будет понимание списка. –

+0

Понимание работает в обеих версиях, но 'map' работает только в vs2, поэтому я бы сказал, что понимание более надежное. Поскольку этот вопрос не был помечен тегом конкретной версии, вам нужно предложить варианты, которые будут работать для обоих. –

0

Вот простой способ построить вашу функцию в пределах определенного диапазона [A,B]:

import numpy as np 
import matplotlib.pyplot as plt 


def graph(formula, x_range): 
    x = np.array(x_range) 
    y = formula(x) 
    plt.plot(x, y) 
    plt.show() 


def f(x): 
    return 2 * x + 3 

A, B = -10, 10 
graph(f, range(A, B)) 
+0

, если вы ничего не собираетесь объяснять о своем коде, вы могли бы по крайней мере добавить несколько комментариев. –

Смежные вопросы