

import numpy as np



def     lowerCAmelCase__							(		SCREAMING_SNAKE_CASE_:							Any		,				SCREAMING_SNAKE_CASE_:							List[str]		,				SCREAMING_SNAKE_CASE_:							Tuple		,				SCREAMING_SNAKE_CASE_:							str		,				SCREAMING_SNAKE_CASE_:							List[str]					)	->					List[Any]:




				'''simple docstring'''





				A__						=	int(np.ceil((x_end - xa) / h					)					)
				A__						=	np.zeros((n + 1,)					)
				A__						=	ya
				A__						=	xa

				for k in range(__lowerCAmelCase					):
								A__						=	f(__lowerCAmelCase		,				y[k]					)
								A__						=	f(x + 0.5 * h		,				y[k] + 0.5 * h * ka					)
								A__						=	f(x + 0.5 * h		,				y[k] + 0.5 * h * ka					)
								A__						=	f(x + h		,				y[k] + h * ka					)
								A__						=	y[k] + (1 / 6) * h * (ka + 2 * ka + 2 * ka + ka)
								x += h

				return y


if __name__ == "__main__":
	import doctest

	doctest.testmod()



from abc import ABC, abstractmethod
from argparse import ArgumentParser

class    lowerCAmelCase__     (	__lowercase			):






		@staticmethod
		@abstractmethod
		def  __A       (		SCREAMING_SNAKE_CASE__		:							ArgumentParser  )     ->							str:
						raise NotImplementedError()







		@abstractmethod
		def  __A       (		self		:							Optional[int]  )     ->							Union[str, Any]:
						raise NotImplementedError()



