早教吧作业答案频道 -->其他-->
三次样条函数源程序如何复制到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',把代码复制进去,最好文件名和函数名相同, 就可以调用了
看了 三次样条函数源程序如何复制到...的网友还看了以下:
微分的概念性问题我们知道微分中有dy=A ·(⊿x),为什么又出来个dy=A ·dx?dx和 (⊿ 2020-05-13 …
多元函数对曲面的积分,比如说,曲面s与yz平面垂直,那么什么积分等于零呢?含有dy和dz的都是零吗 2020-06-14 …
x^2+y^2=R^2的二阶导数为什么等于R^2/y^3我是用隐含数公式dy/dx=-F(x)/F 2020-06-18 …
设y=[x+e^(1-x)]^X,则dy|x=1=?真心求教啊!还有,dy/dx|x=x0表示f' 2020-07-15 …
设函数fx在(-无穷大,+无穷大)内有定义下列函数必为奇函数的有A.y=-|f(x)|By=x*f 2020-07-19 …
matlab常微分数值解是指原函数么有这么一道题:dy/dx-2x=2x/y;y(1)=0如何做? 2020-07-24 …
高数导数问题参数方程求二次导数时,对dy/dx再求导变成(d^2y)/dx^2=d*dy/dx^2 2020-07-31 …
f(x)的二阶导数都是dy/dx的平方?//dy^2/dx^2f'(x)=dy/dx(f(x)的一 2020-08-02 …
数学中dy与△y,dx与△x,有何区别,为什么说dy/dx=△y/△x? 2020-11-01 …
关于高等数学微分如何写才是正确的?比如说:dy/dx这是一次的写法那(dy/dx)^2=什么?还有d 2021-01-05 …