实验3_数值计算与符号运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档