第12周数学建模作业
1、考察温度x对产量y的影响,测得下列10组数据:
温度(℃) | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 | 65 |
---|---|---|---|---|---|---|---|---|---|---|
产量(kg) | 13.2 | 15.1 | 16.4 | 17.1 | 17.9 | 18.7 | 19.6 | 21.2 | 22.5 | 24.3 |
求y关于x的线性回归方程,检验回归效果是否显著,并预测x=42℃时产量的估值.
Matlab代码:
x = [20, 25, 30, 35, 40, 45, 50, 55, 60, 65];
y = [13.2, 15.1, 16.4, 17.1, 17.9, 18.7, 19.6, 21.2, 22.5, 24.3];
p = polyfit(x, y, 1);
y_hat = p(1) + p(2)*x;
[r,p] = corrcoef(y, y_hat);
r = r(2,1);
pvalue = p(2,1);
if pvalue < 0.05
disp('回归效果显著');
else
disp('回归效果不显著');
end
y_pred = p(1) + p(2)*42;
disp(['当x=42时,预测产量为:', num2str(y_pred), 'kg']);
2、某零件上有一段曲线,为了在程序控制机床上加工这一零件,需要求这段曲线的解析表达式,在曲线横坐标xi处测得纵坐标yi共11对数据如下:
xi | 0 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 |
---|---|---|---|---|---|---|---|---|---|---|---|
yi | 0.6 | 2.0 | 4.4 | 7.5 | 11.8 | 17.1 | 23.3 | 31.2 | 39.6 | 49.7 | 61.7 |
求这段曲线的纵坐标y关于横坐标x的二次多项式回归方程.
Matlab代码:
x = [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20];
y = [0.6, 2.0, 4.4, 7.5, 11.8, 17.1, 23.3, 31.2, 39.6, 49.7, 61.7];
p = polyfit(x, y, 2);
y_hat = p(1)*x.^2 + p(2)*x + p(3);
[r,p] = corrcoef(y, y_hat);
r = r(2,1);
pvalue = p(2,1);
if pvalue < 0.05
disp('回归效果显著');
else
disp('回归效果不显著');
end
disp(['回归方程为: y = ', num2str(p(1)), '*x^2 + ', num2str(p(2)), '*x + ', num2str(p(3))]);
3、混凝土的抗压强度随养护时间的延长而增加,现将一批混凝土作成12个试块,记录了养护日期x(日)及抗压强度y(kg/cm2)的数据:
养护时间x | 2 | 3 | 4 | 5 | 7 | 9 | 12 | 14 | 17 | 21 | 28 | 56 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
抗压强度y | 35 | 42 | 47 | 53 | 59 | 65 | 68 | 73 | 76 | 82 | 86 | 99 |
试用2种方法(转化为线性回归、非线性回归)求型回归方程.
Matlab代码:
x = [2, 3, 4, 5, 7, 9, 12, 14, 17, 21, 28, 56];
y = [35, 42, 47, 53, 59, 65, 68, 73, 76, 82, 86, 99];
x_log = log(x);
p = polyfit(x_log, y, 1);
a = p(1);
b = p(2);
disp(['回归方程为: y = ', num2str(a), ' + ', num2str(b), '*ln(x)']);
x = [2, 3, 4, 5, 7, 9, 12, 14, 17, 21, 28, 56];
y = [35, 42, 47, 53, 59, 65, 68, 73, 76, 82, 86, 99];
fun = @(p,x)p(1) + p(2)*log(x);
p0 = [0, 0];
p = lsqcurvefit(fun, p0, x, y);
a = p(1);
b = p(2);
disp(['回归方程为: y = ', num2str(a), ' + ', num2str(b), '*ln(x)']);
4、
数据详见Excel文件week12test4.xls
假设2030年时,x1=5000,x2=1000,x3=3000,x4=1000。
请完成以下任务:
(1)计算财政收入和其它变量之间的相关系数,建立多元线性回归模型,并给出2030年财政收入的预测值和预测区间;
(2)假设财政收入和其它变量的关系为y=ax1+bx2+cx3+dx4,建立多元非线性回归模型,并给出2030年财政收入的预测值和预测区间。
Matlab代码:
clear;
clc;
data=xlsread('week12test4.xls','Sheet1','B2:F32');
R=corrcoef(data(:,1:5));
R(1,:);
y=data(:,1);
x=data(:,2:5);
X=[ones(length(y),1),x];
[b,bint,r,rint,stats]=regress(y,X);
x0=[1 5000 1000 3000 1000]';
y0=sum(x0.*b)
fun=@(beta,x) beta(1)*x(:,1)+beta(2)*x(:,2)+beta(3)*x(:,3)+beta(4)*x(:,4);
[beta,r,J]=nlinfit(x,y,fun,[1 1 1 1]);
x1=[5000 1000 3000 1000];
y1=sum(x1.*beta)
[y2,delta]=nlpredci(fun,x1,beta,r,J)
3)*x(:,3)+beta(4)*x(:,4);
[beta,r,J]=nlinfit(x,y,fun,[1 1 1 1]);
x1=[5000 1000 3000 1000];
y1=sum(x1.*beta)
[y2,delta]=nlpredci(fun,x1,beta,r,J)