隐式函数matlab,matlab隐函数求解的几种方法
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隐函数求解的几种方法相关推荐
- 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* ...
- 万恶之源:C语言中的隐式函数声明
1 什么是C语言的隐式函数声明 在C语言中,函数在调用前不一定非要声明.如果没有声明,那么编译器会自己主动依照一种隐式声明的规则,为调用函数的C代码产生汇编代码.以下是一个样例: int main(i ...
- VTK:vtk布尔运算隐式函数BooleanOperationImplicitFunctions用法实战
VTK:vtk布尔运算隐式函数BooleanOperationImplicitFunctions用法实战 程序输出 程序完整源代码 程序输出 程序完整源代码 #include <vtkActor ...
- VTK:隐式函数之SampleFunction
VTK:隐式函数之SampleFunction VTK:隐式函数之SampleFunction 代码 SampleFunction.cxx CMakeLists.txt VTK:隐式函数之Sample ...
- VTK:隐式函数之IsoContours
VTK:隐式函数之IsoContours VTK:隐式函数之IsoContours 代码 IsoContours.cxx CMakeLists.txt VTK:隐式函数之IsoContours 代码 ...
- VTK:隐式函数之ImplicitSphere1
VTK:隐式函数之ImplicitSphere1 VTK:隐式函数之ImplicitSphere1 描述 代码 ImplicitSphere1.cxx CMakeLists.txt VTK:隐式函数之 ...
- VTK:隐式函数之ImplicitSphere
VTK:隐式函数之ImplicitSphere VTK:隐式函数之ImplicitSphere 描述 代码 ImplicitSphere.cxx CMakeLists.txt VTK:隐式函数之Imp ...
- VTK:隐式函数之ImplicitQuadric
VTK:隐式函数之ImplicitQuadric VTK:隐式函数之ImplicitQuadric 描述 代码 ImplicitQuadric.cxx CMakeLists.txt VTK:隐式函数之 ...
- VTK:隐式函数之ImplicitDataSet
VTK:隐式函数之ImplicitDataSet VTK:隐式函数之ImplicitDataSet 代码 ImplicitDataSet.cxx CMakeLists.txt VTK:隐式函数之Imp ...
最新文章
- Linux文本比较命令:diff
- Smart Crop,一种切除 PDF 扫描文档白边的新选择(工程篇)
- 全面解析RS232、RS485、RS422、RJ45接口的区别和各自的应用
- 利用素数表快速寻找 n 以内的所有素数
- 【Tika基础教程之一】Tika基础教程
- 【Elasticsearch】 Full text queries query_string 等 字符串查询
- fastscript增加三方控件
- php ddl,MySQL定义语言[DDL]
- python字符串_Python的字符串和编码
- Spring 3整合Quartz 2实现定时任务:动态添加任务
- RTP载荷H264视频流
- js中this的作用域
- 协议栈之packet_type
- Access control configuration prevents your request from being allo
- 利用Winhex,OllyDbg和W32Dasm破解USB监控器
- 拍卖系统业务演进过程(一)
- 计算机可以辅助英语写作吗,计算机辅助下的英语写作教学_问答库
- Python为文档批量注音(生僻字歌词为例)
- 百度Paddle免费课程——从零开始学视觉Transformer
- 由D触发器组成的4位移位寄存器