matlab非线性优化的求解function f=curvefun1(x,tdata)f=x(1)*x(3)/(x(1)-x(2))*(exp(-x(2)*tdata)-exp(-x(1)*tdata))tdata=[0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5 6 7 8 9 10 11 12 13 14 15 16];cdata=[15 32 38 41 41 40 35 35 28 25 24 20 20 18 17 1

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 09:50:04

matlab非线性优化的求解function f=curvefun1(x,tdata)f=x(1)*x(3)/(x(1)-x(2))*(exp(-x(2)*tdata)-exp(-x(1)*tdata))tdata=[0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5 6 7 8 9 10 11 12 13 14 15 16];cdata=[15 32 38 41 41 40 35 35 28 25 24 20 20 18 17 1
matlab非线性优化的求解
function f=curvefun1(x,tdata)
f=x(1)*x(3)/(x(1)-x(2))*(exp(-x(2)*tdata)-exp(-x(1)*tdata))
tdata=[0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5 6 7 8 9 10 11 12 13 14 15 16];
cdata=[15 32 38 41 41 40 35 35 28 25 24 20 20 18 17 14 11 10 9 6 6 4 3];
x0=[]
x=lsqcurvefit('curvefun1',x0,tdata,cdata)
f=curvefun1(x,tdata)
x0中应该填什么?我这个程序还有错误吗?
求指导啊

matlab非线性优化的求解function f=curvefun1(x,tdata)f=x(1)*x(3)/(x(1)-x(2))*(exp(-x(2)*tdata)-exp(-x(1)*tdata))tdata=[0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5 6 7 8 9 10 11 12 13 14 15 16];cdata=[15 32 38 41 41 40 35 35 28 25 24 20 20 18 17 1

参考代码如下:

function zd
tdata=[0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5 6 7 8 9 10 11 12 13 14 15 16];
cdata=[15 32 38 41 41 40 35 35 28 25 24 20 20 18 17 14 11 10 9 6 6 4 3];
x0=[1 2 3];
opt=optimset('MaxFunEvals',1e5,'MaxIter',1e5);
x=lsqcurvefit(@curvefun1,x0,tdata,cdata,[],[],opt);
f=curvefun1(x,tdata);
plot(tdata,cdata,'b.-',tdata,f,'r:x')
legend('原始数据','拟合数据')

function f=curvefun1(x,tdata)
f=x(1)*x(3)/(x(1)-x(2))*(exp(-x(2)*tdata)-exp(-x(1)*tdata));

 

拟合结果如下图所示:

说明:

这是一个拟合问题,也算是非线性优化的一种情况;

根据拟合函数的形式看,有三个拟合参数,所以初值x0应该有三个元素,原则上可以任意选取,但不同的初值有可能会影响到结果.另外,从表达式看,x(1)和x(2)不能相同.这里取x0=[1 2 3],拟合成功,从图中看效果还不错,结果为[2.0852  0.1655  50.0662].

函数curvefun1中的表达式有错,其中有一个全角括号.

代码分成两部分,一部分用于定义拟合函数,另一部分是主程序.为了方便保存到同一个文件中,把主程序也定义为函数,并且放在代码的最前面.

按照优化的默认参数设置,得到的结果不足以满足精度要求,所以,用optimset更改优化的设置.

其它一些小的细节,比如是否在语句后加分号,不是大问题,稍微注意点就好.

写了不少,希望能帮到楼主.

优化非线性方程组的求解用MATLAB和C语言哪个好?原数据很多的 怎样用Matlab求解非线性方程组 用matlab怎么求解含有三角函数的非线性方程 在Matlab中用什么函数求解非线性方程的根?写出求解如下非线性方程根的Matlab代码.x^2+exp(x)-3=0 求解非线性方程组的牛顿迭代法的具体思想及方法并附有matlab 源程序 matlab 中fsolve求解非线性方程组可以给定解的区间么 用matlab怎么求解含有三角函数的非线性方程中解x为多少? 非线性最小二乘问题用matlab优化工具箱里提供的lsqonlin函数来求解一个含有四个变量的函数,求解出来的结果发现:总是只有其中一个变量的结果是接近实际值的,其他三个变量的结果则完全与 如何运用matlab求解非线性偏微分方程组 如何用Matlab求有限制条件的目标函数的最小值求解一个优化问题(目标函数非线性,约束函数线性)?minZ=56*x11+74*x12+61*x13+63*x14+63*x21+69*x22+65*x23+71*x24 +57*x31+77*x32+63*x33+67*x34+55*x41+76*x42+62 matlab求解优化问题 采用非线性最小二乘法 lsqnonlin函数 编程遇到问题采用lsqnonlin函数 编写的一个函数m文件如下:function F=myfun3(a)i=1:5;mi=[0.0686,1.0714,0.0714,3.2445,-0.0798];syms x;t=a(1)*x+a(2)*x^2+a(3)*x^3+ 最优化设计中线性规划与非线性规划的区别 matlab求解非线性方程(急,如何用matlab求解下面这个非线性方程?貌似应该不难这个方程应该有多个解,想查看前大于0的那前10个,应该怎么办? matlab优化 好,请问下matlab软件可以解偏微分方程中的哪几类!能不能求解非线性的波动方程呢? 求教一个用matlab求解二元非线性方程组的问题具体私信我,我会把问题发到油箱 matlab 求解优化问题,过程信息显示用matlab优化函数【比如fmincon等】 求解优化问题时,总是显示一大堆的优化过程信息【比如用什么算法,迭代次数,梯度等】,请问,如何屏蔽这些信息的显示?------ MATLAB求解非线性方程f(x)=sin⁡(x)-x^2/4=0.分别利用二分法、最速下降法和牛顿法求解求解非线性方程f(x)=sin⁡(x)-x^2/4=0.分别利用二分法、最速下降法和牛顿法求解该非线性方程的非