2016-12-04 1 views
0

저는 플로팅 할 수있는 함수를 가지고 있습니다. 이제이 함수의 대수를 플로팅하고 싶습니다. 파이썬은 log10()이 함수에 정의되어 있지 않다고 말한다. 그래서 질문은 : f (x, a) = a * (x ** 2)와 같은 함수의 대수를 어떻게 그릴 수 있습니까?파이썬 : 함수의 로그를 그려야합니다.

+0

문제가 대수베이스 (10)를 계산하거나 값을 음모 : 그래서 여기

ax.set_yscale("log", nonposy='clip') ax.plot(x,y) 

은 세 가지 경우의 쇼케이스 예입니다? 후자의 경우 다른 계획을 세우는 것과 어떻게 다른가요? 또한'f (x, a)'는 두 값의 함수입니다. 'x''와''a'''의 변화를 구상하고 싶습니까? –

+0

x는 내 변수 여야하며 함수를 플로팅 할 때 사용할 수있는 매개 변수 여야합니다. 문제는 올바른 함수를 정의 할 수 없다는 것입니다. 로그에 함수를 넣을 수 없기 때문에 g (x, a) = log10 (f (x, a)). – user7248647

+0

기본적으로 프로그램에 다음과 같이 말하고 싶습니다. 주어진 함수 f (x, a) (이미 그려져 있습니다)는 해당 함수의 모든 지점에서 log10()을 사용하여 플롯합니다. – user7248647

답변

0

matplotlib가 함수를 그릴 수 있다고 말하는 것은 잘못된 것입니다. Matplotlib은 값만 플롯 할 수 있습니다.

함수입니다 그래서 경우

f = lambda x,a : a * x**2 

당신이 먼저 그런 다음

를 통해 배열 y = f(x,a)을 플롯 할 수 있습니다 x 값의 배열을 만들고 a

a=3.1 
x = np.linspace(-6,6) 

을 정의해야합니다 것

ax.plot(x,y) 

이제 로그를 플로팅하려면 f의 arithm, 실제로해야 할 일은 배열 y의 대수를 플롯하는 것입니다. 그래서 당신은 새로운 배열을

y2 = np.log10(y) 

을 만드는 대신 선형 스케일 함수의 로그를 보여주는에, 어떤 경우에는

ax.plot(x,y2) 

그것을 그릴 것, 기능을 보여주기 위해 더 좋을 수 있습니다 로그 스케일 자체. 이것은 matplotlib의 축을 대수로 설정하고 로그 배열에 초기 배열 y을 그려서 수행 할 수 있습니다.

import matplotlib.pyplot as plt 
import numpy as np 

#define the function 
f = lambda x,a : a * x**2 

#set values 
a=3.1 
x = np.linspace(-6,6) 

#calculate the values of the function at the given points 
y = f(x,a) 
y2 = np.log10(y) 
# y and y2 are now arrays which we can plot 

#plot the resulting arrays 
fig, ax = plt.subplots(1,3, figsize=(10,3)) 

ax[0].set_title("plot y = f(x,a)") 
ax[0].plot(x,y) # .. "plot f" 

ax[1].set_title("plot np.log10(y)") 
ax[1].plot(x,y2) # .. "plot logarithm of f" 

ax[2].set_title("plot y on log scale") 
ax[2].set_yscale("log", nonposy='clip') 
ax[2].plot(x,y) # .. "plot f on logarithmic scale" 

plt.show() 

enter image description here

0

당신의 어려움이 대수베이스 (10)를 계산하는 경우,

def g(x, a): 
    return math.log(f(x, a))/math.log(10) 

를 사용하거나 당신이 원하는 무엇 인 아닌 양의 값에 대한 오류를 제공

def log10(x): 
    return math.log(x)/math.log(10) 

. 이 표준의 정체성을 사용

X베이스 (B)의 로그 = 로그 (X)/로그 (b)에

그것은조차없이 log() 기능을 사용하는 기반이되는 않는 : 당신은 같은거야 모든 기초에 대한 대답.