如何用matlab进行多元非线性拟合自定义函数 y=A*x1/(1+B*x2+C*x3)+D 其中x1=[0.25,0.278,0.3125,0.357,0.4167,0.3,0.3333,0.375,0.7286,0.5];x2=[0,0.1111,0.125,0.14286,0.1667,0,0.1111,0.125,0.14286,0.1667];x3=[0,0,0.125,0.2857,0.5,0,0,0.125
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/02 07:48:06
![如何用matlab进行多元非线性拟合自定义函数 y=A*x1/(1+B*x2+C*x3)+D 其中x1=[0.25,0.278,0.3125,0.357,0.4167,0.3,0.3333,0.375,0.7286,0.5];x2=[0,0.1111,0.125,0.14286,0.1667,0,0.1111,0.125,0.14286,0.1667];x3=[0,0,0.125,0.2857,0.5,0,0,0.125](/uploads/image/z/10884312-0-2.jpg?t=%E5%A6%82%E4%BD%95%E7%94%A8matlab%E8%BF%9B%E8%A1%8C%E5%A4%9A%E5%85%83%E9%9D%9E%E7%BA%BF%E6%80%A7%E6%8B%9F%E5%90%88%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0+y%3DA%2Ax1%2F%281%2BB%2Ax2%2BC%2Ax3%29%2BD+%E5%85%B6%E4%B8%ADx1%3D%5B0.25%2C0.278%2C0.3125%2C0.357%2C0.4167%2C0.3%2C0.3333%2C0.375%2C0.7286%2C0.5%5D%3Bx2%3D%5B0%2C0.1111%2C0.125%2C0.14286%2C0.1667%2C0%2C0.1111%2C0.125%2C0.14286%2C0.1667%5D%3Bx3%3D%5B0%2C0%2C0.125%2C0.2857%2C0.5%2C0%2C0%2C0.125)
如何用matlab进行多元非线性拟合自定义函数 y=A*x1/(1+B*x2+C*x3)+D 其中x1=[0.25,0.278,0.3125,0.357,0.4167,0.3,0.3333,0.375,0.7286,0.5];x2=[0,0.1111,0.125,0.14286,0.1667,0,0.1111,0.125,0.14286,0.1667];x3=[0,0,0.125,0.2857,0.5,0,0,0.125
如何用matlab进行多元非线性拟合
自定义函数
y=A*x1/(1+B*x2+C*x3)+D
其中
x1=[0.25,0.278,0.3125,0.357,0.4167,0.3,0.3333,0.375,0.7286,0.5];
x2=[0,0.1111,0.125,0.14286,0.1667,0,0.1111,0.125,0.14286,0.1667];
x3=[0,0,0.125,0.2857,0.5,0,0,0.125,0.2857,0.5];
y=[0.7572,0.6559,0.6383,0.5636,0.4884,0.9783,0.7489,0.686,0.6288,0.4934];
求可执行代码!求出回归系数A、B、C、D!
如何用matlab进行多元非线性拟合自定义函数 y=A*x1/(1+B*x2+C*x3)+D 其中x1=[0.25,0.278,0.3125,0.357,0.4167,0.3,0.3333,0.375,0.7286,0.5];x2=[0,0.1111,0.125,0.14286,0.1667,0,0.1111,0.125,0.14286,0.1667];x3=[0,0,0.125,0.2857,0.5,0,0,0.125
function zd487022570
x1=[0.25,0.278,0.3125,0.357,0.4167,0.3,0.3333,0.375,0.7286,0.5];
x2=[0,0.1111,0.125,0.14286,0.1667,0,0.1111,0.125,0.14286,0.1667];
x3=[0,0,0.125,0.2857,0.5,0,0,0.125,0.2857,0.5];
y=[0.7572,0.6559,0.6383,0.5636,0.4884,0.9783,0.7489,0.686,0.6288,0.4934];
x = [x1; x2; x3];
% 使用最小二乘拟合:
% opt指定拟合选项(注意查看命令窗口提示的优化终止条件,如对结果不满意考虑适当修改)
% b0为初值(要慎重选择,不同初值得到的结果可能不同)
opt = optimset('MaxFunEvals',50000,'MaxIter',10000,'TolFun',1E-10)
% b0 = [0 -10 1 1];
% b0 = [0.6 -60 15 0.7];
b0 = [0.7 -137 40 0.7];
b = lsqcurvefit(@myfun,b0,x,y,[],[],opt);
A = b(1)
B = b(2)
C = b(3)
D = b(4)
% 把拟合结果与原始数据对照
plot(y,'-o');
hold on
plot(myfun(b,x),'r:x');
function y = myfun(x,xdata)
A = x(1);
B = x(2);
C = x(3);
D = x(4);
x1 = xdata(1,:);
x2 = xdata(2,:);
x3 = xdata(3,:);
y = A*x1./(1+B*x2+C*x3)+D;