1.

fzero()

2. fsolve()+ inline()

3. solve()

4. 先求解析解,后用替代法求数值解。

A=[sinxcosy, e^siny], B=[siny,1+e^(x/y)]

C=sqrt(A*B')-1

C(x,y)=0为隐函数

解:fzero是求一元方程根的函数,后面的1是初值,你也可以尝试其他的初值。"@ (x) @ (y)

表达式"是构造了一个双重匿名函数,传入x后就相当于一个关于y的一元函数了。关于这方面的详细讨论本人今年5、6月份将要出版的书:《MATLAB高效编程技巧与应用-30个案例分析》里有涉及。

这本质上就是一个参数传递的问题,匿名函数可以方便的实现参数传递,再复杂的还可以通过嵌套函数实现。就拿你5楼举的例子来说,起码有两个方法可以很好的解决:一个就是还用我4楼给你说的方法,只不过是构造两个匿名函数:

代码:

A =

@(x,y) [sin(x)*cos(y), exp(sin(y))];B = @(x,y)

[sin(y),1+exp(x/y)];

C = @(x) @(y) sqrt(A(x,y)*B(x,y)')-1;

Y = @(x) fzero(C(x),1)

Y =

@(x)fzero(C(x),1)

>> Y(1)

ans =

-8.4211e-018

>> Y(2)

ans =

-6.4283e-016

>> Y(3)

ans =

-7.2065e-016

还有一种就是先用符号计算把C的符号表达式算出来,然后再生成匿名函数:

代码:

syms x y

A = [sin(x)*cos(y),

exp(sin(y))];B

= [sin(y),1+exp(x/y)];

C = sqrt(A*B')-1;

eval_r(['fun = @(x) @(y)' ,char(C)]);

Y = @(x) fzero(fun(x),1)

fun =

@(x)@(y)(exp(sin(y))*(exp(conj(x)/conj(y))+1)+sin(conj(y))*cos(y)*sin(x))^(1/2)-1

Y =

@(x)fzero(fun(x),1)

>> Y(1)

ans =

-8.4211e-018

>> Y(2)

ans =

-6.4283e-016

>> Y(3)

ans =

-7.2065e-016

关于用MATLAB求解隐函数的问题

用MATLAB求解一个隐函数,x为待求值,其余均为已知参数,函数为(a+b*cos(c)-d*cos(e))/cos(x)=(f+b*sin(c)-d*sin(e))/sin(x)

解:如果Matlab 装了Symbolic

Toolbox的话,Matlab可以直接求解析解,如下:

solve('(a+b*cos(c)-d*cos(e))/cos(x)=(f+b*sin(c)-d*sin(e))/sin(x)',

'x')

ans =

-(log((a*exp(c*i)*exp(e*i) + b*exp(2*c*i)*exp(e*i) -

d*exp(c*i)*exp(2*e*i) + f*exp(c*i)*exp(e*i)*i)/(b*exp(e*i) -

d*exp(c*i) + a*exp(c*i)*exp(e*i) -

f*exp(c*i)*exp(e*i)*i))*i)/2

用subs函数可以将solve接出来的解析解里面的变量用数字替换掉,然后得到数值解。

举个简单的例子,求a*x=b的解,先求解析解,然后用a=2,b=1代入求出数值解:

>> solution=solve('a*x=b', 'x')

solution =

b/a

>> num_solution = subs(solution,

'[a,b]', [2 1])

num_solution =

1/2

>> num_solution =

subs(num_solution)

num_solution =

0.5000

qi=solve('qi-bet*detm/(bet/(B*0.018526^0.2*qi^0.6/di^0.6)+0.7*10^(-3)*2*ft/(ft+fi)/203+r0+1/aj)=0','qi')

其中除了qi外,其他参数的值都在前边的程序中算出来了,不知道是哪里出错了,运行总是出现Error using

==> solve

'

qi-bet*detm/(bet/(B*0.018526^0.2*qi^0.6/di^0.6)+0.7*10^(-3)*2*ft/(ft+fi)/203+r0+1/aj)=0

' is not a valid expression or equation.

不知道是不是solve不能调用前面的值,如何解决??

问题补充:

参数是和我输入的变量值有关的,会变化的,或者有没有其他的办法来解这个方程。

解:

>> a=3;

>> solve('a*x-3=0','x')

得到的结果是

ans =

3/a

也就是说,solve里面将a当成符号,而没有把你a=3代入。

试着改成

>> subs(solve('a*x-3=0','x'))

就得到ans=1的结果了。

你的问题也可以这样弄。

solve再加一个subs()

另外你也可以自己将方程中的变量先将值代入,然后再解方程

比如:

clear

>> a=3;

>> equ=sprintf('a*x-3=0');

>> equ=subs(equ); %这一步就是将a=3代入

>> solve(equ,x)

注意:

function y=fcn(a,b) %u is a vector

S=solve('a+b/r-z=1','r+z=38','r','z');

y=[S.r;S.z];//Embedded matlab function中得到多个变量值的方法

隐式函数matlab,matlab隐函数求解的几种方法相关推荐

  1. matlab求解复杂隐函数,MATLAB复杂隐函数求解!求大神指导!

    问题描述: MATLAB复杂隐函数求解!求大神指导! syms D1 D2 G1 G2 al E1 E2 Km w6 G1=10^(-5);G2=10^(-5); E1=2*(10^11);E2=2* ...

  2. 万恶之源:C语言中的隐式函数声明

    1 什么是C语言的隐式函数声明 在C语言中,函数在调用前不一定非要声明.如果没有声明,那么编译器会自己主动依照一种隐式声明的规则,为调用函数的C代码产生汇编代码.以下是一个样例: int main(i ...

  3. VTK:vtk布尔运算隐式函数BooleanOperationImplicitFunctions用法实战

    VTK:vtk布尔运算隐式函数BooleanOperationImplicitFunctions用法实战 程序输出 程序完整源代码 程序输出 程序完整源代码 #include <vtkActor ...

  4. VTK:隐式函数之SampleFunction

    VTK:隐式函数之SampleFunction VTK:隐式函数之SampleFunction 代码 SampleFunction.cxx CMakeLists.txt VTK:隐式函数之Sample ...

  5. VTK:隐式函数之IsoContours

    VTK:隐式函数之IsoContours VTK:隐式函数之IsoContours 代码 IsoContours.cxx CMakeLists.txt VTK:隐式函数之IsoContours 代码 ...

  6. VTK:隐式函数之ImplicitSphere1

    VTK:隐式函数之ImplicitSphere1 VTK:隐式函数之ImplicitSphere1 描述 代码 ImplicitSphere1.cxx CMakeLists.txt VTK:隐式函数之 ...

  7. VTK:隐式函数之ImplicitSphere

    VTK:隐式函数之ImplicitSphere VTK:隐式函数之ImplicitSphere 描述 代码 ImplicitSphere.cxx CMakeLists.txt VTK:隐式函数之Imp ...

  8. VTK:隐式函数之ImplicitQuadric

    VTK:隐式函数之ImplicitQuadric VTK:隐式函数之ImplicitQuadric 描述 代码 ImplicitQuadric.cxx CMakeLists.txt VTK:隐式函数之 ...

  9. VTK:隐式函数之ImplicitDataSet

    VTK:隐式函数之ImplicitDataSet VTK:隐式函数之ImplicitDataSet 代码 ImplicitDataSet.cxx CMakeLists.txt VTK:隐式函数之Imp ...

最新文章

  1. Linux文本比较命令:diff
  2. Smart Crop,一种切除 PDF 扫描文档白边的新选择(工程篇)
  3. 全面解析RS232、RS485、RS422、RJ45接口的区别和各自的应用
  4. 利用素数表快速寻找 n 以内的所有素数
  5. 【Tika基础教程之一】Tika基础教程
  6. 【Elasticsearch】 Full text queries query_string 等 字符串查询
  7. fastscript增加三方控件
  8. php ddl,MySQL定义语言[DDL]
  9. python字符串_Python的字符串和编码
  10. Spring 3整合Quartz 2实现定时任务:动态添加任务
  11. RTP载荷H264视频流
  12. js中this的作用域
  13. 协议栈之packet_type
  14. Access control configuration prevents your request from being allo
  15. 利用Winhex,OllyDbg和W32Dasm破解USB监控器
  16. 拍卖系统业务演进过程(一)
  17. 计算机可以辅助英语写作吗,计算机辅助下的英语写作教学_问答库
  18. Python为文档批量注音(生僻字歌词为例)
  19. 百度Paddle免费课程——从零开始学视觉Transformer
  20. 由D触发器组成的4位移位寄存器

热门文章

  1. NAT模式、路由模式、桥接模式 区别对比
  2. python基础知识验证哥德巴赫猜想
  3. Linux初探之如何查看帮助文档自学命令
  4. 没有发生GC也进入了安全点?这段关于安全点的JVM源码有点意思!
  5. 地铁译:Spark for python developers ---Spark的数据戏法
  6. 解决CMD命令行窗口不显示颜色问题python
  7. 广东迅视问泸州第三代社保卡发行 现有二代社保卡仍可正常使用吗?
  8. 产品狗的Python之路(2):excel表格拆分桌面小程序
  9. 分布式系统的知识点-架构设计
  10. 英语中什么是开音节,什么是闭音节