早教吧作业答案频道 -->其他-->
如何用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!
自定义函数
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!
▼优质解答
答案和解析
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;
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;
看了 如何用matlab进行多元非...的网友还看了以下:
用lingo解决maxz=1.90-1.8x1-2.02x2-0.1x3(未知数X1、X2、X3) 2020-05-24 …
若函数f(x)=x3+x2-2x-2正整数为零点附近的函数值用二分法计算,其参考数据如下:f(1) 2020-07-18 …
(1-t)x1-2x2+4x3=02x1+(3-t)+x3=0X1+x2+(1-t)x3=0问t为 2020-07-20 …
0.33333333(3的循环)X3=0.99999999(9的循环)0.33333333(3的循 2020-07-31 …
前辈们教教我5道高一数学题,虽然不是很难但我很难懂啊~(1)已知x+y=1,求x3+y3+3xy的值 2020-10-31 …
整数x0,x1,x2,x3,…,x2003满足条件:x0=0,|x1|=|x0+1|,|x2|=|x 2020-10-31 …
设随机变量X1,X2,X3相互独立有相同的概率分布P{Xi=0}=q,P{Xi=1}=p(i=1,2 2020-10-31 …
数学专家!数学专家!数学专家!~~~~~~1数列0.5,0.55,0.555,...0.55~~(n 2020-10-31 …
已知函数F(X)=-X-X3,,X1,X2,X3属于R,且X1+X2>0,X2+X3>0,X1+X3 2020-12-08 …
多元一次方程求解,n-1个方程式,n-1个未知数A2*P+B2*X2+C2*X3=0,A3*X2+B 2020-12-31 …