作业帮 > 综合 > 作业

MATLAB曲线非线性拟合

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/27 21:23:02
MATLAB曲线非线性拟合
1:给出五组数据 x=[100 200 400 600 800];y=[40 60 80 120 150];想要拟合的线性是 y=a+b*x^m,其中规定了m值的范围在1到2之间,用MATLAB里什么函数能求出系数a,b,2:在这个已经拟合出来的曲线上用拉格朗日法进行插值,求x=150 250 300 500 700时的y值~各位能不能把程序写出来啊!最好有图有程序啊~截个图什么的啊,麻烦发到hanhanhan2406@sina.感激不尽!拜谢~主要是第一问啊~
% 1 非线性拟合warning offx=[100 200 400 600 800]';y=[40 60 80 120 150]';f = fittype('a+b*x^m');options = fitoptions('a+b*x^m');options.Lower = [-Inf -Inf 1 ]; options.Upper = [Inf Inf 2 ]; fresult = fit(x,y,f,options)x1=[100:0.1:800];plot( x1, fresult(x1), x, y, '* ') % 拟合图 原始数据title('拟合图 原始数据')% 2 用拉格朗日法进行插值x=[100 200 400 600 800];y=[40 60 80 120 150];x0=[150 250 300 500 700];syms tn=length(x);f=0.0;for(i=1:n) l=y(i); for(j=1:i-1) l=l*(t-x(j))/(x(i)-x(j)); end for(j=i+1:n) l = l * (t-x(j))/(x(i)-x(j)); end f = f+l; simplify(f);endf0=subs(f,'t',x0)figureplot( x1, fresult(x1), x, y, '* ', x0, f0, 'o ') % 拟合图 原始数据 插值title('拟合图 原始数据 插值')



fresult = General model: fresult(x) = a+b*x^m Coefficients (with 95% confidence bounds): a = 31.09 (-13.89, 76.07) b = 0.05458 (-0.3637, 0.4728) m = 1.151 (0.0421, 2.259)f0 = 52.2824 65.1797 69.4643 97.0714 141.9643
再问: 3Q! 但是还是有一点问题 我用matlab7 求曲线拟合时写到fresult = fit(x,y,f,options)的时候 显示错误日??? Error using ==> fit>handleerr XDATA must be a column vector. 求拉格朗日插值的时候运行到 plot( x1, fresult(x1 。。时显示错误??? Undefined function or variable 'x1'. 这为什么啊? 还有 输入数据和cftool data选x y值 fitting选择power函数拟合 也能得出参数值 结果和你的不一样 为嘛啊?你的参数较好~
再答: 1 输入数据和cftool data选x y值 fitting选择power函数拟合 也能得出参数值 结果和你的不一样 为嘛啊?你的参数较好~ 函数拟合的结果本来就是有差别的,不一样很正常。我给的结果是用2011b算的。 2 用matlab7 求曲线拟合时写到fresult = fit(x,y,f,options)的时候 显示错误日 ??? Error using ==> fit>handleerr XDATA must be a column vector. 我没用matlab7。 matlab7.1以上版本都能用。 建议你换matlab7.1以上版本试一试。 你将 x=[100 200 400 600 800]'; y=[40 60 80 120 150]'; 改为 x=[100 200 400 600 800]; y=[40 60 80 120 150]; 试一试。 3 这两段程序最好一起贴进命令窗口, 第二段要用第一段的结果。