解方程

定义符号

syms x

等同于

sym('x')

解多元一次方程组


最后的A变量是一个struct,通过A.x查看x的值,X.y查看y的值

符号化

解方程

matlab自动认未知数,按26各英文字母排列,以距离x的远近定义,离x越近的,定为未知数。

例如解这个方程



可以用(注意在新版本matlab中,solve中的方程式不加引号)

syms x a b
solve(a*x^2-b)

结果(自动按照x为未知数)

ans =
 
  b^(1/2)/a^(1/2)
 -b^(1/2)/a^(1/2)

若要把b当作未知数,可以

syms x a b
solve(a*x^2-b,b)

求导

例如求

这个函数的导数

syms x
y = 4*x^5;
yprime=diff(y)

结果

yprime =
 
20*x^4

积分

例如求


syms x
y = x^2*exp(x);
z=int(y)

求解出

z =
 
exp(x)*(x^2 - 2*x + 2)

符号数值代入

我们如果希望把此处的x的值代入z中,可以用subs()函数

subs(z,x,0)

此处相当于求z(x=0)的值。
这样我们就能得到刚才积分的常数C了。
最终脚本

syms x
y = x^2*exp(x);
z=int(y);
z=z-subs(z,x,0)

注意,此处用int(y)求不定积分。如果要求定积分,可以用int(y,0,10)类似的语句定义上下限。

fsolve

Function Handle

matlab中,@表示Function Handle,即函数指针。
我们可以在函数调用的xy_plot(@sin,1:pi/10:pi),这里使用@相当于传入函数指针。

求解

例如求解


可以用fsolve(function_handle,init_guss_value)
求解脚本:

f2 = @(x) (1.2*x+0.3+x*sin(x));
fsolve(f2,0)

fzero

类似fsolve,都是求解为0时的解。但是fzero不能求解那些不穿过x轴,(即使和x轴相切)的方程。
例如

f =@(x) x.^2;
fzero(f,-0.1)
fsolve(f,0.1)

这里,fzero求不出解,而fsolve可以。

(单元非线性方程可用fzero,多元非线性方程可用fsolve)

optimset设置进阶选项

可以参考
optimset官方文档
optimset

例如关闭多余帮助显示

options=optimset('Display','None');
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目录 [TOC] 前言 sympy不仅在符号运算方面强大,在解方程方面也是很强大。本章节学习对应官网的:Solve...
    张一根阅读 7,384评论 0 3
  • 我们先从简单的来 例题1: 这是北师大版小学六年级上册课本95页的一道解方程练习题:   大家可以先口算一下,这道...
    天使猿ty阅读 1,915评论 0 1
  • 在大多数人的印象中,一谈到数学,脑海中蹦出来的词很能可能就是“无聊,枯燥,复杂”,在这种情况下,很多人对数...
    褚欢阅读 2,273评论 0 1
  • 程序的控制过程就是一个解方程的过程:用户输入有限的变量,程序根据变量求解出一些控制值,然后利用这些控制值完成指定的...
    ww4u阅读 351评论 0 0
  • 不知为什么,总有同学在解有关极坐标方程问题时,会把极坐标转化为直角坐标,用直角坐标的方法去解决问题。费时费力,得不...
    7300T阅读 3,820评论 0 3