数值分析matlab程序实例
1,秦九韶算法,求出P(x=3)=2+4x+5x^2+2x^3的值
clear?all;
x=3;
n=3;
a(1)=2;a(2)=4;a(3)=5;a(4)=2
v(1)=a(n+1);
for k=2:(n+1);
v(k)=x*v(k-1)+a(n-k+2);
end?p=v(n+1)
p =,
113
2,一次线型插值程序:利用100.121.求115的开方。
clear all;
?x1=100;x2=121;y1=10;y2=11;
?x=115;
l1=(x-x2)/(x1-x2);l2=(x-x1)/(x2-x1);
p1=l1*y1+l2*y2p1 =
? ?10.7143
3,分段插值程序,已知0,0),(1,1),(2,5)(3, 8)上的分段一次插值,求S1(1.5).
clear all
x=[0 1 2 3];
y=[0 1 5 8];
n=length(x);a=1.5;
for i=2:n
if(x(i-1)<=a
end
H1=y(i-1)+(y(i)-y(i-1))/(x(i)-x(i-1))*(a-x(i-1))
H1 =
3.5000
4)曲线拟合:用一个5次多项式在区间[0,2π]内逼近函数sin(x)。
clear all
X=linspace(0,2*pi,50);Y=sin(X);
[P,S]=polyfit(X,Y,5)
plot(X,Y,'k*',X,polyval(P,X),'k-')
P =
-0.0056 0.0874 -0.3946 0.2685 0.8797 0.0102
S =
R: [6x6 double]
df: 44
normr: 0.0337
5)求有理分式的导数
clear all
P=[3,5,0,-8,1,-5];
Q=[10,5,0,0,6,0,0,7,-1,0,-100];
[p,q]=polyder(P,Q)
6)将以下数据按从小到大排序:4.3 5.7 5.2 1.8 9.4
a=[4.3 5.7 5.2 1.8 9.4];b(1:100)=0;n=1;
b(a*10)=1;
for k=1:100
a(n)=k/10;
if b(k)>0
a(n)=k/10;
n=n+1;
end
end
a
a =
1.8000 4.3000 5.2000 5.7000 9.4000 10.0000
7) 用二分法求方程x3-x-1=0在[1,2]内的近似根,要求误差不超过10-3。
clear all
n=ceil(3*log2(10)-1);a=1;b=2;
for k=0:n
x=(a+b)/2;
if(a^3-a-1)*(x^3-x-1)>0
a=x;
end
if(a^3-a-1)*(x^3-x-1)<0
b=x;
end
end
x
x =
1.3252
求 的估值
8)梯形公式:
clear all
a=1;b=2;n=3;
h=(b-a)/2;T=1;
for i=1:n;
u=(a+(i-1)*h)^4+(a+i*h)^4;
T=T+h/2*u;
end
T
T =
21.5469
9)辛卜生公式:
clear all
a=1;b=2;n=3;
h=(b-a)/2;T=1;
for i=1:n;
T=T+h/6*((a+(i-1)*h)^4+4*((a+(i-1)*h+h/2)^4)+(a+i*h)^4);
end
T
T =
20.3320
10)复化二点高斯f(x)= 2-x^2在区间[a,b]=[ ? 5],n=10
clear all;
f='2-x^2';
f=inline(f);
a=3;
b=5;
n=10;
h=(b-a)/n;t=2*3^0.5;
x(1)=a;s=0;
for i=2:n+1
x(i)=x(i-1)+h;
c=(x(i)+x(i-1))/2;
s=s+f(c-h/t)+f(c+h/t);
end
s=s*h/2;
disp(s);
-28.6667
11)牛顿插值
clear all
x0=0;x1=1;x2=2;
y0=0;y1=1;y2=4;x=2;
f11=(y1-y0)/(x1-x0);
f12=(y2-y0)/(x2-x0);
f22=(f12-f11)/(x2-x1);
N2=y0+f11*(x-x0)+f22*(x-x1)*(x-x0)
N2 =
4
12)复化矩形公式
clear all;
f='x^3';
f=inline(f);
a=2;
b=5;
n=1