1. 已知函数在下列各点的值为

 

-1

-0.75

-0.5

0

0.25

0.5

0.75

 

1.00

0.8125

0.75

1.00

1.3125

1.75

2.3125

分别用一次、二次、三次最小二乘拟合多项式拟合上述数据,画出所给数据和所求最小二乘拟合多项式的图像。

程序:

function f=multifit(x,y,wfunc,n)

syms t

%x,y为给定数据数组,wfunc为权函数,n为要求拟合多项式的次数

N=length(x);

M=length(y);

if(N ~= M)

disp('x与y维数不匹配');

return;

end

var = findsym(sym(wfunc));

w = subs(wfunc,'var',x);

g(1:(2*n+1))=0;

b(1:(n+1))=0;

for j=1:(2*n+1)

for k=1:N

g(j)=g(j)+w(j)*x(k)^(j-1);

if(j<(n+2))

b(j)=b(j)+w(j)*y(k)*x(k)^(j-1);

end

end

end

G(1,:)=g(1:(n+1));

for i=2:(n+1)

G(i,:)=g(i:(n+i));

end

coff=b'\G;

f = coff(1);

l = 1;

for i=1:n

l = l*t;

f = f+coff(i+1)*l;

end

一维:

x=[-1   -0.75   -0.5    0   0.25    0.5     0.75];

y=[1.00 0.8125  0.75    1.00    1.3125  1.75    2.3125];

plot(x,y)

hold on

w=ones(1,7);

syms t

f=multifit(x,y,w,1)

t=-1:0.02:1;

tf=subs(f,'t',t);

plot(t,tf)

f =

1723890370956185/2251799813685248 - (923516587282913*t)/18014398509481984

二维:

f =

(2832971806309577*t^2)/9007199254740992 - (5864710038001133*t)/72057594037927936 + 6907316203181555/9007199254740992

三维:

f =

- (8450352688460543*t^3)/72057594037927936 + (89154935708507*t^2)/281474976710656 - (6164715222057551*t)/72057594037927936 + 6924830714825963/9007199254740992

2. 已知一组实验数据如下,

 

2

3

6

9

10

 

-0.5

1.2

3.1

4.5

7.3

 

0.125

0.125

0.25

0.125

0.375

求拟合上述数据的二次最小二乘拟合多项式。

主程序:

x=[2    3   6   9   10];

y=[-0.5 1.2 3.1 4.5 7.3];

w=[0.125    0.125   0.25    0.125   0.375];

plot(x,y)

hold on

syms t

f=multifit(x,y,w,2)

t=2:0.1:10;

tf=subs(f,'t',t);

plot(t,tf)

legend('已知点','拟合')

图像:

f =

(8318828653518565*t^2)/562949953421312 + (7344269211390441*t)/4503599627370496 + 6836208550152757/36028797018963968

3. 设,分别求次数为2,3,6,8的多项式,使得

达到最小,并画出和的曲线进行比较。

程序:

function f = Legendre(func,n)

%求函数在[-1,1]的关于权函数为1的n次最佳平方逼近多项式f,并计算插值多项式f在数据点x0的函数值f0

syms t;

P(1:n+1) = t;

P(1) = 1;

P(2) = t;

c(1:n+1) = 0.0;

c(1)=int(subs(func,findsym(sym(func)),sym('t'))*P(1),t,0,1)/2;

c(2)=3*int(subs(func,findsym(sym(func)),sym('t'))*P(2),t,0,1)/2;

f = c(1)+c(2)*t;

for i=3:n+1

P(i) = ((2*i-3)*P(i-1)*t-(i-2)*P(i-2))/(i-1);

c(i) = (2*i-1)*int(subs(func,findsym(sym(func)),t)*P(i),t,0,1)/2;

f = f + c(i)*P(i);

if(i==n+1)

f = vpa(f,6);

end

end

n=2:

syms x

fun=sin(pi*x);

t=0:0.1:1;

tf=subs(fun,'x',t);

plot(t,tf)

hold on

f = Legendre(fun,2)

