Matlab学习笔记(二)解方程

默认安装好了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函数

  1. 它其实就是sprintf与disp的结合
a=201;
c=211;
...
b='数值是%d %d\n';   //\n为换行符
fprintf(b,a,c,...);
  1. 与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

  1. 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不会到达这么高的精度

总结

回顾了一遍数据结构
大体上学了两种解方程的方法,以及如何精确方程解

  • 30
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pinkkk_Fish

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值