联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp

您当前位置:首页 >> OS作业OS作业

日期:2025-02-21 01:04

Homework 5:  Coding portion

AMATH 301, Winter 2025

1. Approximate the area under the curve etan(x)  on −1 ≤ x ≤ 1 using:

(a)  (2 points) Midpoint rule with N = 100 subdivisions.  Call this value integral mid.

(b)  (2 points) Trapezoid rule  (for-loop or np.trapz) with N  =  100  subdivisions.   Call this value integral trapz.

(c)  (2 points) Simpson’s rule with N = 100 subdivisions.  Call this value integral   simp.

2.  The cost of one Bitcoin at close of trading for each month of 2024 was:


Month             Cost

1/2024            $42, 582.61

2/2024            $61, 198.38

3/2024            $71, 333.65

4/2024            $60, 636.86

5/2024             $67, 491.41

6/2024             $62, 678.29

7/2024             $64, 619.25

8/2024             $58, 969.90

9/2024             $63, 329.50

10/2024           $70, 215.19

11/2024           $96, 449.05

12/2024           $93, 429.20



Let the cost of one Bitcoin be c(t), where t is months after  12/2023.   Assume that each month is close enough to being the same length that we will consider each month as ∆t (in other words, do not account for the difference in number of days per month).  Also, do not look up the data for any dates outside this range– just use the data provided.

If you don’t want to type out the numbers, you can load bitcoin.npy from Canvas which contains the 12 cost values above.

(a)  (2  points)  Use finite-difference formulas to approximate  c(t), the change in Bitcoin price per month.  Create a vector as a np.array object called  cpvec that contains these values.  Use the lowest-order possible: the second-order, centered formula for the interior points and the first-order, forward or backward formulas for the endpoints.

(b)  (1 point) Repeat part (a) to find c′′ (t) and call the respective vector cp2vec.

(c)  Include these lines at the end of your code to visualize these functions.   Don’t  forget  import matplotlib.pyplot  as  plt at the top of your code.  (Part (c) will not be checked by the auto- grader.)

plt.plot(tvec,cpvec,’-ro’,label=’c\’(t)  [$/month]’)

plt.plot(tvec,cp2vec,’-bo’,label=’c\’\’(t)  [$/month^2]’)

plt.legend()

plt.xlabel(’month  of  2024’)



3.  (5 points) Approximate the volume of the 3-dimensional region below the paraboloid z = 1 — x2 — y2 , above the plane z = 0, and outside the cylinder (x — 1)2 + (y — 1)2  = 1.  Do this by creating a function f(x,y) which returns 1 — x2  — y2   for any (x,y) that lies within the shape (consider a top-down view onto the z = 0 plane), and zero otherwise.  Then use scipy .integrate .dblquad to integrate f(x,y) over a rectangular domain in x and y that is large enough to encompass the entire shape. Don’t forget import  scipy .integrate at the top of your code.  Store the result in a variable named volume.


Interactive visualization of #3


4.  The second-order, centered finite-difference formula for the derivative is:

 

while the fourth-order, centered finite-difference formula for the derivative is:

 

Let f(t) = e1/t.

(a)  (0.5 points) Find f (2) by hand. Store this value as a variable named derivtrue.

(b)  (0.5 points) Next, let dtvec be a 1D np.array object containing the values 2/1, 4/1, ..., 2-10 (note: decreasing order).

(c)  (2.5 points) Approximate f(2) using the second-order, centered finite-difference formula for each value of ∆t in dtvec.  Calculate the natural logarithm of the relative error of each result, and save those in a 1D np.array object named logrelerr2o.

 

(d)  (2.5 points) Repeat part  (c) but using the fourth-order formula.  Save those in a 1D np.array object named logrelerr4o.

(e)  Include these lines at the end of your code to see how quickly the relative error decreases as the step size ∆t decreases for both formulas on a log-log plot.  Don’t forget import  matplotlib.pyplot as  plt at the top of your code.  (Part (e) will not be checked by the autograder.)


plt.plot(np.log(dtvec),logrelerr2o,’-bo’,label=’2nd  order  FD’)

plt.plot(np.log(dtvec),logrelerr4o,’-go’,label=’4th  order  FD’)

plt.legend()

plt.xlabel(’log(dt)’)

plt.ylabel(’log(relative  error)’)


版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp