24小时热门版块排行榜    

Znn3bq.jpeg
查看: 3118  |  回复: 11

料峭春寒5

新虫 (小有名气)

[求助] matlab多元线性回归拟合求助 已有2人参与

大家好,最近在尝试利用matlab进行多元线性回归拟合,由于是零基础感觉困难重重,请各位高手在百忙之中给予指点,该如何编程呢

T(温度)=[353.15 353.15 353.15 353.15 363.75 363.75 363.75 363.75 373.75 373.75 373.75 373.75 393.75 393.75 393.75 393.75 413.75 413.75 413.75 413.75];
d(密度)=[593.89 636.74 671.27 699.95 533.17 580.38 619.21 651.66 480.53 528.94 570.19 605.34 401.15 445.86 486.70 523.39 347.58 386.61 423.72 458.44];
S=[4.39 4.65 5.24 5.64 4.40 4.67 5.68 5.72 4.85 5.59 5.94 6.92 5.35 6.53 7.23 7.95 6.76 7.28 8.21 9.96];

需要拟合的方程是:ln S=k ln d+A/T+B

如何通过拟合求出k,A,B?

请大神们指点,感谢感谢!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

pdl9527

专家顾问 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
料峭春寒5: 金币+20, ★★★★★最佳答案, 我先研究下,不懂的地方再多多向您请教哈,谢谢! 2017-08-28 19:36:47
[k,A,B]= [1.46      -2914.37          0.36];
下面是程序,你可以根据经验更改初值x0,也许能获得更好的结果。



function question_46
clear;clc;close all
T=[353.15 353.15 353.15 353.15 363.75 363.75 363.75 363.75 373.75 373.75 373.75 373.75 393.75 393.75 393.75 393.75 413.75 413.75 413.75 413.75];
d=[593.89 636.74 671.27 699.95 533.17 580.38 619.21 651.66 480.53 528.94 570.19 605.34 401.15 445.86 486.70 523.39 347.58 386.61 423.72 458.44];
S=[4.39 4.65 5.24 5.64 4.40 4.67 5.68 5.72 4.85 5.59 5.94 6.92 5.35 6.53 7.23 7.95 6.76 7.28 8.21 9.96];
fun=@(x) exp(x(1).*log(d)+x(2)./T+x(3))-S;
x0=[1,1,1];
[x,resnorm,residual,exitflag] = lsqnonlin(fun,x0)
plot3(T,d,S,'ro-')
hold on
plot3(T,d,fun(x)+S,'b*-')
5楼2017-08-28 19:06:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

smitest

木虫 (小有名气)

lsqnonlin是做非线性拟合的,这个问题是线性问题,不存在初值与更好结果的问题,
不考虑计算误差,准确的结果为 :    1.4374        -2864.4        0.36431
建议还是学学最小二乘的原理。
7楼2017-08-29 09:46:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

smitest

木虫 (小有名气)

算了,还是给你个参考,原始数据没贴上:
Z=log(S);
X=1./T;
Y=log(d);
% Z=kY+AX+B
a(1,1)=sum(Y.*Y);
a(2,1)=sum(X.*Y);
a(1,2)=a(2,1);
a(2,2)=sum(X.*X);
a(3,1)=sum(Y);
a(1,3)=a(3,1);
a(3,2)=sum(X);
a(2,3)=a(3,2);
a(3,3)=20;
b(1)=sum(Z.*Y);
b(2)=sum(Z.*X);
b(3)=sum(Z);
kAB=b/a;
8楼2017-08-29 09:50:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

tieer

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
这个是不是用1stopt会简单很多啊
思考,让这个世界更有趣。
2楼2017-08-28 15:22:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

smitest

木虫 (小有名气)

3楼2017-08-28 15:33:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

smitest

木虫 (小有名气)

先改写成y= kx1+Ax2+B,利用最小二乘推导得M[k,A,B]=N解方程组直接得结果

发自小木虫Android客户端
4楼2017-08-28 17:35:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

料峭春寒5

新虫 (小有名气)

感谢,感谢!
6楼2017-08-28 19:35:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pdl9527

专家顾问 (小有名气)

引用回帖:
8楼: Originally posted by smitest at 2017-08-29 09:50:47
算了,还是给你个参考,原始数据没贴上:
Z=log(S);
X=1./T;
Y=log(d);
% Z=kY+AX+B
a(1,1)=sum(Y.*Y);
a(2,1)=sum(X.*Y);
a(1,2)=a(2,1);
a(2,2)=sum(X.*X);
a(3,1)=sum(Y);
a(1,3)=a(3,1);
a(3,2)=sum ...

对于这个问题来说使用非线性最小二乘法来计算没有任何问题,你这里用的左除(mldivide),如果你打开帮助文件仔细阅读你会发现这样一行字,If A is a rectangular m-by-n matrix with m ~= n, and B is a matrix with m rows, then A\B returns a least-squares solution to the system of equations A*x= B. 意思是如果矩阵A是一个行列不相等的矩阵那么计算过程中采用最小二乘法,虽然非线性最小二乘法和线型最小二乘法可能存在一些差异,但是线型最小二乘法能够解决的问题非线性最小二乘法肯定是可以解决的,线性算是非线性的一种特殊形式,这里由于矩阵A的行列数不相等,所以不是一个唯一解的问题,因此才需要使用最小二乘法,左除之所以不需要提供初值是因为程序自动帮你选定了。
既然说使用非线性最小二乘法计算没有问题,那么计算结果为什么不同?这还是算法上的差异导致的,从结果可以看到两个方法计算的结果很接近,硬要说哪个好可以参考下面的程序,可以看出使用lsqnonline计算的结果的norm更小,因此更加精确,而不是像你说的:lsqnonlin是做非线性拟合的,这个问题是线性问题,不存在初值与更好结果的问题。

