数值分析课程的大作业,教材《数值分析》李乃成.梅立泉

clear

x=input(‘请按照格式[x1,x2,x3…]格式输入y=f(x)函数已知点的横座标xi=’);   %三次样条差值函数

y=input(‘请按照格式[y1,y2,y3…]格式输入y=f(x)函数已知点对应的纵座标yi=’);

n=size(x,2);      %特别注意,matlab中的矩阵编号是从1开始的,而教材上的矩阵编号是从0开始的

for k=2:n           %计算h(i)

h(k)=x(k)-x(k-1);

end

for k=2:(n-1)                    %计算μ和λ

mu(k)=h(k)/(h(k)+h(k+1));

lumbda(k)=1-mu(k);

end

for k=2:(n-1)

d(k)=6*((y(k+1)-y(k))/h(k+1)-(y(k)-y(k-1))/h(k))/(h(k)+h(k+1));            %计算di

end

fprintf(‘边界条件类型选择:\n1.已知f(a)和f(b)的二阶导数\n2.已知f(a)和f(b)的一阶导数\n3.y=f(x)是以T=b-a为周期的周期函数\n’);

m=input(‘请输入对应序号:’);

if m==1

M(1)=input(‘请输入f(a)的二阶导数值:’);

M(n)=input(‘请输入f(b)的二阶导数值:’);

A=zeros(n-2,n-2);

for k=1:(n-3)             %构造追赶法所需的A和b

A(k,k)=2;

A(k,k+1)=lumbda(k+1);

A(k+1,k)=mu(k+2);

end

A(n-2,n-2)=2;

b=zeros(n-2,1);

for k=2:(n-3)

b(k,1)=d(k+1);

end

b(1,1)=d(2)-mu(2)*M(1);

b(n-2,1)=d(n-1)-lumbda(n-1)*M(n);

N=ZhuiGanFa(A,b);            %利用追赶法求解

for k=2:(n-1)

M(k)=N(k-1,1);

end

elseif m==2

y0=input(‘请输入f(a)的一阶导数值:’);

yn=input(‘请输入f(b)的一阶导数值:’);

d(1)=6*((y(2)-y(1))/h(2)-y0)/h(2);

d(n)=6*(yn-(y(n)-y(n-1))/h(n))/h(n);

A=zeros(n,n);

for k=2:(n-2)                      %构造追赶法所需的A和b

A(k,k)=2;

A(k,k+1)=lumbda(k);

A(k+1,k)=mu(k+1);

end

A(1,1)=2;

A(1,2)=1;

A(2,1)=mu(2);

A(n-1,n-1)=2;

A(n,n)=2;

A(n,n-1)=1;

A(n-1,n)=lumbda(n-1);

b=zeros(n,1);

for k=1:n

b(k,1)=d(k);

end

N=ZhuiGanFa(A,b);            %利用追赶法求解

for k=1:n

M(k)=N(k,1);

end

elseif m==3

d(n)=6*((y(2)-y(n))/h(2)-(y(n)-y(n-1))/h(n))/(h(n)+h(2));

A=zeros(n-1,n-1);

for k=1:(n-2)

A(k,k)=2;

A(k,k+1)=lumbda(k+1);

A(k+1,k)=mu(k+2);

end

A(n-1,n-1)=2;

A(1,n-1)=mu(2);

A(n-1,1)=lumbda(n);

b=zeros(n-1,1);

for k=1:(n-1)

b(k,1)=d(k+1);

end

N=LU_fenjieqiuxianxingfangcheng(A,b);       %利用LU分解求解线性方程组

for k=1:(n-1)

M(k+1)=N(k,1);

end

M(1)=M(n);

else

fprintf(‘您输入的序号不正确’);

end

M;

for k=1:(n-1)

clear S1

syms X

S1=(x(k+1)-X)^3*M(k)/(6*h(k+1))+(X-x(k))^3*M(k+1)/(6*h(k+1))+…

(y(k)-h(k+1)^2*M(k)/6)*(x(k+1)-X)/h(k+1)+…

(y(k+1)-h(k+1)^2*M(k+1)/6)*(X-x(k))/h(k+1);

