在matlab中用非线性拟合函数求参数时,为什么要给定初始值
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/19 17:15:57
你提供的两个方程都不好使,用我的.R-square:0.9845,AdjustedR-square:0.9799.clearn1=[1092.4109910971095.61083.91078.210
x1=[10198.498.898.598.698.298.899.299.5100.6101.9101.5102.7102.4102.8103.1102.9103.3103.5103.6104.41
线性模型、非线性模型是以待优化参数W为参考(而不是看X).y = w' * x ('表示转置)描述的是线性模型.题目中要拟合的函数是:
MATLAB中有cftool拟合工具箱,在command窗口输入cftool,可以通过图形界面去完成.很方便的.
拟合函数y*=a1*x1^a2+a3*x2^a4+a5*x3^a6-a7*x1*x2+a8*x1*x3+a9a1=0.000001669829313a2=133.8372554a3=151.09635
用polyfit函数,(用来多项式拟合的,是用最小二乘法)举个例子x=[90919293949596];z=[70122144152174196202];a=polyfit(x,z,1)结果:a=1.
你要的拟合函数,即:y=(230-a)*exp(-((x-1/4)/b)^c)+a约束条件1
程序是A=[0000004500084005000482610055001444340060003557600065091536940007002077241000007511143095691000
推荐这个模型比较好.GeneralmodelExp2:f(x)=a*exp(b*x)+c*exp(d*x)Coefficients(with95%confidencebounds):a=2524(22
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%functionF=zh
/>补充回答:数据不好建立函数文件:functiony=myfun(beta,x)y=2.350176*beta(1)*(1-1/beta(2))*(1-(1-x(:,1).^(1/beta(2)))
clear;clc;A='kdbac';t=0:17;x=[26.4126.9427.4627.9928.5129.0430.4831.9133.3534.7836.2237.6639.0940.53
拟合函数的输入有两个参数,第一个应该是你要拟合的参数,对应于这里a第二个是输入的自变量,对应于这里的x多维的可以用多列数据,注意行数和y相同还要注意,函数式里向量间的*,\,^,要用.*,.\,.^x
f=inline('1./sqrt((c*x).^2+1)','c','x');x=0:0.1:3y=1./sqrt((0.5*x).^2+1);f=inline('1./sqrt((c*x).^2+
f=[];u=[];plot(f,u,'o')holdonfun=inline(‘c(1)./((c(2).^2-f.^2).^2+c(3).*f.^2).^0.5','c','f');c=nlinf
ln->logMatlab中ln就是log你的初值我改成000了,111的话,计算出来有一小部分虚数成份.另外最后一个plot我也改了一下,你的xx只有一个值啊,我也就直接改成x做图了.因为你的yy也
可用matlab曲线拟合工具箱,里面有各式各样的拟合函数可供选用...x=[367 379 414  
可能是因为P(v)对参数b太敏感,成为病态函数.可以改写函数成ln(-ln(1-P))=bln((v-v0)/(va-v0)).代码如示:v=[3252347638146615807594381044
functionf=curvefun1(x)tdata=1:12;cdata=[100908976554030108887];f=cdata-x(1)*(1+x(2)*exp(-x(1)*x(3)*t
%1非线性拟合warningoffx=[100200400600800]';y=[406080120150]';f=fittype('a+b*x^m');options=fitoptions('a+b