24小时热门版块排行榜    

查看: 2453  |  回复: 2

dplrwp

新虫 (初入文坛)

[求助] 怎样用非线性最小二乘法拟合得到方程中的未知参数 已有2人参与

方程y=Ax+Bx/(1+Cx) 采用最小二乘法模拟得到参数A、B、C。
x:0.452 、3.099、15.492、33.8464、51.522、70.314
y:9.548、16.901、21.508、26.1536、28.478、29.686
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yangwww123

新虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
将公式改写成 (A+B)x + AC x^2 -C xy = y;
型函数 P = [x,  x^2,  -xy];   v = [A+B; AC; C]; 剩下的公式不好敲,看下面的程序。
采用matlab编程如下:
%% main
clear all; close all; clc;
xi = [0.452, 3.099, 15.492, 33.8464, 51.522, 70.314];
yi = [9.548, 16.901, 21.508, 26.1536, 28.478, 29.686];

K = zeros(3);
b = zeros(3,1);
for i=1:size(xi,2)
    x = xi(1,i); y = yi(1,i);
    P = [x, x^2, -x*y];
    K = K + P'*P;
    b = b + P'*y;
end
% v = [A+B; AC; C]
v = K\b;

C = v(3,1);
A = v(2,1)/C;
B = v(1,1)-A;

y_app = A*xi + B*xi./(1+C*xi);

plot(xi,yi,'-r*',xi,y_app,'g-o')
上面一句是画图,这里面插不了图,你把程序跑一边就能看见。
计算结果:给出x值,得到的模拟的y值;
2.4513   11.2275   22.2999   26.3347   28.2622   29.7421

前两个值不太准确,建议多采用几个数据点,结果会跟精确。
科研吊丝变大牛
2楼2015-06-18 07:45:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
a        0.148938319420554
b        36.4207912045872
c        1.79290500985833
3楼2015-06-18 11:11:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 dplrwp 的主题更新
信息提示
请填处理意见