怎样用matlab指数函数拟合

2024-05-16 17:49

1. 怎样用matlab指数函数拟合

拟合函数表达式:y=a*exp(b+cx)
式中a=0.06154920769,
b=-3.18125203,
c=7.822374803
拟合度0.9725(相关系数)
用V=A(1)*exp(A(2)*I)+A(3)*exp(A(4)*I)模型比较好。
A = nlinfit(X,Y,myfun,[700 -0.01 -700 -1 ])
I=min(X):0.1:max(X);
V=A(1)*exp(A(2)*I)+A(3)*exp(A(4)*I);
plot(X,Y,'o',I,V)
结果:A =668.9571 -0.0688 -656.7991 -1.0321

意义
a>1时,Y随X增大而增大,先快后慢;0<a<1时,Y随X增大而减少,先快后慢。当以Y和lnX绘制的散点图呈直线趋势时,可考虑采用对数函数描述Y与X之间的非线性关系,式中的b和a分别为斜率和截距。
曲线直线化是曲线拟合的重要手段之一。对于某些非线性的资料可以通过简单的变量变换使之直线化,这样就可以按最小二乘法原理求出变换后变量的直线方程,在实际工作中常利用此直线方程绘制资料的标准工作曲线,同时根据需要可将此直线方程还原为曲线方程,实现对资料的曲线拟合。
以上内容参考:百度百科-曲线拟合

怎样用matlab指数函数拟合

2. matlab中指数模型函数拟合

clc
clear
close all
x=[0,100,200,300,400,500];
y=[1,0.62,0.40,0.21,0.18,0.12];
xx=x(2:end);
yy=y(2:end);
z=log(yy)./xx;
c=polyfit(xx,z,1);
a=c(1)
b=c(2)
ny=exp(a*x.^2+b*x);
plot(x,y,'r*')
hold on
ezplot(['exp(',num2str(a),'*x.^2+',num2str(b),'*x)'],[0 500 min(y) max(y)])
xlabel('x')
ylabel('y')
legend('原始数据散点图','拟合后函数曲线图')


运行结果

a =

    1.374119463200583e-006


b =

  -0.005030534633423

3. matlab 指数函数曲线拟合

你可以用 fit()函数拟合,得到系数a、b的值。
数学模型应选用y=a*exp(-bx)
其中:       a =      0.4467 ; b =       2.151;

matlab 指数函数曲线拟合

4. 下面这个问题如何用matlab指数函数拟合? 求代码谢谢

fun=inline('a(1)+a(2)*exp(-a(3)*t)','a','t');    %建立函数t=[14.57 6.05 4.57 3.54 2.89 2.45 2.12 1.89 1.7 1.55 0.4 0.41 0.43 0.44 0.43 0.43];t=[0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75];a=lsqcurvefit(fun,[0,0,0],t,t);    %拟合hold on;plot(t,t,'bo');    %画原始数据点  t0=min(t):max(t);t0=fun(a,t0);plot(t0,t0,'r');  %画拟和曲线hold off;disp(a)  %显示a、b、r参数的值【摘要】
下面这个问题如何用matlab指数函数拟合?  求代码谢谢
【提问】
fun=inline('a(1)+a(2)*exp(-a(3)*t)','a','t');    %建立函数
t=[14.57 6.05 4.57 3.54 2.89 2.45 2.12 1.89 1.7 1.55 0.4 0.41 0.43 0.44 0.43 0.43];
t=[0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75];
a=lsqcurvefit(fun,[0,0,0],t,t);    %拟合
hold on;plot(t,t,'bo');    %画原始数据点  
t0=min(t):max(t);
t0=fun(a,t0);
plot(t0,t0,'r');  %画拟和曲线
hold off;disp(a)  %显示a、b、r参数的值【回答】

5. 用matlab拟合指数形式的曲线

取对数,展开:log(y)=-x^2/c^2+2*x*b/c^2+log(a)-(b/c)^2
用matlab解超定方程组的功能求解:
[-x^2,2*x,1]*[1/c^2;b/c^2;log(a)-(b/c)^2]=log(y)

%代码:

x=[30 300 500 800 ]'
y=[1750 1600 950 500 ]'

A=[-x.^2,2*x,1&x]



B=log(y)

z=A\B


c=sqrt(1/z(1))
b=z(2)/z(1)
a=exp(b*z(2)+z(3))

用matlab拟合指数形式的曲线

6. matlab数据拟合函数

这,,,,,这是二值函数啊,手动给出一个解吧:
y = -2*sgn(x-31);
其中sgn是符号函数
如果要用连续函数拟合的话,可以用sigmod函数:
y = -2/(exp(-x+31.5)+1) + 1;

7. matlab拟合函数?

题主给出中国人口预测问题(二),可以使用英国经济学家马尔萨斯提出的Malthus模型来拟合与预测。其步骤:
第一步,自定义Malthus模型函数(指数函数),如
func=@(k,t)N0*exp(D*(t-t0))
这里,N0=60.2;t0=1954;
第二步,利用1954-2005年的数据,分别使用lsqcurvefit函数,求出系数D。即
[D,resnorm,residual,exitflag]=lsqcurvefit(func,a0,t,N);
第三步,计算拟合值,即
x1=func(D,t);
第四步,计算相关系数R^2,即
R2=R2_fun(x,x1);
第五步,预测2010年和2030年的人口数,即
xhat=func(D,2010);
disp(['预测2010年人口数为',num2str(xhat),'千万'])
xhat=func(D,2030);
disp(['预测2030年人口数为',num2str(xhat),'千万'])
第六步,使用plot函数绘制,中国人口数的统计数据与预测模型曲线对比图,即
plot(t,x,'*-',t,x1,'+-')
第七步,标注图例,即
legend('统计数据','Malthus模型')
第八步,编写标题,即
title='中国人口数的统计数据与Malthus模型曲线对比';
第九步,标注坐标轴名称,即
xlabel('年份');ylabel('人口(千万)');
最后,编写程序,并运行可以得到如下结果。
其他问题与上述过程类似。


matlab拟合函数?

8. matlab拟合函数?

首先,把给出的向量方程,改写为
a1*X+a2*Y+a3=-(X²+Y²)
Z(x,y)=-(x²+y²)=a1*x+a2*y+a3
然后,我们用regress最小二乘法回归函数来拟合a1、a2、a3的系数
x=[。。。] %数据
y=[。。。] %数据
Z=-(x²+y²);
X=[x  y  ones(n,1)]; %n=x或y数据的个数
a= regress(Z,X); %求出系数a1,a2和a3
此时,我们就可以得到如下系数:
a1=a(1),a2=a(2)和a3=a(3)