matlab通用程序,三次样条差值-matlab通用程序
数值分析课程的大作业,教材《数值分析》李乃成.梅立泉
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通用程序相关推荐
- 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) ...
- matlab求x对应y值,matlab 不知道函数表达式,已知y值求x
^根据给定的数来据,我们可以假自定函数表达式为baiy=b1+b2*x+b3*x^du2+b4*x^3+b5*x^4;所以上述函zhi数可以用matlab的regress()多元线性dao回归分析函数 ...
- matlab中用公式求pi值,matlab用π 4公式求π的近似值,直到某一项的绝对值小于10-6为止...
求问matlab计算的几个公式以及方法. 峰值max峭度应该就是梯度了gradient曲线画图:plot(二维)plot3(三维),其他画图都用这个就够了查matlab文档 求matlab高手,这个公 ...
- 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; ...
- matlab 求取矩阵中值,matlab中取矩阵中指定列的值组成新矩阵
matlab 矩阵中怎么加入冒号,比如我想矩阵A的第一列都为"1:" A(:,1)='1:';再问:不行的再答:用结构矩阵或者单元矩阵试试吧. 诚教:matlab中取矩阵的其中几行 ...
- matlab stats里的f值,MATLAB 回归分析regress,nlinfit,stepwise函数
回归分析 1.多元线性回归 在Matlab统计工具箱中使用命令regress()实现多元线性回归,调用格式为 b=regress(y,x) 或 [b,bint,r,rint,statsl = rege ...
- matlab中memory模块初始值,Matlab的memory模块消除代数环
什么是代数环? 发生在两个或多个模块在输入端口具有信号直接传递而形成反馈的情况时,直接传递的模块在不知输入端口的值的情况下无法计算出输出端的值,也就是现在时刻的输出是依赖现在时刻的输入值来计算的.当这 ...
- matlab 调用子函数返回值,matlab学习笔记13_1 函数返回值
一起来学matlab-matlab学习笔记13函数 13_1 函数返回值 觉得有用的话,欢迎一起讨论相互学习~Follow Me 函数返回一个值 返回值不必使用return语句,而是直接将需要返回的变 ...
- matlab求x对应y值,matlab已知f(x,y)=0,已知一组x如何求对应的y值? - 计算模拟 - 小木虫 - 学术 科研 互动社区...
不知道你是怎么画的,ezplot中x的范围取得太大了吧,,.我画出来的图是一致的啊. 不知道怎么不能上传图片了,你自己运行下吧 clc; clear all; close all; x=[0, 0. ...
最新文章
- L3-015 球队“食物链”(dfs)
- Java编程基础篇第四章
- 金立软件测试员,6GB运存有多强 金立M2017打开APP测试
- 中科大陈秀雄团队成功证明凯勒几何两大核心猜想,研究登上《美国数学会杂志》...
- BugkuCTF-MISC题1和0的故事
- 【Java编程思想笔记】-集合1
- 腾讯裁员内幕:顶层反思推动,PCG与CSIG影响最大
- 【MATLAB】求定积分
- HTML练习4制作京东登录页,day4 CSS属性和京东登录
- Nacos集群环境搭建
- Word如何将A4纸打印成上下两部分可复写的二联单
- oracle增加dbf文件,oracle导入dbf文件工具下载|
- 【Python基础 | 文件】小实验:将古诗写入一个文件,并复制到另一个文件中
- 会议OA项目之我的审批功能
- BCT4157/4157B是一种高带宽、快速单刀双掷(SPDT)CMOS开关
- 计算机系统包括哪些郜分,一台计算机的基本硬件配置有哪些?
- 洛达AirPods鉴别检测工具AB153x_UT,支持1562a 1562f
- Eterm协议中文汉字编码
- 苹果9是5g手机吗_苹果手机可以量体温?这是真的吗
- 系统升级: PHP(5.1.6-5.4.7) CI(1.7.2-2.1.2)调查记录