方便大家使用的最小二乘法曲线拟合的Matlab程序
非常方便用户使用,直接按提示操作即可;这里我演示一个例子:(红色部分为用户输入部分,其余为程序运行的结果,结果图为Untitled.fig,Untitled2.fig) 请以向量的形式输入x,y. x=[1,2,3,4] y=[3,4,5,6]
通过下面的交互式图形,你可以事先估计一下你要拟合的多项式的阶数,方便下面的计算.
polytool()是交互式函数,在图形上方[Degree]框中输入阶数,右击左下角的[Export]输出图形
回车打开polytool交互式界面 回车继续进行拟合
输入多项式拟合的阶数 m = 4
Warning: Polynomial is not unique; degree >= number of data points. > In polyfit at 72 In zxecf at 64
输出多项式的各项系数 a = 0.0200000000000001 a = -0.2000000000000008 a = 0.7000000000000022 a = 0.0000000000000000 a = 2.4799999999999973 输出多项式的有关信息 S R: [4x5 double] df: 0
normr: 2.3915e-015
Warning: Zero degrees of freedom implies infinite error bounds. > In polyval at 104 In polyconf at 92 In zxecf at 69 观测数据 拟合数据 x y yh
1.0000 3.0000 3.0000 2.0000 4.0000 4.0000 3 5 5
4.0000 6.0000 6.0000 剩余平方和 Q = 0.000000 标准误差 Sigma = 0.000000 相关指数 RR = 1.000000
请输入你所需要拟合的数据点,若没有请按回车键结束程序. 输入插值点 x0 = 3
输出插值点拟合函数值 y0 = 5.0000
>> 结果:
untitled.fig
untitled2.fig
一些matlab优化算法代码的分享
代码的目录如下:
欢迎讨论
1.约束优化问题:
minRosen(Rosen梯度法求解约束多维函数的极值)(算法还有bug) minPF(外点罚函数法解线性等式约束)
minGeneralPF(外点罚函数法解一般等式约束) minNF(内点罚函数法) minMixFun(混合罚函数法)
minJSMixFun(混合罚函数加速法) minFactor(乘子法)
minconPS(坐标轮换法)(算法还有bug) minconSimpSearch(复合形法)
2.非线性最小二乘优化问题 minMGN(修正G-N法)
3.线性规划:
CmpSimpleMthd(完整单纯形法)
4.整数规划(含0-1规划) DividePlane(割平面法) ZeroOneprog(枚举法)
5.二次规划
QuadLagR(拉格朗日法) ActivedeSet(起作用集法)
6.辅助函数(在一些函数中会调用) minNT(牛顿法求多元函数的极值) Funval(求目标函数的值)
minMNT(修正的牛顿法求多元函数极值) minHJ(黄金分割法求一维函数的极值)
7.高级优化算法
1)粒子群优化算法(求解无约束优化问题) 1>PSO(基本粒子群算法)
2>YSPSO(待压缩因子的粒子群算法)
3>LinWPSO(线性递减权重粒子群优化算法) 4>SAPSO(自适应权重粒子群优化算法)
5>RandWSPO(随机权重粒子群优化算法) 6>LnCPSO(同步变化的学习因子)
7>AsyLnCPSO(异步变化的学习因子)(算法还有bug) 8>SecPSO(用二阶粒子群优化算法求解无约束优化问题)
9>SecVibratPSO(用二阶振荡粒子群优化算法求解五约束优化问题) 10>CLSPSO(用混沌群粒子优化算法求解无约束优化问题) 11>SelPSO(基于选择的粒子群优化算法)
12>BreedPSO(基于交叉遗传的粒子群优化算法) 13>SimuAPSO(基于模拟退火的粒子群优化算法) 2)遗传算法
1>myGA(基本遗传算法解决一维约束规划问题)
2>SBOGA(顺序选择遗传算法求解一维无约束优化问题)
3>NormFitGA(动态线性标定适应值的遗传算法求解一维无约束优化问题) 4>GMGA(大变异遗传算法求解一维无约束优化问题) 5>AdapGA(自适应遗传算法求解一维无约束优化问题) 6>DblGEGA(双切点遗传算法求解一维无约束优化问题)
7>MMAdapGA(多变异位自适应遗传算法求解一维无约束优化问题)
自己编写的马尔科夫链程序
A 代表一组数据序列 一维数组 本程序的操作对象也是如此
t=length(A); % 计算序列“A”的总状态数
B=unique(A); % 序列“A”的独立状态数顺序,“E”