MATLAB教程_11方程式求根_台大郭彦甫课程笔记
解一个函数的方法:
1. 解析解
2. 图解
3. 数值解
一、符号寻根法(解析法)
对符号而不是数字进行数学运算
使用“符号变量”执行符号数学
1、使用sym()或syms()创建符号变量
syms()
>> syms x %简单,建议使用
>> x + x + x
ans =
3*x
>> (x + x + x)/4
ans =
(3*x)/4
>> y = x^2-2*x-8
y =
x^2 - 2*x - 8
sym()
>> x=sym('x');
>> x + x + x
ans =
3*x
>> (x + x + x)/4
ans =
(3*x)/4
2、符号根查找:solve()
函数“solve”找到方程的根
1)基本解法
>> syms x
>> y = x*sin(x)-x
y =
x*sin(x) - x
>> solve(y,x) %解的是令y=0时函数的根
ans =
0
pi/2
2)简化解法
>> syms x
solve(x*sin(x)-x, x)
ans =
0
pi/2
- 练习1: c o s ( x ) 2 − s i n ( x ) 2 = 0 cos(x)^2-sin(x)^2=0 cos(x)2−sin(x)2=0和 c o s ( x ) 2 + s i n ( x ) 2 = 0 cos(x)^2+sin(x)^2=0 cos(x)2+sin(x)2=0【解得的答案不完整】
>> syms x
>> y = cos(x)^2-sin(x)^2;
>> solve(y,x)
ans =
pi/4
%在[0,2π]应该有两个解
>> clear;
f=@(x) cos(x)^2-sin(x)^2
fzero(f,0)
f =
包含以下值的 function_handle:
@(x)cos(x)^2-sin(x)^2
ans =
-0.7854
%用数值方法求解也只有一种解
>> syms x
y = cos(x)^2+sin(x)^2;
solve(y,x)
ans =
Empty sym: 0-by-1
%应该有虚数解
3、解多重方程
举例——二元一次方程式 { x − 2 y = 5 x + y = 6 \begin{cases} x-2y=5 \\ x+y=6 \end{cases} { x−2y=5x+y=6
>> syms x y
eq1 = x - 2*y - 5;
eq2 = x + y - 6;
A = solve(eq1,eq2,x,y)
A =
包含以下字段的 struct:
x: [1×1 sym]
y: [1×1 sym]
>> A.x %查看x,y的值时,用的是“ . ”
ans =
17/3
>> A.y
ans =
1/3
4、求解用符号表示的方程
如果给我们一个用符号表示的函数怎么办?
a x 2 − b = 0 ax^2-b=0 ax2−b=0
>> syms x a b
solve('a*x^2-b')
检查对函数 'solve' 的调用中是否缺失参数或参数数据类型不正确。
>> solve(a*x^2-b)
ans =
b^(1/2)/a^(1/2)
-b^(1/2)/a^(1/2)
求 b b b的解怎么办?
改变solve括号中的 x x x为 b b b
>> syms x a b
solve