Matlab非线性拟合给定方程程序如下,就是找不到那里错了.求大神指教.x=[3252 3476 3814 6615 8075 9438 10448 26112 28594 31651]; y=[0.7/10.4 1.7/10.4 2.7/10.4 3.7/10.4 4.7/10.4 5.7/10.4 6.7/10.4 7.7/10.4 8.7/10.4 9.7/10.4]; fu

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/13 11:11:41

Matlab非线性拟合给定方程程序如下,就是找不到那里错了.求大神指教.x=[3252 3476 3814 6615 8075 9438 10448 26112 28594 31651]; y=[0.7/10.4 1.7/10.4 2.7/10.4 3.7/10.4 4.7/10.4 5.7/10.4 6.7/10.4 7.7/10.4 8.7/10.4 9.7/10.4]; fu
Matlab非线性拟合给定方程
程序如下,就是找不到那里错了.求大神指教.
x=[3252 3476 3814 6615 8075 9438 10448 26112 28594 31651];
 y=[0.7/10.4 1.7/10.4 2.7/10.4 3.7/10.4 4.7/10.4 5.7/10.4 6.7/10.4 7.7/10.4 8.7/10.4 9.7/10.4]; func=inline('1-exp(-(((x-a(1))./(a(2)-a(1))).^a(3)))','a','x'); 
a=nlinfit(x,y,func,[0 0 0]);


结果总是有warning的提示,说是Jacobian的Volumns是0,模型无意义.
我尝试把a的初值定义为[1 1 1],或者[-999 -999 -999],但都是同样的错误.


我给定的方程其实就是Weibull函数.我想通过matlab直接拟合出其中的三个参数.

0

Matlab非线性拟合给定方程程序如下,就是找不到那里错了.求大神指教.x=[3252 3476 3814 6615 8075 9438 10448 26112 28594 31651]; y=[0.7/10.4 1.7/10.4 2.7/10.4 3.7/10.4 4.7/10.4 5.7/10.4 6.7/10.4 7.7/10.4 8.7/10.4 9.7/10.4]; fu
可能是因为P(v)对参数b太敏感,成为病态函数.可以改写函数成ln(-ln(1-P)) = b ln((v-v0)/(va-v0)).代码如示:


v = [3252 3476 3814 6615 8075 9438 10448 26112 28594 31651];
p = [0.7/10.4 1.7/10.4 2.7/10.4 3.7/10.4 4.7/10.4 5.7/10.4 6.7/10.4 7.7/10.4 8.7/10.4 9.7/10.4];
f = @(a,v)a(3)*log((v-a(1))/(a(2)-a(1)));
a = nlinfit(v,log(-log(1-p)),f,[1 2 3])
plot(v,p,'o',v,1-exp(-exp(f(a,v))));

此外,这一题还可以使用遗传算法来求解(因为x较大,这里将其放缩):


v = [3252 3476 3814 6615 8075 9438 10448 26112 28594 31651]/10000;
p = [0.7/10.4 1.7/10.4 2.7/10.4 3.7/10.4 4.7/10.4 5.7/10.4 6.7/10.4 7.7/10.4 8.7/10.4 9.7/10.4];
f = @(a,v)1-exp(-(((v-a(1))./(a(2)-a(1))).^a(3)));
a = ga(@(a)norm(p-f(a,v)),3);
a([1 2]) = a([1 2])*10000
plot(v,p,'o',v,f(a,v*10000));
结果与改写函数类似.

Matlab非线性拟合给定方程程序如下,就是找不到那里错了.求大神指教.x=[3252 3476 3814 6615 8075 9438 10448 26112 28594 31651]; y=[0.7/10.4 1.7/10.4 2.7/10.4 3.7/10.4 4.7/10.4 5.7/10.4 6.7/10.4 7.7/10.4 8.7/10.4 9.7/10.4]; fu MATLAB二元非线性拟合我有一组数据,其中包含三个变量X,Y,Z,现在需要求出Z与X、Y的非线性关系,这应该拟合成什么样的方程啊,指数方程,还是一般的多次方程,抑或是别的什么方程?MATLAB程序怎么 已知方程如何用MATLAB进行非线性拟合求模型参数 matlab 非线性拟合拟合参数 Nm 和 k ,见图 matlab 拟合一元非线性拟合 用什么函数? matlab二元拟合程序是什么 matlab数据拟合程序问题!要求如下:输入变量a,b同为n维行向量,a为被拟合所有节点形成的向量,b为相应的函数值所形成的向量 .输出:用2次多项式 ax^2+bx+c 拟合给定的数据(最小二乘解),输出 matlab 非线性曲线拟合表达式书写与初值选取本人先研究采用matlab进行非线性数据拟合,编写的函数如下[filename,filepath]=uigetfile('*.txt','选择拟合的数据文件');%弹出对话框,然后选择你要处理的文 matlab非线性拟合问题已知f=J*Ld/Li(1-exp(-Ld/Li)),Ld=t*(Voc-x)在函数中 J=21.18、Li=1*e-6、Voc=0.418.f和X可以给定一系列值如下:x f51.885 -21.482386.4 -21.0836134.73 -20.98485157.74 -20.90685240.6 -20.30025321.15 -19.5 matlab解非线性方程问题 matlab中如何做非线性最小二乘拟合 编写MATLAB程序实现多项式拟合 MATLAB拟合类似反比例函数的程序. 最小二乘拟合 matlab算法程序! 在Matlab中用什么函数求解非线性方程的根?写出求解如下非线性方程根的Matlab代码.x^2+exp(x)-3=0 matlab的非线性拟合MATLAB如何进行非线性拟合呢?比如说y=1/((c*x)^2+1)^0.5如何拟合出参数c呢? matlab中在非线性回归问题matlab中,在非线性回归检验中sse是什么意思啊?有什么用处?代表了什么?越小越好?一般数值多少算方程拟合的好? 请Matlab高手看看我的程序问题出在哪用Levenberg-Marquardt法进行非线性拟合,运行发现前后维数不匹配,方程是D=a*t^b,其中D和b的数据在开头引用了,syms a b y x real;f=a*(x^b);Jsym=jacobian(f,[a b])A=textread('dat