数学建模练习——插值、拟合和微分方程

数学建模-插值拟合微分方程

1题

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d

plt.grid(linestyle='--')       #设置网格线---这里是虚线
X = np.array([0,2,4,5,6,7,8,9,10.5,11.5,12.5,14,16,17,18,19,20,21,22,23,24])
Y = np.array([2,2,0,2,5,8,25,12,5,10,12,7,9,28,22,10,9,11,8,9,3])

xnew= np.linspace(0,24,24*60) 
# 引入插值函数,这里的点较散乱,所以我选取高阶的样条插值
f=interp1d(X,Y,'quadratic'); ynew=f(xnew) 
plt.plot(xnew,ynew,c='b')
plt.show()
# 计算一天的车辆总数
c=sum(ynew)
print('一天总共:',c)

在这里插入图片描述

2题

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
from numpy import polyfit,polyval
x=np.linspace(0,10,11)[1:11]
y=np.array([2615,1943,1494,1087,765,538,484,290,226,204])

p=polyfit(x,y,2)
print('p:',p)
ynew=polyval(p,x)
plt.plot(x,ynew)
plt.show()
ypred=polyval(p,4.5)
print('使用4.5年后轿车的平均价格大致为:',ypred)

在这里插入图片描述

3题

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
from scipy.integrate import odeint

def fT(y,x):
    f,df,ddf,T,dT=y; #拆分、降阶
    return np.array([df,ddf,2*(df*df)-T-3*f*ddf,dT,-2.1*f*dT])

x=np.arange(0,10,0.1)
ynew=odeint(fT,[0.0,0.0,0.68,1.0,-0.5],x)
#plt.rc('font',size=16);plt.rc('font',family='Times New Roman')
plt.plot(x,ynew[:,0],label='f')
plt.plot(x,ynew[:,3],label='T')
plt.legend()
plt.show()

4题

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,8,9)
y=np.array([5,5.9945,7.0932,8.2744,9.5073,10.7555,11.9804,13.1465,14.2247])
plt.scatter(x,y,c='r',label='Data point')

p=np.polyfit(x,y,1)
print('p为:',p)
ynew1=np.polyval(p,x)
plt.plot(x,ynew1)

plt.legend()
plt.show()

#从图中可以看出一次多项式的拟合效果就很好,所以接下来预测时采用一次多项式即可
y9=np.polyval(p,9)
y10=np.polyval(p,10)
print('t=9野兔的数量:',y9)
print('t=10野兔的数量:',y10)

在这里插入图片描述

5 小工具

抢讲座
在这里插入图片描述

链接:https://pan.baidu.com/s/1kcr1LHINF87ni91bJfpW1g
取码:o9j2

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值