fork download
  1. #!/usr/bin/env python3
  2.  
  3. import matplotlib.pyplot as plt
  4. from functools import reduce
  5.  
  6. m, k, dt, x_table, v_table = 1, 10, 0.01, {}, {}
  7.  
  8. def v_(n_max):
  9. def foo(v_n, n):
  10. try: v_n -= (k/m) * x_table[n-1] * dt
  11. except KeyError:
  12. x_table[n-1] = x_(n-1)
  13. v_n -= (k/m) * x_table[n-1] * dt
  14. finally: v_table[n] = v_n
  15. return v_table[n]
  16. return reduce(foo, range(1, n_max+1), 0)
  17.  
  18. def x_(n_max):
  19. def foo(x_n, n):
  20. try: x_n += v_table[n] * dt
  21. except KeyError:
  22. v_table[n] = v_(n)
  23. x_n += v_table[n] * dt
  24. finally: x_table[n] = x_n
  25. return x_table[n]
  26. return reduce(foo, range(1, n_max+1), 1)
  27.  
  28. if __name__ == '__main__':
  29. x_(500) # 出力せずにここで一回計算させただけでハッシュに値が登録される
  30. t = [i * dt for i in x_table.keys()]
  31. x = [i for i in x_table.values()]
  32. plt.plot(t, x)
  33. plt.savefig('t-x.png')
  34. plt.show()
  35.  
Runtime error #stdin #stdout #stderr 1.04s 66164KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Traceback (most recent call last):
  File "./prog.py", line 33, in <module>
  File "/usr/local/lib/python3.7/dist-packages/matplotlib/pyplot.py", line 689, in savefig
    res = fig.savefig(*args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/matplotlib/figure.py", line 2094, in savefig
    self.canvas.print_figure(fname, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/matplotlib/backend_bases.py", line 2075, in print_figure
    **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/matplotlib/backends/backend_agg.py", line 521, in print_png
    cbook.open_file_cm(filename_or_obj, "wb") as fh:
  File "/usr/lib/python3.7/contextlib.py", line 112, in __enter__
    return next(self.gen)
  File "/usr/local/lib/python3.7/dist-packages/matplotlib/cbook/__init__.py", line 407, in open_file_cm
    fh, opened = to_filehandle(path_or_file, mode, True, encoding)
  File "/usr/local/lib/python3.7/dist-packages/matplotlib/cbook/__init__.py", line 392, in to_filehandle
    fh = open(fname, flag, encoding=encoding)
PermissionError: [Errno 13] Permission denied: 't-x.png'