matlab中fsolve算例问题

刚接触优化算法,遇到方程求解函数的一个简单例子,不知道为什么会报错:求下面两个方程所表示的系统的零点:
2x1-x2-exp(-x1)=0;-x1+2x2-exp(-x2)=0
程序如下:
function F=myfun(x)
syms x;
F=[2*x(1)-x(2)-exp(-x(1));-x(1)+2*x(2)-exp(-x(2))];
x0=[-5;-5];%起始点
options=optimset('Display','iter');%设置结果显示形式
[x,fval]=fsolve(@myfun,x0,options)
报错结果:

??? Index exceeds matrix dimensions.

Error in ==> egfsolve at 3
F=[2*x(1)-x(2)-exp(-x(1));-x(1)+2*x(2)-exp(-x(2))];
恳请诸位高手能够点拨下,谢谢了!
把那一句去掉,显示如下:
Input argument "x" is undefined.

Error in ==> egfsolve at 2
F=[2*x(1)-x(2)-exp(-x(1));-x(1)+2*x(2)-exp(-x(2))];
该怎么改呢?

第1个回答  2010-06-05
syms x;----本句多余。该指令限制x是一个符号变量,无需赋值即可参与符号运算。但你做的任务中x是一个二维数组。

请问matlab中fsolve函数怎么使用?
x=fsolve(fun,x0)求解fun(x)=0的解,x0是初值,fun是函数,x就是解 \\r\\n因为fsolve使用迭代法求解方程的,所以总要有个迭代的初值吧,这个初值就是你给的x0。 \\r\\n比如解方程组 \\r\\nx(1).^2+x(2).^2=1 \\r\\nx(1)=2*x(2) \\r\\n可以写成 \\r\\nf=@(x)([x(1).^2+x(2...

matlab,小白想用fsolve解非线性函数总是报错,网上找了好多
具体求解步骤如下:首先,定义符号变量。对于这个问题,我们需要定义x1,x2,x3,x4,x5,x6,x7为符号变量。然后,定义非线性函数F1到F7,这里以给出的表达式为例:F1 = (0.0401\/(0.333*x3^(0.6667)))^(1\/(-0.6667)-x2);F2 = x2^(0.333)*x3^(0.6667)-x1;F3 = x1-x3-x6-x4...

matlab关于fsolve解方程组的问题?
matlab关于fsolve解方程组的问题?题主编写的代码基本正确,但执行下列命令时,出现错误“Objective function is returning undefined values at initial point. FSOLVE cannot continue.”。分析方程组的第一个方程,由于当x、y、z的初值为0,则 ln(0)是不存在的,所以使用fsolve求解方程组就停止执行并...

用matlab的fsolve解二元方程,但是总是出错,谁能帮我看看哪里出错了吗...
例如,对于你现在的两个问题,应该用x(1)表示x,x(2)表示y:>> f=@(x)[x(1)*2+3*x(2)+1;x(2)*2+4*x(1)+1];>> fsolve(f,[1 1])ans = -0.1250 -0.2500>> fun=@(x)([x(1).^2+x(2).^2-1,x(1)-2*x(2)]);>> fsolve(fun,[1 1])ans = 0....

matlab中fsolve算例问题
syms x;---本句多余。该指令限制x是一个符号变量,无需赋值即可参与符号运算。但你做的任务中x是一个二维数组。

matlab 用fsolve解方程组的问题
fsolve函数是用于求解非线性方程的,但是在你的程序里没看到非线性方程 在你所给的求根初值[1,1,1,1,1]下,你所定义的变量 fff 的值为124,而函数diff(X,n)表示求向量X的前后两项之差并重复n次,例如diff(X,2)就相当于 diff(diff(X)),在你的程序中有如下语句:f(1)=diff(fff,b1);式...

matlab中fsolve函数求解中的一个问题
嗯,确实是你Ft = rand的错误,每次调用函数Ft都改变了。要实现你的要求程序如下:a = normrnd(4000, sqrt(1000), 1, 3); % a = [1 2 3];b = normrnd(2, sqrt(0.5), 1, 3);f = @(a,b,Ft)fsolve(@(x)sum(exp(-(x.\/a).^b))-3*(1-Ft), 0, optimset('Display'...

matlab中fsolve解二元方程问题
function q=fxy(p)x=p(1);y=p(2);q(1)=2*x-y-exp(-x);q(2)=-x+2*y-exp(-y);end >> x=fsolve(@fxy,[-5,-5]',optimset('Display','off'))x = 0.5671 0.5671

matlab fsolve问题
如果把函数在0-1.4之间的图形画出来,可以看到,在该区间范围内有两个极值点,fsolve的算法会因这两个极值点的影响而无法找到方程的根。楼上建议用fzero函数,这在某些条件下是可行的,但也很难保证在任何初值下都能正确求解(例如给定初值为8就不行)。像这类问题,最稳妥的做法还是先画出函数图像...

如何用matlab中的fsolve或solve函数解这个方程
求解此类问题,可以用循环语句和fsolve函数一起来解。求解过程如下:u0=linspace(64,79.813,10);for i=1:length(u0)u=u0(i);func=@(x,u)u.*cos(pi\/9).^2.*(120+2.125*cot(0.0173*pi)-u*cos(pi\/9).*cos(x))+cos(pi\/9).*(2.125*x+u*sin(pi\/9)).*(2.125*sin(x)-u...

相似回答
大家正在搜