9楼2017-08-29 19:58:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pdl9527

专家顾问 (小有名气)

引用回帖:
9楼: Originally posted by pdl9527 at 2017-08-29 19:58:54
对于这个问题来说使用非线性最小二乘法来计算没有任何问题,你这里用的左除(mldivide),如果你打开帮助文件仔细阅读你会发现这样一行字,If A is a rectangular m-by-n matrix with m ~= n, and B is a matrix w ...

function question_47
clear;clc;close all
T=[353.15 353.15 353.15 353.15 363.75 363.75 363.75 363.75 373.75 373.75 373.75 373.75 393.75 393.75 393.75 393.75 413.75 413.75 413.75 413.75]';
d=[593.89 636.74 671.27 699.95 533.17 580.38 619.21 651.66 480.53 528.94 570.19 605.34 401.15 445.86 486.70 523.39 347.58 386.61 423.72 458.44]';
S=[4.39 4.65 5.24 5.64 4.40 4.67 5.68 5.72 4.85 5.59 5.94 6.92 5.35 6.53 7.23 7.95 6.76 7.28 8.21 9.96]';
fun=@(x) exp(x(1).*log(d)+x(2)./T+x(3))-S;
x0=[1 1 1];
[x1,resnorm,residual,exitflag] = lsqnonlin(fun,x0);
x2=[log(d) 1./T ones(numel(T),1)]\log(S);
norm1=sum(fun(x1).^2)
norm2=sum(fun(x2).^2)
10楼2017-08-29 19:59:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 料峭春寒5 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 l7k6xnh0yc 2026-05-14 4/200 2026-05-15 17:43 by x0mp7owy2b
[论文投稿] 有带发论文的吗 +4 山楂之术 2026-05-09 4/200 2026-05-15 15:40 by 妹子不好惹
[文学芳草园] 风把牡丹吹跑了 +5 myrtle 2026-05-12 9/450 2026-05-15 15:27 by myrtle
[基金申请] 青C资助名额大幅增加! +11 西葫芦炒鸡蛋 2026-05-13 15/750 2026-05-15 14:36 by ambravo
[公派出国] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 l7k6xnh0yc 2026-05-14 3/150 2026-05-15 12:03 by onwj4wpxp2
[基金申请] 精华III评审感受-评审感受-评审感受 +14 ferrarichen 2026-05-11 18/900 2026-05-15 11:12 by cmhchen
[基金申请] 这年头没有找到涵评专家,还有中面上的可能吗 +9 dd921ww 2026-05-12 10/500 2026-05-15 10:41 by muyiliuhui
[考博] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 l7k6xnh0yc 2026-05-14 3/150 2026-05-15 09:23 by onwj4wpxp2
[教师之家] 教学课件你会给同学吗 +8 硕士研究生吗 2026-05-13 8/400 2026-05-14 22:23 by 常规沥青
[基金申请] 重磅!青年科学基金项目(C类)资助增幅预计超过50% +5 水和泥不是水泥 2026-05-13 7/350 2026-05-14 20:57 by 水和泥不是水泥
[有机交流] 求助2,4-二氯-5-嘧啶甲醛的合成方法 20+3 光吃不拉 2026-05-14 5/250 2026-05-14 20:15 by 一切都是空工
[高分子] 本人最近太闲了,谁有问题可以提,每天会统一回复 +8 一切都是空工 2026-05-12 19/950 2026-05-14 20:03 by 一切都是空工
[考博] 申博自荐 +4 食品的橙子 2026-05-09 6/300 2026-05-14 16:05 by great1919
[考博] 材料类只有一篇综述能申博么 +4 乐逍遥谷 2026-05-13 4/200 2026-05-14 12:05 by zhyzzh
[基金申请] 请问大佬b0816评完了吗 +3 市民华南虎 2026-05-12 7/350 2026-05-14 07:41 by 市民华南虎
[硕博家园] 导师各种操作恶心咋办 +11 苍白的小青天 2026-05-09 13/650 2026-05-13 17:11 by 六两废铜
[论文投稿] 求助大佬sci投稿哪个好中 +3 江沅188 2026-05-12 4/200 2026-05-13 14:35 by 江沅188
[考博] 西南大学考核制博士 +3 lijunjie84 2026-05-11 6/300 2026-05-12 18:09 by lijunjie84
[文学芳草园] 窗边初夏的小雨 +7 阿美_Lml888 2026-05-09 10/500 2026-05-12 15:27 by 阿美_Lml888
[考博] 现在不知道怎么办,感觉很痛苦 +4 qweww 2026-05-11 5/250 2026-05-11 20:23 by Oversize
信息提示
请填处理意见