matlab 三弯矩方程_数值计算方法实验之按照按三弯矩方程及追赶法的三次样条插值 (MATLAB 代码)...

一、实验目的

在已知f(x),x∈[a,b]的表达式,但函数值不便计算,或不知f(x),x∈[a,b]而又需要给出其在[a,b]上的值时,按插值原则f(xi)= yi(i= 0,1…….,n)求出简单函数P(x)(常是多项式),使其在插值基点xi,处成立P(xi)= yi(i=0,1,……,n),而在[a,b]上的其它点处成立f(x)≈P(x).

二、实验原理

20200423191301321383.png

三、实验程序

20200423191301537190.png

四、实验内容

求之f(x)=x4在[0,2]上按5个等距节点确定的Lagrange插值多项式.

五、实验程序

syms x

f(x)=x^4;

a=0;

b=2; %左右断点值

n=4; %节点数为n+1

h=(b-a)/n;%h为相邻节点间的间距

u=1/2;

v=1/2; %等距节点下u,v的值一直为1/2

d=zeros(n+1,1);

D=zeros(n+1,n+1);

S=cell(4,1);

d(1)=12/h*((f(a+h)-f(a))/h-subs(diff(f(x)),x,a));

d(n+1)=12/h*(subs(diff(f(x)),x,b)-(f(b)-f(b-h))/h);

D(n+1,n+1)=4;

for i=2:n

d(i)=12*((f(a+h*i)-f(a+h*(i-1)))/h-(f(a+h*(i-1))-f(a+h*(i-2))/h))/(2*h);

end

for j=1:n

D(j,j)=4;

D(j,j+1)=v;

D(j+1,j)=u;

end

M=linsolve(D,d);

for k=1:n

s1=M(k,1)*(a+h*k-x)^3/(6*h)+M(k+1,1)*(x-a-h*(k-1))/(6*h)+f(a+h*(k-1)-M(k,1)*h*h/6)*((a+h*k-x)^3/(6*h)+M(k+1,1)*(x-a-h*(k-1)))/h+(f(a+h*k)-M(k+1,1)*h*h/6)*(x-a-h*(k-1))/h;

s2=vpa(s1,4);

S{k,1}=char(s2);

end

五、运算结果

20200423191301645581.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值