Matlab指数拟合问题:谁能帮我看看为什么画出来的图像函数部分是一条直线呢?程序如下:第一步:生成目标函数的函数文件goal002.mfunction f=goal002(a,x)f=a(1)+(-a(1)+a(2))*exp(-a(3)*x);第二步:生成计

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/23 21:55:17
Matlab指数拟合问题:谁能帮我看看为什么画出来的图像函数部分是一条直线呢?程序如下:第一步:生成目标函数的函数文件goal002.mfunctionf=goal002(a,x)f=a(1)+(-a

Matlab指数拟合问题:谁能帮我看看为什么画出来的图像函数部分是一条直线呢?程序如下:第一步:生成目标函数的函数文件goal002.mfunction f=goal002(a,x)f=a(1)+(-a(1)+a(2))*exp(-a(3)*x);第二步:生成计
Matlab指数拟合问题:谁能帮我看看为什么画出来的图像函数部分是一条直线呢?
程序如下:
第一步:生成目标函数的函数文件goal002.m
function f=goal002(a,x)
f=a(1)+(-a(1)+a(2))*exp(-a(3)*x);
第二步:生成计算的主程序cfit002.m
clear;
x=[1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 2000];
y=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5 251.4 281.4];
a0=[1 1 1];
[a,jm]=lsqcurvefit(@goal002,a0,x,y)
x1=sort(x);
y1=goal002(a,x1);
plot(x,y,'r*');hold on
plot(x1,y1)
我的曲线画出来为什么是直线呢?
谁能帮我看看^

Matlab指数拟合问题:谁能帮我看看为什么画出来的图像函数部分是一条直线呢?程序如下:第一步:生成目标函数的函数文件goal002.mfunction f=goal002(a,x)f=a(1)+(-a(1)+a(2))*exp(-a(3)*x);第二步:生成计
你的代码没错,你要拟合的曲线是 f=a(1)+(-a(1)+a(2))*exp(-a(3)*x);
     问题就出在exp(-a(3)*x)上  ,由于x的值都很大,因此exp(-a(3)*x)在超过了matlab的最小数,因此matlab显示的是0.所以当你用拟合的曲线计算在x出的值时,都等于a(1)了,因为后面的等于零.因此你画出的图像就是直线了.
我试了一下确实如此.
>> exp(-1790)
ans =
     0
   还有个原因,即使把你的x除以100也会得到一条直线,因为这样的x使得
(-a(1)+a(2))*exp(-a(3)*x)的值很小
>> x
x =
  Columns 1 through 10
   17.9000   18.0000   18.1000   18.2000   18.3000   18.4000   18.5000   18.6000   18.7000   18.8000
  Columns 11 through 20
   18.9000   19.0000   19.1000   19.2000   19.3000   19.4000   19.5000   19.6000   19.7000   19.8000
  Columns 21 through 22
   19.9000   20.0000
>> (-a(1)+a(2))*exp(-a(3)*x)
ans =
  1.0e-005 *
  Columns 1 through 10
   -0.1578   -0.1428   -0.1292   -0.1169   -0.1058   -0.0957   -0.0866   -0.0784   -0.0709   -0.0642
  Columns 11 through 20
   -0.0581   -0.0525   -0.0475   -0.0430   -0.0389   -0.0352   -0.0319   -0.0288   -0.0261   -0.0236
  Columns 21 through 22
   -0.0214   -0.0193
由于a(1)=94.7727,与上述值比起来要大很多 ,因此加起来还是等于94.7727.
>> ans+94.7727
ans =
  Columns 1 through 10
   94.7727   94.7727   94.7727   94.7727   94.7727   94.7727   94.7727   94.7727   94.7727   94.7727
  Columns 11 through 20
   94.7727   94.7727   94.7727   94.7727   94.7727   94.7727   94.7727   94.7727   94.7727   94.7727
  Columns 21 through 22
   94.7727   94.7727
 这是不是意味着matlab出错呢?不是的,如果我们换成长格式,让matlab更加精确,就可以看出差别了.
format long
>> ans
ans =
  Columns 1 through 5
  94.772698421642701  94.772698571843264  94.772698707750351  94.772698830724153  94.772698941995472
  Columns 6 through 10
  94.772699042677914  94.772699133779156  94.772699216210967  94.772699290798357  94.772699358287809
  Columns 11 through 15
  94.772699419354808  94.772699474610505  94.772699524607916  94.772699569847461  94.772699610781885
  Columns 16 through 20
  94.772699647820886  94.772699681335155  94.772699711660124  94.772699739099295  94.772699763927278
  Columns 21 through 22
  94.772699786392565  94.772699806719999
