计算机Word文档下载推荐.docx
- 文档编号:15152780
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:15
- 大小:162.40KB
计算机Word文档下载推荐.docx
《计算机Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《计算机Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
functionf=Chebyshev(y,k,x0)
%用切比雪夫多项式逼近已知函数
%已知函数:
y
%逼近已知函数所需项数:
k
%逼近点的x坐标:
x0
%求得的切比雪夫逼近多项式或在x0处的逼近值:
f
symst;
T(1:
k+1)=t;
T
(1)=sym('
1'
);
T
(2)=t;
c(1:
k+1)=sym('
0'
c
(1)=int(subs(y,findsym(sym(y)),sym('
t'
))*T
(1)/sqrt(1-t^2),t,-1,1)/pi;
c
(2)=2*int(subs(y,findsym(sym(y)),sym('
))*T
(2)/sqrt(1-t^2),t,-1,1)/pi;
f=c
(1)+c
(2)*t;
fori=3:
k+1
T(i)=2*t*T(i-1)-T(i-2);
c(i)=2*int(subs(y,findsym(sym(y)),sym('
))*T(i)/sqrt(1-t^2),t,-1,1)/2;
f=f+c(i)*T(i);
f=vpa(f,6);
if(i==k+1)
if(nargin==3)
f=subs(f,'
x0);
else
end
end
应用实例:
切比雪夫应用实例。
用切比雪夫公式(取6项)逼近函数,并求当x=0.5时的函数值。
解:
利用程序求解方程,在MATLAB命令窗口中输入:
>
Chebyshev('
1/(2-x)'
6)%调用创建的函数euler,输出切比雪夫多项式的6个项
再在MATLAB命令窗口中输入:
6,0.5)%调用创建的函数euler,输出当x=0.5时的函数值
输出结果:
流程图:
2、编程解决以下科学计算问题。
实验2:
用二分法(程序3.1)和Newton迭代法(程序3.2)求下列方程的正根:
(1)二分法:
erfen.m:
functiony=erfen(fun,a,b,esp)
ifnargin<
4esp=1e-4;
iffeval(fun,a)*feval(fun,b)<
n=1;
c=(a+b)/2;
whilec>
esp
iffeval(fun,a)*feval(fun,c)<
b=c;
c=(a+b)/2;
elseiffeval(fun,c)*feval(fun,b)<
a=c;
elsey=c;
esp=10000;
n=n+1;
y=c;
elseiffeval(fun,a)==0
y=a
elseiffeval(fun,b)==0
y=b;
elsedisp('
these,maynotbearootintheintercal'
n
函数文件:
fc.m
functiony=fc(x)
y=x*log(sqrt(x.^2-1)+x)-sqrt(x.^2-1)-0.5*x;
在MATLAB命令框中输入:
clear
erfen('
fc'
1,10,0.05)
(2)牛顿迭代法:
newton.m
functiony=newton(x0)
x1=x0-fc(x0)/df(x0);
n=1;
while(abs(x1-x0)>
=1.0e-6)&
(n<
=100000000)
x0=x1;
x1=x0-fc(x0)/df(x0);
n=n+1;
x1
导数函数文件:
df.m
functiony=df(x)
y=log(x+(x^2-1)^(1/2))-x/(x^2-1)^(1/2)+(x*(x/(x^2-1)^(1/2)+1))/(x+(x^2-1)^(1/2))-1/2;
clc
newton(3)
对比二分法和牛顿法可知:
newton法n值较小,收敛得要快一些。
实验3:
已知函数f(x)=x4-2x在(-2,2)内有两个根,作图求取初值。
用MATAB命令求这两个根。
源代码:
erfen2.m:
functiony=erfen2(fun,a,b,n)
formatlong
4
n=10000;
if(b<
a)
disp('
初始值错误!
'
)
y=NaN;
return;
end;
if(feval(fun,a)*feval(fun,b)<
0)
c=a/2+b/2;
while(n>
iffeval(fun,a)*feval(fun,c)<
c=a/2+b/2;
elseiffeval(fun,b)*feval(fun,c)<
n=0;
n=n-1;
elseiffeval(fun,a)==0
y=a;
elseiffeval(fun,b)==0;
else
取值范围内可能不存在解!
f2.m
functiony=f2(x)
y=x^4-2^x;
fplot('
f2'
[-2,2])
得到函数图形:
从图形上可以看出f(-2),f
(2)的值均大于0,而f(0)的值为小于。
下面对其进行验证:
在命令框中分别输入:
y=f2
(2)
y=f2(-2)
y=f2(0)
得出的结果为:
该结果验证了上述猜想:
故易知函数的两个解分别位于区间[-2,0],[0,2]中。
下面为具体的求解过程并分析误差大小:
x=erfen2('
-2,0)
x=
-0.861345332309651
tol=f2(x)
tol=
2.220446049250313e-016
0,2)
1.239627729522762
8.881784197001252e-016
在MATLAB中实现切比雪夫逼近的代码如下:
M文件:
程序:
r=Secant('
log(x)+sqrt(x)-2'
1,4)
运行结果:
r=
1.8773
1、编程解决以下科学计算问题
计算积分
1
symsx
int(exp(-x.^2)./(1+x.^2),-inf,+inf)
ans=
pi*erfc
(1)*exp
(1)
②
M文件:
functiony=fun(x)
y=tan(x)./x.^(0.7);
quad('
fun'
0,1)
结果:
0.9063
③
functiony=fun1(x)
y=exp(x)./(1+x.^2).^0.5;
fun1'
1.4690
④
程序及结果:
symsxy
int(1+x+y.^2,y,-sqrt(1-(x-1).^2),sqrt(1-(x-1).^2))
(2*(1-(x-1)^2)^(1/2)*(3*x-(x-1)^2+4))/3
int((2*(1-(x-1)^2)^(1/2)*(3*x-(x-1)^2+4))/3,x,-1,1)
pi/2+(5*asin
(2))/4+(3*3^(1/2)*i)/2-2/3+log(2-3^(1/2))*i
编制一个变步长梯行程序,解例题5.14比较与Romberg积分法的计算量
例5.14用Romberg积分公式计算积分I=时,要求结果误差为0.5×
10。
变步长梯行法:
function[I,step]=BBC(f,a,b,eps)
if(nargin==3)
eps=0.5e-5;
h=(b-a);
I2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))*h/2;
Tol=1;
whileTol>
eps
h=h./2;
I1=I2;
I2=0;
fori=0:
(2^n-1)
x=a+h.*i;
x1=x+h;
I2=I2+(h./2).*(subs(sym(f),findsym(sym(f)),x)+subs(sym(f),findsym(sym(f)),x1));
Tol=abs(I2-I1);
I=I2;
step=n;
Romberg积分法:
function[I,step]=Roberg(f,a,b,eps)
eps=0.5e-5
symsf
M=1;
tol=10;
k=0;
T=zeros(1,1);
h=b-a;
T(1,1)=(h/2).*(subs(f,findsym(f),a)+subs(f,findsym(f),b));
whiletol>
k=k+1;
h=h/2;
Q=0;
fori=1:
M
x=a+h*(2*i-1);
Q=Q+subs(f,findsym(f),x);
T(k+1,1)=T(k,1)/2+h*Q;
M=M*2;
forj=1:
T(k+1,j+1)=T(k+1,j)+(T(k+1,j)-T(k,j))/(4^j-1);
tol=abs(T(k+1,j+1)-T(k,j));
I=T(k+1,k+1);
step=k;
[q,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机
![提示](https://static.bdocx.com/images/bang_tan.gif)