默认安装好了matlab,我使用的版本是2023,版本不同,个别函数的使用会有出入,报错请自行解决。
强烈建议边看边打
前言
这节主要有:
- 数据类型
- sprintf与fprintf
- disp
- roots
- sym、syms、symfun以及symvar
- solve
- vpa
都是解方程必备的函数,很有实战意义
一、数据类型
1、int为整数型,用于定义整数类型的数据 。数的范围为-(231-1)到(231-1)
2、float为单精度浮点型,能准确到小数点后六位 。整数极限为3.4*10^38,负数亦然。
3、double为双精度浮点型,能准确到小数点都十二位 。
4、char为字符型,用于定义字符类型的数据。数的范围为-128- 127。
int:%d
string:%s
float、double:%f
二、sprintf与fprintf
sprintf与fprintf都是格式化命令
sprintf函数,它是格式化字符串的函数,emm你也可以理解成一个把萝卜填进对应坑的函数(但是只是填坑,想要显示出来需要用下面介绍的disp)
代码如下:
int a=16;
b=a^2+a-a^3;
str_1=sprintf('16^2+16-16^3等于%d', b);
disp(str_1) %将str_1打印在屏幕%
fprintf函数
- 它其实就是sprintf与disp的结合
a=201;
c=211;
...
b='数值是%d %d\n'; //\n为换行符
fprintf(b,a,c,...);
- 与fopen的联用现在不适合讲
*通常与fopen函数一起使用,其用法是首先使用fopen函数按照指定方法打开一个文件,并且获取这个文件的句柄,将数据按照指定格式写到这个文件中。
补充一下格式化之后的内容,要找一个变量存储下来
三、disp
disp函数会直接将内容输出在Matlab命令窗口中:可以输出字符串也可以输出数字等等。
disp(‘my test’);
Matlab命令窗口输出如下
my test
四、roots
这是求解方程根的重要函数,求解的是多项式方程!!!
而且roots函数只能求解代数方程的根,无法求解超越方程的根。
在使用roots函数时,输入的多项式系数应该是按照降序排列的,即最高次项的系数在最前面。如果输入的多项式系数不满足要求,可能会得到不正确的结果。
代码如下:
p = [1 , 2 , 1];
i = roots(p);
j = sprintf('%f %f\n',i);
disp(j );
示例中的p是用于存储各项的系数,从高到低(常数项),用数组存储。
结果通过disp展示。
注意 i 有几个解(相不相同无所谓)你的 j 里要有几个相对应。
五、sym、syms、symfun以及symvar
- sym函数的作用是创建符号标量和函数,以及矩阵变量和函数
a=sym('a')
这样变量a表示的就是字符a。
这样可能看不出来用处
x=sym('x');
y=sin(x)
z=tan(x)
w=3*x^2+4^x+2
输出结果就是
y =
sin(x)
z =
tan(x)
w =
3*x^2 + 4^x + 2
p =
log(x)
q =
exp(x)
当然sym也可以赋数字上去
y=sym('3');
w=2*y^3+4*y+3
结果为:
w =
69
起到了简化运算作用
再拓展!!!
可以定义变量的所属集合
a=sym('a',real)
b=sym('b',position)
c=sym('c',integer)
d=sym('d',rational)
real、integer、position和rational。分别表示建立实数、整数、正数和有理数的符号变量。
怎么赋值给矩阵??
x=sym('a',[3,4]);
x;
通过who可以看到具体的矩阵
2. syms函数可以一次性定义多个符号常量
syms var1,var2,var3,...varn
其中上面的var1、var2、var3、…varn所表示的是变量名字,通过syms函数可以轻松定义多个符号变量,而使用sym函数的话,就需要定义多次。
推荐使用syms,即使你只想定义一个常量
3. symfun
syms x y
f=symfun(3*x^2+4*y^2+1,[x,y])
这样定义后的结果就是多元方程为f(x,y)=3x2+4y2+1
4. symvar
在MATLAB中symvar函数返回的是表达式中所有符号变量。其中是返回的结果是按照字母表排序,大写字母在小写字母前面。
syms a b c d
x=a+b*c-d;
symvar(x)
结果为
ans =
[a, b, c, d]
还有一个symvar(x,n)
的用法
返回的是离x变量最近的n个符号变量
六、solve
直接上代码了,也是一个解方程的方法。
r2 = solve('r^2 - r - 1 = 0');
print_str = sprintf('r*r - r - 1 = 0的结果是:%f和%f\n', r2);
disp(print_str);
七 、vpa
对方程的解精度有要求,可以通过vpa确定其小数点后几位。
示例:
r2 = solve('r^2 - r - 1 = 0');
print_str = sprintf('r*r - r - 1 = 0的结果是:%f和%f\n', r2);
vpa(print_str,20);
disp(print_str);
上述的意思就是讲printf_str变量精确到小数点后20位。
如果不加这一句,matlab不会到达这么高的精度
总结
回顾了一遍数据结构
大体上学了两种解方程的方法,以及如何精确方程解