这样就很明白了,造成这种问题的原因是值和值之间的相差太小,因此画出的也是直线.
    结论是:  必须把x缩小,再使用对数y轴,如图:

Matlab指数拟合问题:谁能帮我看看为什么画出来的图像函数部分是一条直线呢?程序如下:第一步:生成目标函数的函数文件goal002.mfunction f=goal002(a,x)f=a(1)+(-a(1)+a(2))*exp(-a(3)*x);第二步:生成计 matlab中拟合曲线的问题 谁能帮我查出为何这个程序是错误的啊? matlab拟合的问题现在要拟合一组数据,横坐标的间距为0.000001(如4.000005,4.000007),纵坐标间距约为1,拟合函数为指数形式:a*exp(bx)+c,求教这种差距如此之大的数据该用什么函数拟合比较合适? matlab非线性拟合问题,急用,待拟合函数形式为:ln[(230-a)/(y-a)]=[(x-1/4)/b]^c,需要拟合a,b,c,其中40 现在又这么一个问题,麻烦谁给我用matlab编写个拟合曲线的程序,让我的到拟合之后的公式c 和 a*b^2 具有 很好的 指数相关性,通过a,b,c的几组值 ,大致得到c 和a*b^2之间的关系式,. matlab 关于拟合的问题我有一组x和y 要验证他们的乘积为常数 使用拟合对么 拟合的过程到底是一个怎样的过程啊 我知道polyfit和polyval函数 拟合的过程是改变polyfit中的参数n 来肉眼看哪种最图 matlab数据拟合问题我想要拟合y=a*x1+b*x2+c形式的曲线,用matlab如何实现? matlab 拟合误差分析初学matlab,留的大作业:要分析多项式拟合与指数拟合 题目中有一组点(两个向量形式给出),我算出了3~8阶多项式和2~7阶指数函数 现在该怎样分析两种拟合的误差,或是说如何 在matlab中进行非线性拟合,不知道那出错了,如果用指数增长模型模拟美国人口1790年至2000年的变化过程,请用Matlab统计工具箱的函数nlinfit计算指数增长模型的以下三个数据拟合问题:(1)取定 origin指数衰减拟合为什么是条直线 matlab中最小二乘法拟合几个点t=0:5:55;y=[0 1.27 2.16 2.86 3.44 3.87 4.15 4.37 4.51 4.58 4.62 4.64];拟合为 y=at+bt^2+ct^3 (没有常数项),求abc让我看看代码吧.能不能用polyfit求解啊? amos拟合指数问题我的模型修正到最后,除了GFI为0.884 ,NFI为0.864,其余的拟合指标都达到0.9以上,rmsea也小于0.08 ,卡方自由度之比小于2,这样的模型数据用于毕业大论文能行吗 用matlab拟合指数形式的曲线比如已知多组点(x,y),它符合指数表达式 ,怎么把表达式求出来我的题目中x=[30 300 500 800];y=[1750 1600 950 500];通过这些数据拟合出上面给出的指数形式公式,求具体程序. 一些关于MATLAB的题目4,根据表1.1的数据,完成下列数据拟合问题(MATLAB)(1)如果用指数增长模型x(t)=x0e^r(t-t0)模拟美国人口1790到2000年的变化过程,请用MATLAB统计工具箱的函数nlinfit计算指数增 如何用matlab拟和y=ax1+bx2其中x1、x2为2个变量,看了matlab拟合的一些问题,发现都是只有一个变量. matlab求曲线线性拟合问题x:1 2 3 4 5y:4 4.5 6 8 10权函数值均为1求线性拟合函数,这个要怎么用MATLAB来解哦? 关于matlab指数拟合的问题,我现在已知一个函数 y=A*exp(ax)+B*exp(-ax)+96211x是自变量 A、B、a是三个未知的常数 x=0时y=0x=0.6时y=32625x=1.2时y=45706x的变化范围是0到1.5我如何利用matlab作出此函数的拟 matlab中指数模型函数拟合已知点x=[0,100,200,300,400,500],y=[1,0.62,0.40,0.21,0.18,0.12],并且已知数学模型为y=exp(a*x^2+b*x),请问怎么拟合这些数据点得到拟合曲线并且得到系数a和b呢?