| 查看: 2973 | 回复: 11 | ||||
[求助]
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? 请大神们指点,感谢感谢! |
» 猜你喜欢
全日制(定向)博士
已经有5人回复
假如你的研究生提出不合理要求
已经有10人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
实验室接单子
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
» 本主题相关价值贴推荐,对您同样有帮助:
关于均匀设计实验数据的回归模型
已经有7人回复
求助用matlab 多元非线性拟合
已经有4人回复
菜鸟求助matlab习题两道,跪求指导,不胜感激!!!!
已经有4人回复
pdl9527
专家顾问 (小有名气)
-

专家经验: +8 - 应助: 100 (初中生)
- 金币: 2107.8
- 红花: 23
- 帖子: 282
- 在线: 111.9小时
- 虫号: 1227333
- 注册: 2011-03-09
- 性别: GG
- 专业: 分离过程
- 管辖: 计算模拟
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
料峭春寒5: 金币+20, ★★★★★最佳答案, 我先研究下,不懂的地方再多多向您请教哈,谢谢! 2017-08-28 19:36:47
感谢参与,应助指数 +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
7楼2017-08-29 09:46:49
8楼2017-08-29 09:50:47
tieer
木虫 (正式写手)
- 程序强帖: 4
- 应助: 48 (小学生)
- 金币: 1528.2
- 散金: 565
- 红花: 26
- 帖子: 551
- 在线: 739.7小时
- 虫号: 761880
- 注册: 2009-05-02
- 专业: 高分子材料结构与性能

2楼2017-08-28 15:22:24
3楼2017-08-28 15:33:44
4楼2017-08-28 17:35:10
6楼2017-08-28 19:35:56
pdl9527
专家顾问 (小有名气)
-

专家经验: +8 - 应助: 100 (初中生)
- 金币: 2107.8
- 红花: 23
- 帖子: 282
- 在线: 111.9小时
- 虫号: 1227333
- 注册: 2011-03-09
- 性别: GG
- 专业: 分离过程
- 管辖: 计算模拟
|
对于这个问题来说使用非线性最小二乘法来计算没有任何问题,你这里用的左除(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
pdl9527
专家顾问 (小有名气)
-

专家经验: +8 - 应助: 100 (初中生)
- 金币: 2107.8
- 红花: 23
- 帖子: 282
- 在线: 111.9小时
- 虫号: 1227333
- 注册: 2011-03-09
- 性别: GG
- 专业: 分离过程
- 管辖: 计算模拟
|
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












,该如何编程呢
回复此楼