matlab - 使用 Matlab fsolve() 找到具有 2 个变量的 2 个函数的零点
问题描述
我正在使用 Matlab 尝试求解具有 2 个变量的 2 个方程。
我定义了两个函数f2(n_1,n_2),f3(n_1,n_2),它们都依赖于f1(n_1,n_2) ,然后我定义了包含它们的向量化函数G(n_1,n_2) 。
后来我定义了一个期望的陈述点,并试图解决。但是在运行代码时会引发一个我不完全理解的错误。
上面提到的显示在下面的代码中:
编码:
clear, close all; clc
%Const
N0=25;
G1=1;G2=1;
a1=6;a2=3;
k1=1;k2=4;
%main
syms n_1 n_2
X_0=[-5;5];
f1=N0-a1.*n_1-a2.*n_2;
f2=f1.*G1.*n_1-k1.*n_1;
f3=f1.*G2.*n_2-k2.*n_2;
G=@(n_1,n_2) [f2;f3];
s = fsolve(G,X_0);
错误:
Error using fsolve (line 269)
FSOLVE requires all values returned by functions to be of data type double.
Error in Ex1_Q3_DavidS (line 37)
s = fsolve(G,X_0);
谢谢
解决方案
fsolve
是一个函数,它使用数值方法来找到数值函数的根。
例如,数值函数是f=@(x)x^2=2;
。在 MATLAB 中,您可以计算f()
任何数字,它会返回一个数字,但它没有更高阶的数学抽象。然而,这是在计算机中进行数学运算的最快方法,因为它不是更高的智能,只是一个美化的计算器。
然而,有些人想要赋予计算机更高的智能,并编写了非常复杂的符号工具箱,这些工具箱带有一套规则,试图教计算机像人类一样思考并解决符号方程,就像你在纸上所做的那样。为了求解这些方程solve
,在 MATLAB 中引入了一个名为的函数。
您正在做符号数学,但使用数字求解器。它不起作用,只需使用符号求解器进行符号数学。
推荐阅读
- excel - 基于使用 OR 运算符给出错误结果的条件的平均值
- css - NGINX服务器debian 8中的CSS问题
- java - Java 类异常未按预期工作
- flutter - 为什么在使用 Navigator.pop 时会忽略 WillPopScope 中的 onWillPop?
- c - Ubuntu Linux 中的 C - 无法执行分叉的进程
- node.js - 在 Node.JS 应用程序中编译 C++/CLI 时出错
- google-apps-script - 如何将变量从 Google Apps 脚本传递到外部 URL?
- java - 为什么函数
不接受来自子类的方法引用? - java - 为什么浏览器不会处理来自我的 http-server 的响应
- for-loop - 循环通过过滤器并发送带有 PDF 的电子邮件的 Google Apps 脚本?