第一章。1.用3位数字计算出方程:
的解x,y,再用6位数字计算出x与y,已知正确解为练习练习x=1,y=-1,计算结果说明什么?
x,y]=solve('0.780*x+0.563*y=0.217','0.457*x+0.330*y=0.127') x =
y =a=[0.780 0.563;0.457 0.330];b=[0.217;0.127];
l=vpa(a(2,1)/a(1,1),3);
c=vpa(a(2,2)-a(1,2)*l,3);d=vpa(b(2)-b(1)*l,3);
y=vpa(d/c,3),x=vpa((b(1)-a(1,2)*y)/a(1,1),3) y =
x =a=[0.780 0.563;0.457 0.330];b=[0.217;0.127];
l=vpa(a(2,1)/a(1,1),6);
c=vpa(a(2,2)-a(1,2)*l,6);d=vpa(b(2)-b(1)*l,6);
y=vpa(d/c,6),x=vpa((b(1)-a(1,2)*y)/a(1,1),6) y =
x =第二章。用matlab作插值计算:设n个节点以数组x0,y0输入,m个插值点以数组x输入,输出数组y为m个插值。比如一个名为的m文件内容为:
function y=lagr1(x0,y0,x)
n=length(x0);m=length(x);
for i=1:m
z=x(i);
s=0.0;
for k=1:n
p=1.0;
for j=1:n
if j~=k
p=p*(z-x0(j))/x0(k)-x0(j));
endend
s=s+p*y0(k);
endy(i)=s;
end作lagrange插值时只需在输入x0,y0,x后运行:y=lagr1(x0,y0,x)即可;
分段线性插值有现成的程序:y=interp1(x0,y0,x)
三次样条插值也有现成的程序:y=interp1(x0,y0,x,'spline');此种方法属于自然边界条件。其他边界条件下的三次样条插值程序见matlab的样条工具包(spline toolbook)。
例:对,,用个节点(等分)作上述三种插值,用m(=21)个插值点(等分)作图,比较结果。其语句如下:
n=11;m=21;
x=-5:10/(m-1):5;
y=1./(1+x.^2);
z=0*x;
x0=-5:10/(n-1):5;
y0=1./(1+x0.^2);
y1=lagr1(x0,y0,x);
y2=interp1(x0,y0,x);
y3=interp1(x0,y0,x,'spline');
x' y' y1' y2' y3']
plot(x,z,'r',x,y,'k:',x,y1,'y',x,y2,'b',x,y3,'o') ans =
插值与拟合实验内容:
1. 选择一些函数,在n个节点上,用拉格朗日、分段线性、三次样条三种插值方法,计算m个插值点的函数值,通过数值和图形输出。
n=10;m=100;
x=linspace(0,2*pi,100);
y=sin(x);
z=x*0;
x0=linspace(0,2*pi,6);
y0=sin(x0);
y1=lagr1(x0,y0,x);
y2=interp1(x0,y0,x);
y3=interp1(x0,y0,x,'spline');
plot(x,z,x,y,'k',x,y1,x,y2,x,y3,'y')
b.n=10;m=100;b=0:0.1:1;a=b*0;
x=linspace(-1,1,100);
y=sqrt(1-x.*x);
z=x*0;
x0=linspace(-1,1,6);
y0=sqrt(1-x0.*x0);
y1=lagr1(x0,y0,x);
y2=interp1(x0,y0,x);
y3=interp1(x0,y0,x,'spline');
plot(x,z,x,y,'k',x,y1,x,y2,x,y3,'b',a,b,'k');
2. 用在x=0,1,4,9,16产生5个节点,用不同的节点构造插值公式来计算x=5处的插值,与精确值比较并进行分析。
x0=[0 1 4 9 16];y0=sqrt(x0);x=5;y=sqrt(5)
y1=lagr1(x0,y0,x)
x0(1)=[y0=sqrt(x0);y2=lagr1(x0,y0,x)
x0(4)=[y0=sqrt(x0);y3=lagr1(x0,y0,x)
x0(1)=[y0=sqrt(x0);y4=lagr1(x0,y0,x) y =
y1 =y2 =
y3 =y4 =
第三章。2024年龙格(runge)给出一个例子:,定义在区间[-1,1]上,这是一个很光滑的函数,它的任意阶导数都存在,对它在[-1,1]上作等距节点插值时,插值多项式的情况见图1
从图1中看出,在靠近-1或1时余项会随着n的增大而很大,譬如,但,从图中还可看到在0附近插值效果是好的,即余项较小。另一个现象是插值多项式随节点增多而振动更多。这种插值多项式当节点增加时不能更好地接近被插值函数的现象称为龙格现象。
n=4;m=8;k=12;
x=-1:0.01:1;
y=1./(1+25*x.^2);
z=0*x;
x0=-1:2/n:1;
y0=1./(1+25*x0.^2);
z0=lagr1(x0,y0,x);
x1=-1:2/m:1;
y1=1./(1+25*x1.^2);
z1=lagr1(x1,y1,x);
x2=-1:2/k:1;
y2=1./(1+25*x2.^2);
z2=lagr1(x2,y2,x);
plot(x,y,x,z0,x,z1,x,z2,x,z,'y')
legend('f(x)',n=4','n=8','n=12')
第四章。例2 为了开拓市场,某公司对其新产品作了一系列调查,他们发现这一新产品的销量与下列事件关系密切:其一是温度,其二是上证指数,其三是广告费……为此,他们记录了下面的数据表,假设这些事件与销售量近似成线性关系,试给出这种关系的数学表达式。
解对于这个例子,我们可以把销售量作为y,并用分别表示温度、上证指数、广告费、推销人员数目、返修率。然后,利用最小二乘法就可以得到其关系表达式:
a=[39,567,10000,2, 0.20;37,679,0,3,0.15;30,346,5000,3,0.10;25,987,5000,3,0.08;
b=[75;68;105;136;152;191;148;234];
MATLAB编程
电力系统基础课程设计报告。电力系统潮流计算的matlab编程。程序流程图 源程序 disp电力系统潮流计算的matlab编程。disp 请输入电力系统参数!n input 请输入节点数 n nl input 请输入支路数 nl isb input 请输入平衡节点号 isb pr input 请输入误...
MATLAB编程作业汇总
matlab编程训练 作业。实训一 matlab语言介绍和数值计算。1 先求下列表达式的值,然后显示matlab工作空间的使用情况并保存变量。2.已知,求下列表达式的值 1 a 6 b和a b i 其中i为单位矩阵 a 6 b a b i 2 a b和a.b a b程序 a 12 34 4 34 7...
MATLAB编程基础 习题
1.1请分别用直接构造法 增量构造法 冒号表达式 和linspace函数创建数组 1,3,5,7,9,11 体会以上创建方法有何区别和联系。若数组b为在0 2 之间均匀分布的22个数据,c 1.3,2.5,7.6,2,3 d 23,20,17,14,11,8,5,2 各用何种方法输入较为简单?写出源...