MATLAB在数值分析中的应用_第1页
MATLAB在数值分析中的应用_第2页
MATLAB在数值分析中的应用_第3页
MATLAB在数值分析中的应用_第4页
MATLAB在数值分析中的应用_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1牛顿插值代码%1-1 homework of someone (ID)%创建插值原始数据x,yx=-1:0.2:1;y=1./(1+9.*x.2);%读取插值维数n = length(x);%定义需要的变量c(1:n) = 0.0;syms t;f = y(1);y1 = 0;l = 1;%循环生成插值多项式for(i=1:n-1) for(j=i+1:n) y1(j) = (y(j)-y(i)/(x(j)-x(i); end c(i) = y1(i+1); l = l*(t-x(i); f = f + c(i)*l; simplify(f); y = y1; %化简 f = collect

2、(f); f = vpa(f, 6);end%输出ff%画图sym p;q=1/(1+9*p2);ezplot(q,-1,1)%标题hold onezplot(f,-1,1)title('牛顿插值 someone (ID)') 牛顿插值运行截图:三次样条插值代码%1-1 homework of someone (ID)%创建插值原始数据x0,y0x0=-1:0.2:1;y0=1./(1+9.*x0.2);yy=spline(x0,y0);%读取插值维数n=length(x0);%创建符号变量xsyms xfor i=1:n-1 y=yy.coefs(i,1)*(x-x0(i)3

3、+yy.coefs(i,2)*(x-x0(i)2+yy.coefs(i,3)*(x-x0(i)1+yy.coefs(i,4);%因三次样条插值与原图过于相似,为避免重合,分列在两张图里面 subplot(2,1,1) ezplot(y,x0(i),x0(i+1) title('someone (ID) 三次样条') hold on axis(-1 1 0 1)endy=1/(1+9*x2);subplot(2,1,2)ezplot(y,-1,1);title('someone (ID) 三次样条')三次样条插值截图因三次样条插值与原图过于相似,为避免重合,分列在

4、两张图里面2二次勒让德逼近代码%2 homework of someone (ID)%定义逼近原始函数%创建符号变量xsyms x;%定义目标函数,并作等值变换使得自变量的区间为-1,1azf=sin(0.5*pi+0.5*pi*x);%定义逼近次数n=2;%定义Legender多项式f1=1 x 1.5*x2-0.5;%通过循环依次计算系数for i=1:n+1 g(i)=f1(i)*f; temp(i)=int(g(i),-1,1); a(i)=(2*i-1)*temp(i)/2;end%累加得出插值多项式pf=0;for i=1:n+1 pf=pf+a(i)*f1(i);end%化简,取

5、六位有效数字pf=simplify(pf);pf=vpa(pf,6);ezplot(pf,0,1)hold onezplot(f,0,1)title('someone (ID) 逼近')二次勒让德逼近截图3-1牛顿插值代码:%3-1 homework of someone (ID)%创建插值原始数据x,yx=-5:5;y=1./(1+x.2);%读取插值维数n = length(x);%定义需要的变量c(1:n) = 0.0;syms t;f = y(1);y1 = 0;l = 1;%循环生成插值多项式for(i=1:n-1) for(j=i+1:n) y1(j) = (y(j

6、)-y(i)/(x(j)-x(i); end c(i) = y1(i+1); l = l*(t-x(i); f = f + c(i)*l; simplify(f); y = y1; %化简 f = collect(f); f = vpa(f, 6);end%画图syms p;q=1/(1+p2);ezplot(q,-5,5)%标题hold onezplot(f,-5,5)title('牛顿插值 someone (ID)')牛顿插值截屏:3-2拉格朗日插值代码:%3-2 homework of someone (ID)%创建插值原始数据p=0:20;x=5*cos(2*p+1)*

7、pi/42);y=1./(x.2+1);%创建符号变量syms t;n = length(x);f = 0.0;%循环生成基函数,分两段以绕过xi=xjfor(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);end; %将插值多项式展开f = collect(f); %将插值多项式的系数化成6位精度的小数f = vpa(f,6); %输出ff%画图 ezplot(f,-5

8、,5);%标题title('拉格朗日 someone (ID)')hold onsyms s;q=1/(s2+1);ezplot(q,-5,5)拉格朗日插值截图3-3分段线性插值代码:%3-3 homework of someone (ID)%创建插值原始数据x0,y0x0=-5:5;y0=1./(1+x0.2);%读取插值维数n = length(x0);%生成符号变量xsyms x;%循环生成每段直线for i=1:n-1;%斜率 k=(y0(i)-y0(i+1)/(x0(i)-x0(i+1);%生成插值函数 y=k*(x-x0(i)+y0(i);%画图 ezplot(y,

9、x0(i),x0(i+1);%设置坐标轴 axis(-5 5 0 2); hold onend%画原图syms p;p=1/(1+x2);ezplot(p,-5 5);title('someone 分段线性 (ID)');分段线性插值截图3-5三次保形(埃尔米特)插值代码:%3-4 homework of someone (ID)%创建插值原始数据x0,y0x0=-5:5;y0=1./(1+x0.2);yy=pchip(x0,y0);%读取插值维数n=length(x0);%创建符号变量xsyms xfor i=1:n-1 y=yy.coefs(i,1)*(x-x0(i)3+y

10、y.coefs(i,2)*(x-x0(i)2+yy.coefs(i,3)*(x-x0(i)1+yy.coefs(i,4);%因三保形条插值与原图过于相似,为避免重合,分列在两张图里面 subplot(2,1,1) ezplot(y,x0(i),x0(i+1) title('someone (ID) 三次保形') hold on axis(-5 5 0 1)endy=1/(1+x2);subplot(2,1,2)ezplot(y); axis(-5 5 0 1)title('someone (ID) 三次保形')三次保形(埃尔米特)插值截屏:3-5三次样条插值代码

11、:%3-5 homework of someone (ID)%创建插值原始数据x0,y0x0=-5:5;y0=1./(1+x0.2);yy=spline(x0,y0);%读取插值维数n=length(x0);%创建符号变量xsyms xfor i=1:n-1 y=yy.coefs(i,1)*(x-x0(i)3+yy.coefs(i,2)*(x-x0(i)2+yy.coefs(i,3)*(x-x0(i)1+yy.coefs(i,4);%因三次样条插值与原图过于相似,为避免重合,分列在两张图里面 subplot(2,1,1) ezplot(y,x0(i),x0(i+1) title('so

12、meone (ID) 三次样条') hold on axis(-5 5 0 1)endy=1/(1+x2);subplot(2,1,2)ezplot(y); axis(-5 5 0 1)title('someone (ID) 三次样条')三次样条插值截屏:因三次样条插值与原图过于相似,为避免重合,分列在两张图里面4图像放大原理思路在进行图像放大处理时,需要把原有的像素点拆开,在原有的像素点之间插入新的像素点,并计算新的像素点的颜色,为保证图片比例协调,一般对其纵横两向同时放大,此时如果在图片中取出一个3*3像素大小的矩阵,则其四角的元素为已知的。其余元素均为未知。(如图

13、所示)如何计算出上述图示的未知量是图像放大算法成功的关键,可以采用双线性插值的方法进行计算,也即在行方向和列方向分别进行一次线性插值,具体的流程为:步已知像素点可求像素点11,1,1,31,213,1,3,33,221,1,3,12,121,2,3,22,221,1,3,22,3图像放大代码%4 homework of someone (ID)%读取图片“4像素.jpg”到矩阵AA=imread('C:UsersEdimionDesktop学习文档4像素4像素.jpg');%读取图片的大小a,b,c=size(A);%创建放大后尺寸在矩阵 B=zeros(2*a-1,2*b-1

14、,c);%通过循环语句把原来图片中的像素点间隔布置到放大后的矩阵中去for i=1:c; for j=1:a; for k=1:b; B(2*j-1,2*k-1,i)=A(j,k,i); end endend%首先对行进行线性插值for i=1:c; for j=1:2*a-1; for k=1:b-1; B(j,2*k,i)=0.5*B(j,2*k+1,i)+0.5*B(j,2*k-1,i); end endend%然后在列方向插值for i=1:c; for k=1:2*b-1; for j=1:a-1; B(2*j,k,i)=0.5*B(2*j-1,k,i)+0.5*B(2*j+1,k,

15、i); end endendimwrite(B,'C:UsersEdimionDesktop学习文档4像素4像素-big.jpg')imshow('C:UsersEdimionDesktop学习文档4像素4像素-big.jpg')%为保证运算速度,使用了较小的图片(4*4像素,放大为7*7像素),原理和效果已经很明确。截图过小请老师见谅运行结果说明原图像的矩阵:val(:,:,1) = 0 0 255 255 0 0 255 255 255 255 0 0 255 255 0 0val(:,:,2) = 0 0 255 255 0 0 255 255 255 2

16、55 0 0 255 255 0 0val(:,:,3) = 0 0 255 255 0 0 255 255 255 255 0 0 255 255 0 0放大后图像的矩阵:val(:,:,1) = 0 8 0 255 255 254 255 16 6 0 255 236 251 246 0 0 9 255 255 255 250 255 255 255 246 255 226 248 255 245 255 255 0 13 18 250 255 255 246 0 0 0 255 254 241 252 12 10 0val(:,:,2) = 0 8 0 255 255 254 255 16 6 0 255 236 251 246 0 0 9 255 255 255 250 255 255 255 246 255 226 24

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论