f2=subs(f,'t',t);

plot(t,f2)

f =

- 0.128828*t^2 + 0.477465*t + 0.361253

N=3:

f =

0.863545*t - 0.19304*t*(7.5*t^2 - 2.5) - 0.128828*t^2 + 0.361253

N=6:

f =

0.922023*t - 0.222279*t*(7.5*t^2 - 2.5) - 0.021929*t*(2.25*t*(4.66667*t - 2.33333*t*(7.5*t^2 - 2.5)) + 10.125*t^2 - 3.375) - 0.0383952*t*(2.93333*t*(7.5*t^2 - 2.5) - 5.86667*t + 2.2*t*(2.25*t*(4.66667*t - 2.33333*t*(7.5*t^2 - 2.5)) + 10.125*t^2 - 3.375)) + 0.144211*t*(4.66667*t - 2.33333*t*(7.5*t^2 - 2.5)) + 0.52012*t^2 + 0.144936

N=8:

f =

0.925827*t - 0.224181*t*(7.5*t^2 - 2.5) - 0.0233554*t*(2.25*t*(4.66667*t - 2.33333*t*(7.5*t^2 - 2.5)) + 10.125*t^2 - 3.375) - 0.0568912*t*(2.93333*t*(7.5*t^2 - 2.5) - 5.86667*t + 2.2*t*(2.25*t*(4.66667*t - 2.33333*t*(7.5*t^2 - 2.5)) + 10.125*t^2 - 3.375)) + 0.0158537*t*(6.85714*t - 3.42857*t*(7.5*t^2 - 2.5) - 2.57143*t*(2.25*t*(4.66667*t - 2.33333*t*(7.5*t^2 - 2.5)) + 10.125*t^2 - 3.375) + 2.14286*t*(2.16667*t*(2.93333*t*(7.5*t^2 - 2.5) - 5.86667*t + 2.2*t*(2.25*t*(4.66667*t - 2.33333*t*(7.5*t^2 - 2.5)) + 10.125*t^2 - 3.375)) - 2.70833*t*(4.66667*t - 2.33333*t*(7.5*t^2 - 2.5)) - 12.1875*t^2 + 4.0625)) + 0.167331*t*(4.66667*t - 2.33333*t*(7.5*t^2 - 2.5)) + 0.62416*t^2 + 0.00118873*t*(2.16667*t*(2.93333*t*(7.5*t^2 - 2.5) - 5.86667*t + 2.2*t*(2.25*t*(4.66667*t - 2.33333*t*(7.5*t^2 - 2.5)) + 10.125*t^2 - 3.375)) - 2.70833*t*(4.66667*t - 2.33333*t*(7.5*t^2 - 2.5)) - 12.1875*t^2 + 4.0625) + 0.110256

