Challenge
Naturally, your favorite class of the day is AP Calculus BC and you've recently been learning Euler's Method. Your teacher has had a lot on their plate, so they've just been using the same curve for your homework problems every day, y'(x) = x^2 - 6y^2, y(5) = 2. To simplify matters, you're going to write a program to automate this trivial task for you.
For each input, you will receive a space-separated set of two numbers (each between -10 and 10). The first is your step size and the second is the x-value of the point you need the estimated y-value for (to the nearest tenth and incuding trailing zero if necessary). Your output will be between -1,000 and 1,000.
Sample Input 1:0.8 5.8
Sample Output 1:2.8
Sample Input 2:0.9 7.7
Sample Output 2:-645.1
Notes:
- the inputs will be passed in (through stdin) separated by newlines; make sure your output is also separated by newlines
- the first line of input will contain only one integer representing the number of additional lines of input you will receive
Solution
def main():
number_of_data = int(input())
y_list = []
for i in range(number_of_data):
data = input().split(" ")
dx = float(data[0])
xn = float(data[1])
x = 5.0
y = 2.0
f = lambda x, y: x**2 - 6 * y**2
number_of_steps = round((xn - x)/dx)
for step in range(number_of_steps):
y = y + f(x, y) * dx
x += dx
y_list.append(round(y, 1))
for y in y_list:
print(y)
main()