我想开发一个用于解线性和非线性方程组的桌面应用程序。我正在考虑在Matlab中使用C#。我以前从未使用过matlab,但我正在努力为我的项目学习。
function F = myfun(x)
F = [2*x(1) - x(2) - exp(-x(1));
-x(1) + 2*x(2) - exp(-x(2))];
**x0 = [-5; -5]; % Make a starting guess at the solution**
options=optimset('Display','iter'); % Option to
我在Dymola (基于modelica的商业软件)中运行一个系统模型。模型研究了在强迫对流作用下多孔物质的传热传质问题。我问这个问题的问题是关于模型模拟过程中产生的误差。
具有模型当前设置的在给定的模拟时间(7200秒)内成功运行。但是它在日志文件中生成以下提示(在整个运行时间歇性地):
ERROR: Failed to solve non-linear system using Newton solver.
To get more information: Turn on Simulation/Setup/Debug/Nonlinear solver diagnostics/Detail
我有一个应用程序,其中我需要使用迭代技术来求解变量。基本上,我需要猜测a的值,使K= 1.2;以下是我拥有的参数和方程:
b = .02;
M = 3;
Sg = 4.5;
以下是方程式:
X = pi*alpha/2;
F = sqrt((1/X)*tan(X))*(.923 + .199*(1 - sin(X))^4)/cos(X);
K = F*Sg*sqrt(pi*a)
当我猜测.010125的值时,我得到了K的适当值1.2时,我如何使用带有初始猜测值的迭代技术来获得a的.010125的适当值?
下面是完整的代码:
%ABS Plastic Under Moment Load
clc
下面是我用scipy.optimize.leastsq解决问题的一个最小例子
from scipy.optimize import leastsq
from numpy import array, exp, sin, cos
def MatrixFun(x, *par):
a, b, c, d = par
m11 = a*sin(x[0])+b*cos(x[1])
m12 = c*cos(x[0])*sin(x[1])
m21 = c*sin(x[0])/cos(x[1])
m22 = d*exp(x[0]*x[1])
M = array([[
我有一个非线性系统,它有二次输入(操纵变量,MV)。为了使用GEKKO对该系统进行MPC模拟,我定义了以下函数来处理二次输入: def NTVin(T, u):
n = T.shape[0]
Tntv = zeros(n)
u2 = zeros_like(u, dtype = float64)
for i in range(len(u2)):
u2[i] = copy(u[i].VALUE)
for i in range(n):
Tntv[i] = dot(dot(u2, T[i,:,:]), u2)
retu