在我的常微分方程函数中,我需要迭代地求解一个参数的方程,直到在每个时间步收敛。我希望传递最新的参数值作为下一个时间步的初始值,这样当函数对参数进行迭代更新时,花费的时间会更少。但我想不出该怎么做。ODE函数的代码结构如下:
from scipy.integrate import solve_ivp
def run(t, y):
if t==0:
a = 1e-8
nn = 0
while nn<=100:
nn = nn +1
#update a until convergence
我有一个目标函数,它根据一些参数来计算非线性常微分方程系统的实际值与我的预测值之间的差值。
residuals_vector = actual_values-predictions
P参数N残差的[residuals_vector]=objfun(actual_values,time,parameters),在Matlab语言中有没有一种简便的方法计算该系统的灵敏度矩阵P x N
我正在尝试用solve_bvp解决一个二阶常微分方程。我已经将二阶常微分方程分成两个一阶常微分方程系统。我有一组根据x(网格)值变化的常量。所以我将它们作为一个形状数组(N,)传递给我的函数numdens。在尝试运行solve_bvp时,我得到一个错误,即返回具有不同的形状,即(N,)和(N-1,),因此不能广播到一个数组中。但是当我在函数外部手动检查每个返回时,它的形状是(N,)。如果我在不改变常量的情况下运行求解器,我会得到一个类似于正确的解。
import numpy as np
from scipy.integrate import solve_bvp,odeint
import ma
我试着解决最大化函数的问题。14个约束,15个变量。有些是线性的,有些则不是。它们都是方程(没有不等式)。
我试过使用'fsolve‘和’求解‘,使用拉格朗日(最终得到29个方程和30个变量)
我转到了fmincon。我在一个名为objectfun.m的文件中设置了一个带有目标函数的脚本:
function f = objectfun(x,I,rho)
% SWAPPING VARIABLE NAMES FOR READABILITY:
w = x(1);
t = x(2);
beta = x(3);
r = x(4);
% VALUE FUNCTION TO BE MINIMIZ
我试着用MATLAB编写一个常微分方程。
我写了这段代码:
function [y] = odefun(t,y)
t = [0:0.01:10];
y = [0 0]';
y(1) = y(2);
y(2) = sin(2*t)-2*y(2)-2*y(1); % I get an error here
end
在这段代码的最后一行中我得到了一个错误。MATLAB没有告诉我错误是什么。它只是告诉我在那一行中有一个错误。
为什么我会得到这个错误以及如何解决它?