实验报告—代数方程与微分方程求解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实 验 报 告 四
代数方程求解
1、【示例】以下命令可求出方程 (x +1)e –x +e x sin x =0在0附近的一个根:
>>y=sym('(x+1)*exp(-x)+exp(x)*sin(x)'); % 用sym 命令定义符号表达式
>>x=solve(y,'x') % 用准解析方法求出方程最接近0的一个根
x =-0.86508244315736795185621568221837
或可用以下命令求解该方程以指定点为初始搜索点的数值解:
>> y=inline('(x+1)*exp(-x)+exp(x)*sin(x) ', 'x'); % 用数值方法求解时,方程要用inline 命令定义 >> x=fsolve(y,0) % 用数值方法从初始点1开始搜索方程的近似解 x = -0.8651
注:准解析命令solve 只能求出方程最接近0的一个实数根,而数值解法fsolve 可以通过初始搜索点的变化,得到不同的解(如果方程有多个实数解)。
【要求】仿照示例,用准解析方法求出30.5sin(42)4cos(2)0.5t t e t e t --++=的一个根;再用数值方法分别求该方程在-0.6和3附近的两个根。
y=sym('exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5');
t=solve(y,'t')
t =0.67374570500134756702960220427474
y=inline('exp(-3*t).*sin(4*t+2)+4*exp(-0.5*t).*cos(2*t)-0.5','t');
t=fsolve(y,0.6)
t =
0.6737
y=inline('exp(-3*t).*sin(4*t+2)+4*exp(-0.5*t).*cos(2*t)-0.5','t');
t=fsolve(y,3)
t =
2.5937
2、【示例】以下命令可求解非线性方程组339820
x y x x y ⎧+-=⎨+-=⎩
>> eq1=sym('x^3+y^3-x-98'); % 定义第一个方程表达式
>> eq2=sym('x+y-2'); % 定义第二个方程表达式
>> [x,y]=solve(eq1,eq2) % 解方程组(用准解析方法)
x =
13/12+1/12*2329^(1/2)
13/12-1/12*2329^(1/2)
y =
11/12-1/12*2329^(1/2)
11/12+1/12*2329^(1/2)
或可用以下命令求解上述方程组以指定点为初始搜索点的数值解:
>> f=inline('[x(1) ^3+x(2) ^3-x(1)-98; x(1)+x(2)-2]', 'x'); % 用inline 命令定义方程组
>> x=fsolve(f,[1;1]) % 用数值方法从初始点(1,1)开始搜索方程组的一个近似解 x =
-2.9383
4.9383
【要求】仿照示例,求解
(1)方程35323=+-x x x 和方程组⎪⎩
⎪⎨⎧-==+=++14
30122yz z x x x 35323=+-x x x
(1)y=sym('x^3-3.*x^2+5*x');
x=solve(y,'x')
x =
1.
1.+1.4142135623730950488016887242097*i
1.-1.4142135623730950488016887242097*i
(2)y=inline('x^3-3.*x^2+5*x-3 ', 'x');
x=fsolve(y,0)
x =
1.0000
⎪⎩⎪⎨⎧-==+=++14
30122yz z x x x
(1)eq1=sym('x^2+2*x+1');
eq2=sym('x+3*z-4');
eq3=sym('y*z+1');
[x,y,z]=solve(eq1,eq2,eq3)
x =-1
y =-3/5
z =5/3
(2)f=inline('[x(1)^2+2*x(1)+1; x(1)+3*x(3)-4;x(2)*x(3)+1]', 'x');
x=fsolve(f,[1;1;1])
x = -0.9979
-0.6003
1.6660
(2)方程组x 2+y =0, e x +sin y =0在[-5,5]内的所有根。
>> ezplot('-x^2',[-5,5])
>> hold on
>> ezplot('asin(-exp(x))',[-5,5])
-5-4-3-2-10
12345-1
-0.8
-0.6
-0.4
-0.2
x
asin(-exp(x))
f=inline('[x(1)^2+x(2); exp(x(1))+sin(x(2))]', 'x');
x=fsolve(f,[-0.7,-0.5])
x =
-0.7150 -0.5112
3、【示例】以下命令可求解线性方程组
124
1234
1234
1234
2328
522
37
42212
x x x
x x x x
x x x x
x x x x
-+=
⎧
⎪+++=
⎪
⎨
-+-=
⎪
⎪+++=
⎩
。计算A*x,即可验证求解结果。
>> A=[2 -3 0 2;1 5 2 1;3 -1 1 -1;4 1 2 2]; % 定义方程组的系数矩阵>> B=[8 2 7 12] ' ; % 定义方程组的常数项向量>> x=A\B % A\B为A左除B,即A-1B x =
3.0000
0.0000
-1.0000
1.0000
【要求】执行以上命令,并仿照示例,解线性方程组
123
23
123 241658 32710 117331 x x x
x x
x x x
++=⎧
⎪
-=
⎨
⎪+-=
⎩
A=[24 16 5;0 3 -27;11 7 -3]; B=[8 10 31]';
x=A\B
x = 19.4087
-27.5410
-3.4305