数值分析 最小二乘 matlab的更多相关文章

  1. 8、数值分析与matlab

    1.今天要拷matlab代码了,而且是很恶心的算法,估计也没几个人能看得懂,就连我自己都看不懂. 我也不知道这样做的意义何在,可能只是证明我在这世上曾经学过那么那么难的东西吧 首先是一个matlab版 ...

  2. 最小二乘法拟合非线性函数及其Matlab/Excel 实现(转)

    1.最小二乘原理 Matlab直接实现最小二乘法的示例: close x = 1:1:100; a = -1.5; b = -10; y = a*log(x)+b; yrand = y + 0.5*r ...

  3. 最小二乘法拟合非线性函数及其Matlab/Excel 实现

    1.最小二乘原理 Matlab直接实现最小二乘法的示例: close x = 1:1:100; a = -1.5; b = -10; y = a*log(x)+b; yrand = y + 0.5*r ...

  4. matlab练习程序(最小二乘多项式拟合)

    最近在分析一些数据,就是数据拟合的一些事情,用到了matlab的polyfit函数,效果不错. 因此想了解一下这个多项式具体是如何拟合出来的,所以就搜了相关资料. 这个文档介绍的还不错,我估计任何一本 ...

  5. 【数值分析】误差的分析与减少及Matlab解线性方程的四种方法

    1.误差的来源 模型误差:数学模型与实际问题之间的误差 观测误差:测量数据与实际数据的误差 方法误差:数学模型的精确解与数值方法得到的数值解之间的误差:例如 舍入误差:对数据进行四舍五入后产生的误差 ...

  6. matlab练习程序(加权最小二乘)

    起本篇题目还是比较纠结的,原因是我本意打算寻找这样一个算法:在测量数据有比较大离群点时如何估计原始模型. 上一篇曲面拟合是假设测量数据基本符合均匀分布,没有特别大的离群点的情况下,我们使用最小二乘得到 ...

  7. [matlab] 21.灰色预测、线性回归分析模型与最小二乘回归 (转载)

    灰色预测的主要特点是只需要4个数据,就能解决历史数据少,序列的完整性以及可靠性低的问题,能将无规律的原始数据进行生成得到规律性较强的生成序列,易于检验 但缺点是只适合中短期的预测,且只适合指数级增长的 ...

  8. 数值分析实验之曲线最小二乘拟合含有噪声扰动(python实现)

    一.实验目的 掌握最小二乘法拟合离散数据,多项式函数形式拟合曲线以及可以其他可以通过变量变换转化为多项式的拟合曲线目前待实现功能: 1. 最小二乘法的基本实现. 2. 用不同数据量,不同参数,不同的多 ...

  9. 数值分析:最小二乘与岭回归(Pytorch实现)

    Chapter 4 1. 最小二乘和正规方程 1.1 最小二乘的两种视角 从数值计算视角看最小二乘法 我们在学习数值线性代数时,学习了当方程的解存在时,如何找到\(\textbf{A}\bm{x}=\ ...

随机推荐

  1. vs2017调试浏览器闪退

    工具>选项>项目和解决方案> Web项目",取消选中"浏览器窗口关闭时停止调试器"

  2. 关于winform文本框怎么实现html的placeholder效果

    winfrom默认是不支持这种操作的,此时需要重写控件操作,具体代码如下: public class TextBoxEx : TextBox { public String PlaceHolderSt ...

  3. 【JVM】3、JVM问题查找

    1.查看tomcat进程号 两种方式都可以查看tomcat进程号 ps -ef | grep tomcat-web jps -lmvV |grep tomcat-web 结果如下:2556 2.查看进 ...

  4. Android 7.0 以上保留数据去除锁屏密码的方法

    在很多情况下,由于我们的疏忽,导致忘记了锁屏密码.也没有开启 USB 调试,内置存储中还有要保留的数据.我们需要在不清除数据的情况下删除锁屏密码.接下来我们就介绍该如何做. 注意事项 首先要注意,这个 ...

  5. MySQL锁详解!(转载)

    博客来源于https://baijiahao.baidu.com/s?id=1610581108528334819&wfr=spider&for=pc 一.概述 数据库锁定机制简单来说 ...

  6. python内置函数每日一学 -- all()

    all(iterable) 官方文档解释: Return True if all elements of the iterable are true (or if the iterable is em ...

  7. 高性能JavaScript(快速响应的用户界面)

    浏览器UI线程 用于执行JavaScript代码和更新界面的进程被称为 “浏览器UI线程” . UI线程的工作基于一个简单的队列系统,任务会被保存到队列中直到线程空闲,一旦空闲队列就被重新提取出来运行 ...

  8. 安装vs2008出现MSI returned error code 1603的错误的解决

    作者:朱金灿 来源:http://blog.csdn.net/clever101 在win7 64位旗舰版上安装vs2008 ,一直停留在下面页面: 最后错误日志是: [12/12/16,15:39: ...

  9. SD从零开始03-04

    [原创]SD从零开始3 SD中的主数据 客户主数据Customer master(分层维护) 一般数据general data: 与销售和财务都有关,对所有的组织单元有效: 销售区域数据sales a ...

  10. php api 接口输出json 数据

    页面调用接口,简单写个api 试试 如下 <?php $arr = array( array('url'=>'https://baidu.com'), array('map'=>'h ...