作业帮 > 综合 > 作业

matlab 求解一个含参数方程代码

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/09/20 17:36:06
matlab 求解一个含参数方程代码
我在用Matlab的时候遇上这么一个问题.现在简化一下,问题大概是这样的:
有一个一个函数f(x;a) = x + a,这里,x是自变量,a是一个参数,现在给定一个参数a,要求f(x;a) = 0的值.
我应该怎么编程实现啊?我不需要解析解,要数值解就行了.
我看fsolve的说明里边,没有传参数的说明啊.
比如说,有这么一段代码:
a = 1;
x0 = 1;
x = fsolve(@f,x0); %现在这样子写不对啊,因为我要传参数a进去,现在没有传进去
%在另一个文件里边:
function F = f(x,a)
F = x + a;
我还有些问题:
1那种形式不满足我的要求,因为我的那个待求解方程里边还有求和号什么的,一行写不了.
我今天查帮助查到了你说的第4种格式,但是没有太看明白.
x = fsolve(@f,x0,[],a);
第三个参数[]是代表F = f(x,a)里边的第一个参数是自变量吗?比如,我的真正待求解的函数是这样子的:
function F = subf(lambda,u,D,beta) %lambda是自变量,其余是参数
所以,我是应该写成下边这个样子吗?
EValues = fsolve(@subf,lambda0,[],u,D,bm);
顺便问一下,这个函数有多个根,Matlab支持多个根同时求解吗?或者是我能一次性多给它几个初始试探点x0吗?
matlab 求解一个含参数方程代码
你的问题属于目标函数存在附加参数情况下怎样传递附加参数的问题,一般有以下几种方法:
1、使用匿名函数,这是最简单的做法:
>> a = 1;x0 = 1;
>> x = fsolve(@(x)x+a, x0)
Optimization terminated: first-order optimality is less than options.TolFun.
x =
    -1
2、使用嵌套函数(Nested Functions).
3、使用全局变量(不推荐).
4、如果优化函数支持附加参数的传递,直接传递,例如,对于你现在的函数,可以直接写成
x = fsolve(@f, x0,[],a);
对应的匿名函数形式为
x = fsolve(@(x,a)x+a, x0,[],a)
 
具体可搜索帮助关于“Passing Extra Parameters”的主题.
再问: ׷�ʳ������������ˣ�׷�����ݷ������ⲹ�����ˣ��鷳���ٿ�һ�£���ָ�л��
再问: ׷�ʳ������������ˣ�׷�����ݷ������ⲹ�����ˣ��鷳���ٿ�һ�£���ָ�л��
再答: 1�����������ʽ���ڵ����ʽ�����һ�㶼�����õģ�����ͷ��Ҳû��ϵ����Ȼ���������ʽ̫���ӣ�����д��M�ļ����ȡ�������������Ҳ���㡣 2�����ʽ��x = fsolve(@f, x0,[],a);���������[]������?F = f(x,a)��ߵĵ�һ���������Ա�������������Ϊռλ����fsolve����ĵ��������optionsΪĬ��ֵ�� 3�������������ĺ����ǣ�function F = subf(lambda, u, D, beta) %lambda���Ա����������Dz����������д������EValues = fsolve(@subf, lambda0, [], u, D, bm);
4��������ж����fsolve������֧�ֶ����ͬʱ��⡣�����һ���Զ�������ʼ��̽��x0��������arrayfun������������磺x = arrayfun(@(x0)fsolve(@(x,a)x^2+3*x+a, x0,[],2),[0 -5])������˵�ĺ�����¿���д�ɣ�δ���ԣ�ƾ�о�д�ģ�����֤��ȷ����EValues = arrayfun(@(L0)fsolve(@subf, L0, [], u, D, bm),lambda0);