数学软件与数学实验题集答案.docx
- 文档编号:18596996
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:21
- 大小:1.58MB
数学软件与数学实验题集答案.docx
《数学软件与数学实验题集答案.docx》由会员分享,可在线阅读,更多相关《数学软件与数学实验题集答案.docx(21页珍藏版)》请在冰点文库上搜索。
数学软件与数学实验题集答案
【Finished】【Unfinished】
【1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20】
在MATLAB中编写三个M文件,分别为fun.m;dfun.m;newtoneq.m三个M文件。
文件代码如下:
fun.m文件:
functiony1=fun(x)
y1=x.^3+2*x.^2+10*x-20;
dfun.m文件:
functiony2=dfun(x)
y2=3*x.^2+4*x+10;
newtoneq.m文件:
function[xk,k]=newtoneq(x0,n,derta)
k=1;
xk
(1)=x0;
t=x0-fun(x0)./dfun(x0);
whileabs(t-x0)>=derta
x0=t;
k=k+1;
xk(k)=t;
t=x0-fun(x0)./dfun(x0);
if(k-1)>n
error('nisfull');
end
end
若在MATLAB命令窗口键入:
>>[xk,k]=newtoneq(9,10,0.00001)
先键入fun函数,M文件如下:
functiony=fun(x)
y=x.^3-x-1;
end
主代码如下:
a=0;
b=2;
err=b-a;
eps=10^(-4);
k=0;
whileerr>=eps
k=k+1;
c(k)=(a+b)/2;
iffun(a)*fun(c(k))<=0
b=c(k);
else
a=c(k);
end
fprintf('第%2d次二分后的区间[a,b]=[%5.4f,%5.4f]\n',k,a,b)
err=b-a;
end
fprintf('满足要求的近似根x=%5.4f\n',c(k));
编写一个M文件并命名为fun2.m。
代码如下:
x=[0.40,0.55,0.65,0.80,0.90,1.05];
y=[0.41075,0.57815,0.69675,0.88811,1.02652,1.25382];
n=length(x);
newton=[x',y'];
forj=2:
n
fori=n:
-1:
1
ifi>=j
y(i)=(y(i)-y(i-1))/(x(i)-x(i-j+1));
else
y(i)=0;
end
end
newton=[newton,y'];
end
disp('下三角状的牛顿差商表如下:
')
newton
编写一个M文件并命名为Language.m。
代码如下:
functionf=Language(x,y,x0)
symst;
if(length(x)==length(y))
n=length(x);
else
disp('x和y的维数不相等!
');
return;
end
f=0.0;
for(i=1:
n)
l=y(i);
for(j=1:
i-1)
l=l*(t-x(j))/(x(i)-x(j));
end;
for(j=i+1:
n)
l=l*(t-x(j))/(x(i)-x(j));
end
f=f+l;
simplify(f);
end
f0=subs(f,'t',x0);
在MATLAB命令窗口键入
>>x=[100121144];
>>y=[101112];
>>Language(x,y,115)
结果为:
ans=
-1/44*(-10/21*t+1210/21)*(t-144)-1/23*(11/21*t-1100/21)*(t-144)+1/23*(3/11*t-300/11)*(t-121)
clear,clc
x0=2;
xn=1/2*(x0+2/x0);
while(abs(xn-x0)>10^(-8))
x0=xn;
xn=1/2*(x0+2/x0);
end
xn
n=input('请输入项数');
x=1;
t=0;
fori=1:
n
t=t+((-1)^(i-1)*x^i)/i;
end
t
项数与逼近精确的之间的关系
>>t=[0.68320.68610.6882];
>>n=[5070100];
>>plot(n,t,'r*')
原迭代式M文件:
functiony=originalFunction(x)
y=x^2+x-2;
end
改进后,即艾特金迭代式M文件:
functiony=aikentFunction(x,fun)
%fun(x)Ϊx~n+1
y=x-(fun(x)-x)^2/(fun(fun(x))-2*fun(x)+x);
end
主代码:
function[solutionSeqiteration]=iterationFixedPoint(orifun,akifun,x0,max,derta)
solutionSeq=[x0];
x=akifun(x0,orifun);
iteration=0;
whileabs(x-x0)>=derta
solutionSeq=[solutionSeq,x];
x0=x;
x=akifun(x0,orifun);
iteration=iteration+1;
ifiteration>max
disp('Maximumnumberofiterationsexceeded');
break
end
end
iteration=iteration-1;
end
运行:
>>[solutionSeqiteration]=iterationFixedPoint_7(@originalFunction,@aikentFunction,2,5,0.0001)
函数嵌入,M文件:
functiony=f(x,y)
y=y-(2*x)/y;
end
主代码:
function[x,y]=euler(fun,x0,xf,y0,h)
n=fix((xf-x0)/h);
y
(1)=y0;
x
(1)=x0;
x(n)=0;
y(n)=0;
fori=1:
(n)
x(i+1)=x0+i*h;
y(i+1)=y(i)+h*feval(fun,x(i),y(i));
end
>>[x,y]=euler('f',0,1,1,0.1);
t=[x',y']
t=
01.0000
0.10001.1000
0.20001.1918
0.30001.2774
0.40001.3582
0.50001.4351
0.60001.5090
0.70001.5803
0.80001.6498
0.90001.7178
1.00001.7848
图形对比
>>[x,y]=euler('f',0,1,1,0.1);
>>y1=(1+2.*x).^(1/2);
>>plot(x,y,'b',x,y1,'r');
>>legend('欧拉法','精确解')
s=0;
n=0;
whileabs(s-pi)>=1e-8
s=4*(-1)^n/(2*n+1)+s;
n=n+1;
end
formatlong
s
test=pi%测试用
函数M文件:
c
主代码:
functiony=calculus(n)
a=0;
b=1;
h=(b-a)/n;
y=0;
fori=a:
h:
b
y=y+h*(f(i)+f(i+h))/2;
end
end
x=1.2;
a=1:
5;
n=length(a);
fori=1:
n-1
u
(1)=a
(1);
u(i+1)=x*u(i)+a(i+1);
end
u(i+1)
x=input('输入x=');
t=1;
s=1;
n=1;
while(abs(t)>=10^(-8))
t=(t*(-1)*x^
(2))/(2*n*(2*n-1));
s=s+t;
n=n+1;
end
fprintf('cos(%10.9f)=%10.9f\n',x,s)
formatlong
test=cos(2.01)%测试用
编写函数M文件:
functiony=funeul(x,y)
y=y-(2*x)/y;
end
主代码,eulerpro.m
function[x,y]=eulerpro(fun,x0,xf,y0,h)
n=fix((xf-x0)/h);
y
(1)=y0;
x
(1)=x0;
x(n)=0;
y(n)=0;
fori=1:
(n)
x(i+1)=x0+i*h;
y1=y(i)+h*feval(fun,x(i),y(i));
y2=y(i)+h*feval(fun,x(i+1),y1);
y(i+1)=(y1+y2)/2;
end
结果
数值解
>>[x,y]=eulerpro('funeul',0,1,1,0.1);
>>f=[x',y']
f=
01.0000
0.10001.0959
0.20001.1841
0.30001.2662
0.40001.3434
0.50001.4164
0.60001.4860
0.70001.5525
0.80001.6165
0.90001.6782
1.00001.7379
画图
[x,y]=eulerpro('funeul',0,1,1,0.1);
>>y1=(1+2.*x).^(1/2);
>>plot(x,y,'b',x,y1,'r');
>>legend('改进欧拉法','精确解');
1、为被积函数创建文件f.m,其代码入如下:
functiony=f(x)
ifx==0
y=1;
else
y=sin(x)/x;
end
2、主代码如下:
a=input('输入积分下限a=');
b=input('输入积分上限b=');
esp=input('请输入误差限eps=');
h=b-a;
T1=h*(f(a)+f(b))/2;
I=1;
whileI
u=h/2;
H=0;
x=a+u;
whilex
H=H+f(x);
x=x+h;
end
T2=(T1+h*H)/2;
ifabs(T2-T1) I=T2+(T2-T1)/3; break end h=u; T1=T2; end fprintf('定积分的近似值I=%8,7f\n'); 在写字板把以下代码敲上,复制,贴上输入窗口,即可显示结果 T=[-21471013] n=length(T); TT=T'; fork=n-1: -1: 0 B(: n-k)=TT.^k; end B test=vander(T) close axis([0,1,0,1]) holdon x=0: 0.005: 1; y=x.*(1-x); plot(x,y,'r') x0=0: 0.05: 1; y0=x0.*(1-x0); n=length(x0); ybar=1-2*x0; fori=1: n forx1=0: 0.01: 1 y1=y0(i)+ybar(i)*(x1-x0(i)); plot(x1,y1,'k') end pause(0.1) end plot([0,1],[1/4,1/4],'k') xlabel('x轴') ylabel('y轴') title('水平切线的存在性演示') text(0.4,0.2,'y=x(1-x)') holdoff close clearall pi=3.1416; n=input('输入多边形的最大边数(n>2)n='); r=input('输入圆的半径r='); form=3: n s(m-2)=1/2*r^2*m*sin(2*pi/m); S(m-2)=r^2*m*tan(pi/m); end disp('正多边形边数内接多边形面积外接多边形面积') disp([(3: n)'s'S'])
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数学 软件 实验 答案