作业帮 > 综合 > 作业

急求助用matlab怎么拟合一个过原点的二次函数

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/22 05:49:26
急求助用matlab怎么拟合一个过原点的二次函数
x=[204.11,219.64,243.34,262.38,281.01,301.81,312.05,320.74,331.71,341.49,349.16,362.35,379.08,401.24,420.91,430.99];
y=[64.33,69.17,71.18,75.72,78.55,81.52,82.57,82.20,81.23,77.37,73.13,69.74,60.59,46.27,23.04,2.98];
急需用matlab编一个简单的程序,使得y=ax*x+bx形式,最好是把拟合出来的函数的公式以及回归因子都给表达出来的,由于本人是刚学的但是作业又急着要交,
clc
clear
x=[204.11,219.64,243.34,262.38,281.01,301.81,312.05,320.74,331.71,341.49,349.16,362.35,379.08,401.24,420.91,430.99];
y=[64.33,69.17,71.18,75.72,78.55,81.52,82.57,82.20,81.23,77.37,73.13,69.74,60.59,46.27,23.04,2.98];
z=y./x;
[p,q]=polyfit(x,z,1)
a=p(1)
b=p(2)
再问: 把这个图画出来的程序是神马啊?我怎么弄来弄去都不像啊都是一个一次函数的图像!能不能把整个程序补充完整!谢谢
再答: y=a*x^2+b*x两边同时除以x,y/x=a*x+b;令z=y/x接下来就是拟合(x,z)直线[p,q]=polyfit(x,z,1) 结果a=p(1) b=p(2);可以作图比较(你的数据不是很好,拟合结果不是很准确): clc clear x=[204.11,219.64,243.34,262.38,281.01,301.81,312.05,320.74,331.71,341.49,349.16,362.35,379.08,401.24,420.91,430.99]; y=[64.33,69.17,71.18,75.72,78.55,81.52,82.57,82.20,81.23,77.37,73.13,69.74,60.59,46.27,23.04,2.98]; z=y./x; [p,q]=polyfit(x,z,1) a=p(1) b=p(2) plot(x,y,'r*') hold on ezplot([num2str(a),'*x^2+',num2str(b),'*x'],[min(x),max(x),min(y),max(y)]) legend('原始数据散点图','拟合后函数曲线图') xlabel('x') ylabel('y') 最后我想说你的数据拟合的二次函数未必是y=ax*x+bx,强行按照过原点的进行拟合真的不好,我认为是y=ax*x+bx+c形式(c不等于0)