实验3_数值计算与符号运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三数值计算与符号运算
一、实验的教学目标
通过本次实验,要求学生熟练掌握数值计算, 以及符号对象的创建,符号表达式的化简,符号表达式的微分、积分和极限,常微分方程的求解。
二、实验环境
计算机、MATLAB7.0集成环境
三、实验内容
e在x∈{0,0.1,0.2,…,5}上的取值,采用多项式进行拟合;1.针对函数f(x)= x
并对x∈{0.15,0.45,0.75}分别采用最邻近、双线性和三次样条插值方法进行插值。
要求:在matlab中用函数polyfit()采用最小二乘法对给定的数据进行多项式拟合,一维插值通过interp1()来实现的。同时要用三种不同的方法支数据进行一维插
值,即要对要同时显示三幅图片,要用到subplot( )函数。
x=0:0.1:5;
y=exp(x);
p1=polyfit(x,y,5);
y1=polyval(p1,x);
hold on;
plot(x,y,'ro');
plot(x,y1,'b--');
xlabel('x');
ylabel('y');
legend('原始数据','5阶多项式拟合');
xi=0.15:0.3:0.75;
yi_nearest=interp1(x,y,xi,'nearest');
yi_linear=interp1(x,y,xi,'linear');
yi_spline=interp1(x,y,xi,'spline');
figure;
hold on;
subplot(1,3,1);
plot(x,y,'ro',xi,yi_nearest,'b--');
title('最邻近插值');
subplot(1,3,2);
plot(x,y ,'ro',xi,yi_linear,'b--'); title('线性插值'); subplot(1,3,3);
plot(x,y ,'ro',xi,yi_spline,'b--'); title('三次样条插值');
x
y
最邻近插值
线性插值
三次样条插值
2、分别用符号法和数值法求解f(x)= x
e 在[1,3]的积分,并说明区别。
>> syms x;
>> int(exp(x),x,1,3) ans =
exp(3)-exp(1)
>> f=@(x)exp(x); >> quad(f,1,3) ans =
17.3673
符号积分精确度高但速度慢,有时候有些函数没有解析解,就得用数值积分,并且数值积分速度快,但精确度不高.
3、要求用两种方法创建符号表达式:)4sin()2(3y b t x a f +-=。
>> syms a b x y t
>> f=a*(2*x-t)^3+b*sin(4*y) f =
a*(2*x-t)^3+b*sin(4*y)
>> f2=sym('a*(2*x-t)^3+b*sin(4*y)') f2 =
a*(2*x-t)^3+b*sin(4*y)
4、创建符号表达式 :3752
3
+++=x x
x f ,将符号表达式化简成合并同类项、因
式分解形式。
>> f=sym('x^3+5*x^2+7*x+3') f =
x^3+5*x^2+7*x+3 >> g1=collect(f) g1 =
x^3+5*x^2+7*x+3 >> g12=factor(f) g12 = (x+3)*(x+1)^2 >> g2=horner(f) g2 =
3+(7+(5+x)*x)*x
5、创建两个符号表达式 : xy
y
x
f )
(2
2
+=,
)
cos(1)si n(1x x g ++=
(1)计算符号表达式f 当x->1、 y->1的极限; >> syms x y
>> f=(x^2+y^2)^(x*y) f =
(x^2+y^2)^(x*y)
>> fxy=limit(limit(f,'y',1),'x',1) fxy = 2
(2)计算符号表达式g 的一阶微分和一重不定积分。
>> g=(1+sin(x))/1+cos(x) g =
1+sin(x)+cos(x)
>> gdf1=diff(g) gdf1 = cos(x)-sin(x) >> gint=int(g) gint =
x-cos(x)+sin(x)
6、分别求符号方程的解:
(1) >> syms x
>> eqn='33.6*x^4-22.12*x+101.3=0' eqn =
4
(1)33.622.12101.30;(2)x y p
x
x xy q
+=⎧-+=⎨
=⎩
33.6*x^4-22.12*x+101.3=0 >> x=solve(eqn) x =
[ -.93414589926892917083301037789686-1.024116428084578548455070002017
3*i]
[ -.93414589926892917083301037789686+1.0241164280845785484550700020173
*i]
[ .93414589926892917083301037789686-.8345314038244438554817513629171
4*i]
[ .93414589926892917083301037789686+.83453140382444385548175136291714*i]
(2)>> syms x y
>> eqn1='x+y=p'; >> eqn2='x*y=q';
>> [x,y]=solve(eqn1,eqn2) x =
[ 1/2*p-1/2*(p^2-4*q)^(1/2)] [ 1/2*p+1/2*(p^2-4*q)^(1/2)] y =
[ 1/2*p+1/2*(p^2-4*q)^(1/2)] [ 1/2*p-1/2*(p^2-4*q)^(1/2)]
7.分别用符号法与数值法求解如下常微分
>>
[x,y]=dsolve('2*Dx-4*x+Dy-y=exp(t),Dx+3*x+y=0','x(0)=3/2','y(0)=0')
x =
0)0(,03,2
3)0(,42 ⎪⎪⎩⎪
⎪⎨
⎧==++==-+-y y x dt
dx x e y dt dy x dt dx t