早教吧作业答案频道 -->其他-->
三次样条函数源程序如何复制到matlab中求解?源程序如下:(程序中:X,Y为输入结点,dY为两端点一阶导数矩阵,x0为待求插值点,m为有效数字位数.)function[]=spline3(X,Y,dY,x0,m)N=size(X,2);s0=dY(1);sN=dY(2)
题目详情
三次样条函数源程序如何复制到matlab中求解?
源程序如下:(程序中:X,Y为输入结点,dY为两端点一阶导数矩阵,x0为待求插值点,m为有效数字位数.)
function[]=spline3(X,Y,dY,x0,m)
N=size(X,2);
s0=dY(1);sN=dY(2);
interval=0.025;
disp('x0为插值点')
x0
h=zeros(1,N-1);
for i=1:N-1 h(1,i)=X(i+1)-X(i);end
d(1,1)=6*((Y(1,2)-Y(1,1))/h(1,1)-s0)/h(1,1);
d(N,1)=6*(sN-(Y(1,N)-Y(1,N-1))/h(1,N-1))/h(1,N-1);
for i=2:N-1
d(i,1)=6*((Y(1,i+1)-Y(1,i))/h(1,i)-(Y(1,i)-Y(1,i-1))
/h(1,i-1))/(h(1,i)+h(1,i-1));end
mu=zeros(1,N-1);md=zeros(1,N-1);
md(1,N-1)=1;mu(1,1)=1;
for i=1:N-2
u=h(1,i+1)/(h(1,i)+h(1,i+1));mu(1,i+1)=u;
md(1,i)=1-u;end
p(1,1)=2;q(1,1)=mu(1,1)/2;
for i=2:N-1
p(1,i)=2-md(1,i-1)*q(1,i-1);q(1,i)=mu(1,i)/p(1,i);end
p(1,N)=2-md(1,N-1)*q(1,N-1);
y=zeros(1,N);y(1,1)=d(1)/2;
for i=2:N y(1,i)=(d(i)-md(1,i-1)*y(1,i-1))/p(1,i);end
x=zeros(1,N);x(1,N)=y(1,N);
for i=N-1:-1:1 x(1,i)=y(1,i)-q(1,i)*x(1,i+1);end
fprintf('M为三对角方程的解\n');M=x;
fprintf('\n');
syms t;
digits(m);
for i=1:N-1
pp(i)=M(i)*(X(i+1)-t)^3/(6*h(i))+M(i+1)*(t-X(i))^3
/(6*h(i))+(Y(i)-M(i)*h(i)^2/6)*(X(i+1)-t)/h(i)+
(Y(i+1)-M(i+1)*h(i)^2/6)*(t-X(i))/h(i);
pp(i)=simplify(pp(i));coeff=sym2poly(pp(i));
if length(coeff)~=4
tt=coeff(1:3);coeff(1:4)=0;coeff(2:4)=tt;end
if x0>X(i)&x0
源程序如下:(程序中:X,Y为输入结点,dY为两端点一阶导数矩阵,x0为待求插值点,m为有效数字位数.)
function[]=spline3(X,Y,dY,x0,m)
N=size(X,2);
s0=dY(1);sN=dY(2);
interval=0.025;
disp('x0为插值点')
x0
h=zeros(1,N-1);
for i=1:N-1 h(1,i)=X(i+1)-X(i);end
d(1,1)=6*((Y(1,2)-Y(1,1))/h(1,1)-s0)/h(1,1);
d(N,1)=6*(sN-(Y(1,N)-Y(1,N-1))/h(1,N-1))/h(1,N-1);
for i=2:N-1
d(i,1)=6*((Y(1,i+1)-Y(1,i))/h(1,i)-(Y(1,i)-Y(1,i-1))
/h(1,i-1))/(h(1,i)+h(1,i-1));end
mu=zeros(1,N-1);md=zeros(1,N-1);
md(1,N-1)=1;mu(1,1)=1;
for i=1:N-2
u=h(1,i+1)/(h(1,i)+h(1,i+1));mu(1,i+1)=u;
md(1,i)=1-u;end
p(1,1)=2;q(1,1)=mu(1,1)/2;
for i=2:N-1
p(1,i)=2-md(1,i-1)*q(1,i-1);q(1,i)=mu(1,i)/p(1,i);end
p(1,N)=2-md(1,N-1)*q(1,N-1);
y=zeros(1,N);y(1,1)=d(1)/2;
for i=2:N y(1,i)=(d(i)-md(1,i-1)*y(1,i-1))/p(1,i);end
x=zeros(1,N);x(1,N)=y(1,N);
for i=N-1:-1:1 x(1,i)=y(1,i)-q(1,i)*x(1,i+1);end
fprintf('M为三对角方程的解\n');M=x;
fprintf('\n');
syms t;
digits(m);
for i=1:N-1
pp(i)=M(i)*(X(i+1)-t)^3/(6*h(i))+M(i+1)*(t-X(i))^3
/(6*h(i))+(Y(i)-M(i)*h(i)^2/6)*(X(i+1)-t)/h(i)+
(Y(i+1)-M(i+1)*h(i)^2/6)*(t-X(i))/h(i);
pp(i)=simplify(pp(i));coeff=sym2poly(pp(i));
if length(coeff)~=4
tt=coeff(1:3);coeff(1:4)=0;coeff(2:4)=tt;end
if x0>X(i)&x0
▼优质解答
答案和解析
直接调用肯定不行的,你要新建一个脚本,'script',把代码复制进去,最好文件名和函数名相同, 就可以调用了
看了 三次样条函数源程序如何复制到...的网友还看了以下:
fs*(0:1023)/2048源程序是这样的,希望哪个高手能详细地讲解下,小弟感激不尽~fs=8 2020-04-26 …
关于桃花源记的1、说说桃花源的人民过的是怎样的生活.2、桃花源里的人是怎样对待渔人的?反映了桃花源 2020-04-27 …
求满足方程:x*x+y*y+z*z=88*88 (注:要求x>y>z)的方程的整数解的个数(包括负 2020-05-13 …
三次样条函数源程序如何复制到matlab中求解?源程序如下:(程序中:X,Y为输入结点,dY为两端 2020-05-16 …
1.以下叙述中正确的是 .A.C语言系统以函数为单位编译源程序 B.main函数必须放1.以下叙述 2020-05-16 …
(1)下列选项中不符合良好程序设计风格的是().A)源程序要文档化B)数据说明的次序要规范化C)避 2020-05-20 …
汇编语言的最主要的功能是将汇编语言源程序翻译成目标程序。它还具有以下功能:对源程序进行检查, 2020-05-23 …
汇编语言源程序须经汇编程序翻译成目标程序:解释性语言源程序须经解释程序解释执行;编译性源程序 2020-05-23 …
求通项公式a(n)=n+n*a(n-1),其中a(1)=0,a(2)=2如果能用matlab解的话 2020-08-02 …
某中学生物兴趣小组为了调查当地某一湖泊的水质污染情况,在注入湖泊的3个主要水源的入口处采集水样,并检 2020-11-04 …