fprintf(‘当%d=

S=expand(S1)

end

———————————-

function x=LU_fenjieqiuxianxingfangcheng(A,b)      %LU分解求解线性方程

n=size(A,1);

for j=1:n

u(1,j)=A(1,j);

end

for i=2:n

l(i,1)=A(i,1)/u(1,1);

end

for i=2:(n-1)

clear SUM1

SUM1=0;

for k=1:(i-1)

SUM1=SUM1+l(i,k)*u(k,i);

end

u(i,i)=A(i,i)-SUM1;

for j=(i+1):n

clear SUM2

SUM2=0;

for k=1:(i-1)

SUM2=SUM2+l(i,k)*u(k,j);

end

u(i,j)=A(i,j)-SUM2;

clear SUM3

SUM3=0;

for k=1:(i-1)

SUM3=SUM3+l(j,k)*u(k,i);

end

l(j,i)=(A(j,i)-SUM3)/u(i,i);

end

end

clear SUM4

SUM4=0;

for k=1:(n-1)

SUM4=SUM4+l(n,k)*u(k,n);

end

u(n,n)=A(n,n)-SUM4;

for i=1:n

l(i,i)=1;

end

l;

u;

%—————下面是利用LU分解求解线性方程组Ax=b——%

y(1,1)=b(1,1);%求解Ly=b

for i=2:n

clear SUM5

SUM5=0;

for j=1:(i-1)

SUM5=SUM5+l(i,j)*y(j,1);

end

y(i,1)=b(i,1)-SUM5;

end

x(n,1)=y(n,1)/u(n,n);%求解Ux=y

for i=(n-1):(-1):1

clear SUM5

SUM5=0;

for j=(i+1):n

SUM5=SUM5+u(i,j)*x(j,1);

end

x(i,1)=(y(i,1)-SUM5)/u(i,i);

end

——————————–

function x=ZhuiGanFa(A,d)   %追赶法求解线性方程组的函数

n=size(A,1);

u(1)=A(1,1);

y(1)=d(1,1);

for k=2:n

clear l1

l1=A(k,k-1)/u(k-1);

u(k)=A(k,k)-l1*A(k-1,k);

y(k)=d(k,1)-l1*y(k-1);

end

x(n,1)=y(n)/u(n);

for m=(n-1):(-1):1

x(m,1)=(y(m)-A(m,m+1)*x(m+1,1))/u(m);

end

matlab通用程序,三次样条差值-matlab通用程序相关推荐

  1. cubic差值matlab,matlab自带的插值函数interp1的四种插值方法

    x=0:2*pi; y=sin(x); xx=0:0.5:2*pi; %interp1对sin函数进行分段线性插值,调用interp1的时候,默认的是分段线性插值 y1=interp1(x,y,xx) ...

  2. matlab求x对应y值,matlab 不知道函数表达式,已知y值求x

    ^根据给定的数来据,我们可以假自定函数表达式为baiy=b1+b2*x+b3*x^du2+b4*x^3+b5*x^4;所以上述函zhi数可以用matlab的regress()多元线性dao回归分析函数 ...

  3. matlab中用公式求pi值,matlab用π 4公式求π的近似值,直到某一项的绝对值小于10-6为止...

    求问matlab计算的几个公式以及方法. 峰值max峭度应该就是梯度了gradient曲线画图:plot(二维)plot3(三维),其他画图都用这个就够了查matlab文档 求matlab高手,这个公 ...

  4. matlab获得solve得到的值,matlab solve函数赋值方程组

    matlab函数赋值如何实现? 定义全局变量就可以的,你可以在命令窗口中先分别定义如:a=2,b=5,c=7,d=11,e=12;x=[abcde];f=f(x)回车就OK啦再如:a=30;b=45; ...

  5. matlab 求取矩阵中值,matlab中取矩阵中指定列的值组成新矩阵

    matlab 矩阵中怎么加入冒号,比如我想矩阵A的第一列都为"1:" A(:,1)='1:';再问:不行的再答:用结构矩阵或者单元矩阵试试吧. 诚教:matlab中取矩阵的其中几行 ...

  6. matlab stats里的f值,MATLAB 回归分析regress,nlinfit,stepwise函数

    回归分析 1.多元线性回归 在Matlab统计工具箱中使用命令regress()实现多元线性回归,调用格式为 b=regress(y,x) 或 [b,bint,r,rint,statsl = rege ...

  7. matlab中memory模块初始值,Matlab的memory模块消除代数环

    什么是代数环? 发生在两个或多个模块在输入端口具有信号直接传递而形成反馈的情况时,直接传递的模块在不知输入端口的值的情况下无法计算出输出端的值,也就是现在时刻的输出是依赖现在时刻的输入值来计算的.当这 ...

  8. matlab 调用子函数返回值,matlab学习笔记13_1 函数返回值

    一起来学matlab-matlab学习笔记13函数 13_1 函数返回值 觉得有用的话,欢迎一起讨论相互学习~Follow Me 函数返回一个值 返回值不必使用return语句,而是直接将需要返回的变 ...

  9. matlab求x对应y值,matlab已知f(x,y)=0,已知一组x如何求对应的y值? - 计算模拟 - 小木虫 - 学术 科研 互动社区...

    不知道你是怎么画的,ezplot中x的范围取得太大了吧,,.我画出来的图是一致的啊. 不知道怎么不能上传图片了,你自己运行下吧 clc; clear all;  close all; x=[0, 0. ...

最新文章

  1. 什么是布隆过滤器?如何解决高并发缓存穿透问题?
  2. 【100题】第十五题(树的镜像问题)
  3. python2.7.13环境搭建
  4. python实例(一)
  5. 不同组合方式有四种纸币java_拼凑钱币丶Java教程网-IT开发者们的技术天堂
  6. Asp.net 调用mysql存储过程参数传中文乱码!
  7. 我用 Python 3分钟实现9种经典排序算法的可视化
  8. 尽显中国风 | 高品质海报背景,PSD分层,智能替换展示商品
  9. C语言单链表定义及各类操作
  10. 蓝桥杯2019年第十届C/C++省赛第六题-旋转
  11. VMware虚拟机的Linux系统访问本地磁盘
  12. 电子合同助力“在线教育”高效发展
  13. 服务器租用带宽不够会出现哪些情况
  14. [VQA论文阅读]RUBi Reducing Unimodal Biases for Visual Question Answering
  15. 安知我不知死之乐”的意境
  16. 初学者必会的100个编程代码
  17. 电机的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  18. 自动对焦模块理论基础及其硬件实现浅析(一)
  19. 幼儿园语言活动包括哪几类_幼儿园健康活动分为哪几类,幼儿园教育活动包括...
  20. BIGEMAP GIS Office介绍

热门文章

  1. 《如何搭建小微企业风控模型》第十二节 模型检验 节选
  2. Python入门学习笔记(2)
  3. 如何将自己的代码发布到Maven中央仓库?
  4. HBase实践案例:车联网监控系统
  5. encapsulation
  6. 教你如何从0到1实现组件化架构
  7. 捡起JavaScript(3)
  8. 面向对象(类,面向对象三大特性)
  9. 5.12 操作系统——进程调度
  10. gVim取消自动备份