level 12
在确定了二次曲线及曲线的最小最大x后,可是可以三条直线段拟合(近似),先假定一组足够细粒度均匀划分最小最大x的X,可用X=np.linspace(xmin,xmax,100000)生成,X可分成可变长度三部分但中间各部分位置数整数连续,会有不同斜率和截距共三条直线,三条直线的交点近似可求,由各直线斜率和截距确定,所以不需要将交点坐标作为参数出现,只需要将斜率和截距6参数作未知进行优化求解就可以了,列出mse损失值,求解最优就行,必能找到任意二次曲线段的三直线段最佳拟合。
2021年11月19日 12点11分
4
列出来的是方程组,所以要用方程组的参数最优化求解方法。有些书上有介绍,记不得哪本书了,可参考拉格朗日乘子法的资料。
2021年11月19日 12点11分
如果求必须与曲线相切,也是可以的,会增加三个条件方程到方程组,最后仍可化简成三个方程。相切是有实际工程意义的,例如下料算法,尽量少浪费材料,就用得上了。
2021年11月19日 12点11分
内接也有用,但工程上对于内接,情愿用曲线下料工具,否则应力可能导致工件在线与线交点严重变形或破坏。
2021年11月19日 12点11分
大佬有代码可以参考一下吗
2021年11月19日 12点11分
level 12
先导入一些包包括神经网络工具包,并随便生成一条曲线
import numpy as np,matplotlib.pyplot as plt
from sklearn import neural_network
x=np.linspace(-5,5,10000)
y=0.2*x**2+0.1*x+0.1
plt.plot(x,y)
plt.show()
运行上面代码后可以看到是一条二次曲线,再接着建个神经网络模型
myreg=neural_network.MLPRegressor()
myreg.hidden_layer_sizes=5
x=x.reshape(-1,1)
myreg.fit(x,y)
y_predict=myreg.predict(x)
plt.plot(x,y,'r')
plt.plot(x,y_predict,'b')
plt.show()
运行结果自己去试,你还可以试试myreg.activation='leakrelu',但这个不支持
2021年11月19日 14点11分
6