DeerJM 2023-05-15 17:55 采纳率: 33.3%
浏览 29

matlab用fsolve解二元非线性方程组

在学习b站matlab郭彦甫的课中,关于方程式求根的部分,有一道练习是用fsolve求二元非线性方程组,我模仿之前用solve的方式设了两个变量x和y,但是报错Invalid datatype. Options argument must be created with OPTIMOPTIONS
这个optimoptions在mathwork上的解释太复杂了,没有看懂

我在网上找到的所有多元的例子都是用的x1和x2和x3,请问大家,为什么不可以用x和y和z呢?

我的:
f=@(x,y)([(2*x-y-exp(-x));(-x+2*y-exp(-y))]);
fsolve(f,-5,-5)

答案:
f=@(x) ([2*x(1)-x(2)-exp(-x(1));-x(1)+2*x(2)-exp(-x(2))]);
fsolve(f,[-5 -5])
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-05-15 20:11
    关注

    问题解答:

    对于第一个问题,“Invalid datatype. Options argument must be created with OPTIMOPTIONS”的错误产生原因是参数option需要用optimoptions函数创建,而不是optimset函数。用法如下:

    options = optimoptions('fsolve','Display','off'); X = fsolve(@myfun, [1,1,1], options);

    对于第二个问题,网上的例子中大多使用的是x1、x2、x3等变量,主要是出于变量说明的目的,方便理解和阅读。在实际使用中,用x、y作为变量是完全可以的。因此,可以根据具体问题和个人习惯任意选择变量名。

    示例代码如下:

    % 定义方程组,用x、y作为变量 function F = myfun(X) x = X(1); y = X(2); F(1) = exp(-exp(-(x+y))) - y(1+x^2); F(2) = xcos(y) + y*sin(x) - 0.5;

    % 设置优化选项 options = optimoptions('fsolve', 'Display', 'off');

    % 求解方程组 X = fsolve(@myfun, [0,0], options);

    % 输出结果 disp(['x = ', num2str(X(1))]); disp(['y = ', num2str(X(2))]);

    输出结果如下:

    x = 0.3532 y = 0.6061

    注意,在使用fsolve求解非线性方程组时,初始点的选取是很重要的。不同的初始点可能会产生不同的解,甚至无法收敛。因此,需要根据具体问题来选择合适的初始点,或者使用多组不同的初始点来求解,以得到更全面的解集。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月15日

悬赏问题

  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画
  • ¥15 hadoop中启动hive报错如下怎么解决
  • ¥15 如何优化QWebEngineView 加载url的速度
  • ¥15 关于#hadoop#的问题,请各位专家解答!
  • ¥15 如何批量抓取网站信息