【探究】MatLab对于方程的求解

问题提出(答案在最后以图片形式呈现)

对于任意的一元方程,如何求解,在日常生活中,通常使用计算器的solve键直接求解,但是实际情况是当你用拿在手上的计算器去计算如下的方程时:

1/x+1/(x+0.05)+1/(x+0.1)+1/(x+2)=1/(x+1)+1/(x+0.5)

是不是就会发现你的计算器根本不听你的话了?大多数都会算不出结果?那么这个时候谁能拯救你呢?matlab就是其中一个很好的的工具?

探索研究

让我们赶紧尝试吧。

【学习目标】根据代码输入与输出情况,基本猜想代码关键字的大概含义

首先看一组相对有意思的代码

syms x
[x,params,conds]=solv
e(sin(x)==1,'ReturnConditions',true)
-----------------------------------------------------------
Matlab给出的答案
x =
 
pi/2 + 2*pi*k
 
 
params =
 
k
 
 
conds =
 
in(k, 'integer')

不知道看完这个会不会有些云里雾里的,更加不会了,不过呢先克服奇奇怪怪的才更有成就感哦

我们会发现,这不就是初中方程sin(x)=1的所有解吗,

观察可以大概猜猜syms应该是定义一个参数,就类似于c语言中double x

params根据答案得出的k,大概猜想就是一个变量(这个变量应该是有类型的,conds限制了k为整型)

conds确定是什么类型,这里integer就是整型

说了这么多其实有用的就一句,就是说

syms是用来定义变量的

对比探索

下面哪一个代码有问题,不是一元线性方程的解?

syms x
x=solve([x^2+7x+10==0],[x])
syms x
x = solve([x^2 + 7*x + 10==0],[x])

 代码一出现问题,原因在于matlab中*不能省略,7*x不能写成7x

一元方程的一般格式就是

syms x
x = solve([方程],[x]),所以就有最开始提到的方程求解,

尝试一下你会输入了吗?

拓展 

多个参数的情况,注意这里【x,y】是二元方程

syms a b c y x
[x,y]=solve([a*x^2+b*y+c==0,a*x+2*y==4],[x,y]

有兴趣可以在matlab中输入以上代码,下期再见吧

发布了104 篇原创文章 · 获赞 165 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43914278/article/details/102644054
今日推荐