matlab中如何自定义编写复杂函数并用它拟合

2024-05-16 13:12

1. matlab中如何自定义编写复杂函数并用它拟合

你可以查看这些回答,其具体的拟合方法和过程。
求一个MATLAB程序:要求用MATLAB 幂函数拟合方程 Y=A(X-h)^M;求程序以及A、h、M的值
求教如何用matlab拟合出一个复杂反应体系的动力学参数
求助一个带有线性约束条件的多条非线性曲线拟合问题
如何使用 MATLAB 进行威布尔函数拟合曲线
用matlab 将一组数据进行正态分布拟合
如有问题,可以进一步讨论。或私信联络。

matlab中如何自定义编写复杂函数并用它拟合

2. matlab函数拟合

问题出在,t=0时,Log10(t)是无穷大,所以运行程序出现警告。处理方法,人为地加一个最小量,即
t=[eps 0.3333333333333144  0.6666666666666856 1.0 ......]
程序修改后代码
t=[eps 0.3333333333333144  0.6666666666666856 1.0 ......]';
y=[0.7000000000000455 5.5 5.5 5.400000000000034 5.300000000000011 ......]';
[coefit,yfit]=f_mbpclft(t,y)   %f_mbpclft()自定义函数就是你给的内容
运行结果


3. 用matlab拟合函数

用matlab拟合成:(a/165000)*(2*x)^b+d*(2*x)^c这种形式,一般可以lsqcurvefit()来确定a,b,c,d的系数。
经拟合可以求得
a=0.00011353,b=1,c=-5.1844,d=-5.1844
R^2=0.97664    %相关系数(拟合度)

运行代码:

用matlab拟合函数

4. matlab拟合函数

E,F为什么不合成一个参数?

A=[1.30 1.65 1.95 2.24 1.18]';
B=[0.0334 0.628 0.698 -1.22 3.577]';
C=[2.97 2.90 3.04 2.86 2.47]';
D=[1.34 2.09 2.02 1.20 -2.22]';
E=log10(0.00001*0.00000102)*ones(size(A));
x = [B C D]\(A-E) % x是三维列向量,其分量分别是题目中的x,y,z

x =
   -0.1558
    4.6465
   -0.5298

5. matlab拟合自定义多元函数,求拟合系数

利用最小二乘法做拟合
x = [620 724 789 663 690 700 745 628 601 739];
y = [658 749 799 682 706 735 768 641 615 767];
z = [340 400 605 433 450 354 409 590 584 387];
w = [1070469.3811, 716662.5706, 401191.2893, 645279.5126, 543760.2719, 913063.85240, 656069.2929,637048.2656, 708880.29095, 59848.4834];
x1 = y.*z./x;
x2 = y.^2./x;
x3 = y;
q=[x1;x2;x3];
M = q*q';
b = q*w';
ABC = inv(M)*b;
wfit = ABC(1)*x1 + ABC(2)*x2 + ABC(3)*x3;
plot(w,wfit,'r*')
hold on
plot([min([w,wfit]),max([w,wfit])],[min([w,wfit]),max([w,wfit])])
legend('w-wfit','y=x')
xlabel('w');ylabel('wfit')
hold on
结果
ABC =

   1.0e+04 *

    0.1832
    2.8775
   -3.0020

matlab拟合自定义多元函数,求拟合系数

6. 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('人口(千万)');
最后,编写程序,并运行可以得到如下结果。
其他问题与上述过程类似。


7. 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)

matlab拟合函数?

8. 关于matlab拟合

用matlab拟合三维曲线函数,一般可以用lsqcurvefit或nlinfit等函数来求解其函数的系数。求解步骤:
1、已知x、y、z的对应的数据,若干组(数据要求十组以上)
x=[。。。];y=[。。。];z=[。。。];
X=[x y]; %组成X向量组
2、自定义拟合函数,例如,fun=@(a,X)a(1)*X(:,1).^2+a(2))*X(:,2).^2
3、初定a的初值,a0
4、求解拟合系数,a=lsqcurvefit(fun,a0,x,z)
5、已知值与拟合值对比,并求其决定系数 R²
z1=fun(a,X)
[z  z1] %对比
6、判断其决定系数 R²是否接近于1。
最新文章
热门文章
推荐阅读