数值分析第一次实习题报告
时间:2022-07-26
本文章向大家介绍数值分析第一次实习题报告,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
clear;
x=linspace(-5,5,10);
y=1./(1+x.*x);
t=linspace(-5,5,500);
Y=1./(1+t.^(2));
xx = linspace(-5,5,10);
y1 = interp1(x,y,xx,'linear');
plot(x,y,'ro',t,Y,'g',xx,y1,'b');grid;
clear;
clc;
x1=[0.2 0.4 0.6 0.8 1.0];
y1=[0.98 0.92 0.81 0.64 0.38];
n=length(y1);
c=y1(:);
for j=2:n %求差商
for i=n:-1:j
c(i)=(c(i)-c(i-1))/(x1(i)-x1(i-j+1));
end
end
syms x df d;
df(1)=1;d(1)=y1(1);
for i=2:n %求牛顿差值多项式
df(i)=df(i-1)*(x-x1(i-1));
d(i)=c(i)*df(i);
end
disp('4次牛顿插值多项式');
P4=vpa(collect((sum(d))),5) %P4即为4次牛顿插值多项式,并保留小数点后5位数
pp=csape(x1,y1, 'variational');%调用三次样条函数
q=pp.coefs;
disp('三次样条函数');
for i=1:4
S=q(i,:)*[(x-x1(i))^3;(x-x1(i))^2;(x-x1(i));1];
S=vpa(collect(S),5)
end
x2=0.2:0.08:1.08;
dot=[1 2 11 12];
figure
ezplot(P4,[0.2,1.08]);
hold on;
y2=fnval(pp,x2);
x=x2(dot);
y3=eval(P4);
y4=fnval(pp,x2(dot));
plot(x2,y2,'r',x2(dot),y4,'co');
title('4次牛顿插值及三次样条');
运行结果:
4次牛顿插值多项式
P4 =- 0.52083*x^4 + 0.83333*x^3 - 1.1042*x^2 + 0.19167*x + 0.98
三次样条函数
S =- 1.3393*x^3 + 0.80357*x^2 - 0.40714*x + 1.04 0.2<=x<=0.4
S =0.44643*x^3 - 1.3393*x^2 + 0.45*x + 0.92571 0.4<=x<=0.6
S =1.6964*x^3 + 2.5179*x^2 - 1.8643*x + 1.3886 0.6<=x<=0.8
S =2.5893*x^3 - 7.7679*x^2 + 6.3643*x - 0.80571 0.8<=x<=1.0
clear;
x=linspace(-1,1,10);
y=1./(1+25*x.*x);
t=linspace(-1,1,200);
Y=1./(1+25*t.^(2));
f=Language(x,y)
f =21.6248*t.^8 - 44.9155*t.^6 + 30.7285*t.^4 - 8.26092*t.^2 + 0.861538
S=interp1(x,y,t,'spline');
plot(x,y,'ro',t,Y,'g',t,f,'b',t,S,'g:');grid;
clear;
x=linspace(-1,1,20);
y=1./(1+25*x.*x);
t=linspace(-1,1,200);
Y=1./(1+25*t.^(2));
f=Language(x,y)
f=- 25671.2*t.^18 + 95604.8*t.^16 - 146791.0*t.^14 + 121019.0*t.^12 - 58585.0*t.^10 + 17172.5*t.^8 - 3055.32*t.^6 + 327.726*t.^4 - 21.6235*t.^2 + 0.992681
S=interp1(x,y,t,'spline');
plot(x,y,'ro',t,Y,'g',t,f,'b',t,S,'g:');grid;
(1) 8 次多项式插值:
首先建立新的 M-file:
输入如下代码(此为拉格朗日插值的功能函数) 并保存:
function f=Language(x,y,x0)
%求已知数据点的拉格朗日插值多项式
%已知数据点的 x 坐标向量: x
%已知数据点的 y 坐标向量: y
%插值的 x 坐标: x0
%求得的拉格朗日插值多项式或在 x0 处的插值: f
syms t;
if(length(x)==length(y))
n=length(x);
else
disp('x 和 y 的维数不相等!');
return;
end %检错
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); %化简
if(i==n)
if(nargin==3)
f=subs(f,'t',x0); %计算插值点的函数值
else
f=collect(f); %将插值多项式展开
f=vpa(f,6); %将插值多项式的系数化成 6 位精度的小数
end
end
end
再建立新的 M-file:
输入:
clear;
x=[0 1 4 9 16 25 36 49 64];
y=[0:1:8];
f=Language(x,y)
运行得到
f =
1.32574*t-.381410*t^2+.604294e-1*t^3+.222972e-3*t^5-.542921e-5*t^6+.671268e-7*t^7-.328063e-9*t^8-.498071e-2*t^4
这就是 8 次多项式插值
L_8(x)=1.32574*t-.381410*t^2+.604294e-1*t^3+.222972e-3*t^5-.542921e-5*t^6+.671268e-7*t^7-.328063e-9*t^8-.498071e-2*t^4.
(2)三次样条插值:
建立新的 M-file:
输入:
clear;
x=[0 1 4 9 16 25 36 49 64];
y=[0:8];
t=[0:0.1:64];
Y=t.^(0.5);
f=Language(x,y)
f=1.32574*t-.381410*t.^2+.604294e-1*t.^3+.222972e-3*t.^5-.542921e-5*t.^6+.671268e-7*t.^7-.328063e-9*t.^8-.498071e-2*t.^4;
S=interp1(x,y,t,'spline');
plot(x,y,'ro',t,Y,'r',t,f,'b',t,S,'g:');grid;
运行程序得到如下图:
- 百布(baibu.la)完成1.65亿B+轮融资
- 八大排序算法总结与java实现
- Angular企业级开发(5)-项目框架搭建
- 如何让nginx显示文件夹目录
- Facebook Graph API(2)--读取数据之picture
- 使用Dockerfile构建镜像-Docker for Web Developers(5)
- 2018年程序员的出路有哪些
- CSS魔法堂:不得不说的Containing Block
- Facebook Graph API(1)—介绍
- MongoDB学习系列(1)--入门介绍
- 2018年人工智能行业市场预测:市场规模有望突破200亿元大关
- Javascript对象的方法赋值
- CentOS挂载硬盘
- 使用jQuery UI的draggable和droppable完成拖拽功能--介绍
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux下部署springboot项目的方法步骤
- Linux、CentOS下安装zip与unzip指令功能(服务器)
- Linux上查看用户创建日期的几种方法总结
- 详解基于Linux的LVM无缝磁盘水平扩容
- CentOS平台实现搭建rsync远程同步服务器的方法
- CentOS 8设置自动更新的完整步骤
- linux 网络编程 socket选项的实现
- Ubuntu16.04安装Jenkins的方法图文详解
- leetcode树之对称二叉树
- linux 上在指定时间段内每隔多少分钟自动执行任务计划crontab
- 详解如何使用Spark和Scala分析Apache访问日志
- Centos 7.4中的远程访问控制的实现方法
- Linux查找特定程序whereis实例详解
- SpringBoot实战(二):SpringMvc接收xml请求
- CentOS环境下安装PHPUnit的方法分析