[已解决] 一直说未定义函数或变量u,查找了好久,一直未解决问题,恳求大神赐教,

[复制链接]
qwerty204204 发表于 2022-11-8 11:41:02
本帖最后由 qwerty204204 于 2022-11-13 11:04 编辑

clc;
clear all;
syms u
u=sym('u(t)');
u1=diff(u,'t',1);
u2=diff(u,'t',2);

global fun1 fun2 fun3
uvp1=(88687.812-190.201*u2)^0.5-294.6161642;
uvp=int(uvp1,'t',0,1);
c=20894.93392*(4*u*(2*0.21-u))*(u+sqrt(u*(2*0.21-u))).^0.2;
k=62946.65856*(2*sqrt(u*(2*0.21-u)))*(u+sqrt(u*(2*0.21-u))).^0.4;

fun1=matlabFunction(c);
fun2=matlabFunction(k);
fun3=matlabFunction(uvp);

t0=0; %x=0时   y(1)=2,y(2)=0
u0=[0,0]; %分别代表初始值 y(1)=2,y(2)=0
up0=[0 0];  %虽然没有yp0(一阶导)的具体值,需要赋值
[u0,up0]=decic(@ode,t0,u0,[0 0],up0,[0 0])
opts=odeset('reltol',1e-8,'abstol',1e-8);
sol=ode15i(@ode,[0 1],u0,up0,opts);

function f=ode(t,u,up)
global fun1 fun2 fun3
f=zeros(2,1);  %f初始化为两行一列
f(1)=up(1)-u(2);
f(2)=100*up(2)+fun1(t)*u(2)-fun1(t)*(sqrt(88687.812-190.201*up(2))-294.6161642)+fun2(t)*u(1)-fun2(t)*fun3(t)-100*9.81;
end

运行matlab后,提示如下:
警告: Function 'u' is not verified to be a valid MATLAB function.
> In symengine
  In sym/matlabFunction>mup2mat (line 401)
  In sym/matlabFunction>mup2matcell (line 373)
  In sym/matlabFunction (line 184)
  In model1_3_1 (line 20)
未定义函数或变量 'u'。

出错 symengine>@(t)u(t).*(u(t)+sqrt(-u(t).*(u(t)-2.1e1./5.0e1))).^(1.0./5.0).*(u(t)-2.1e1./5.0e1).*(-8.357973568e4)

出错 model1_3_1>ode (line 34)
f(2)=100*up(2)+fun1(t)*u(2)-fun1(t)*(sqrt(88687.812-190.201*up(2))-294.6161642)+fun2(t)*u(1)-fun2(t)*fun3(t)-100*9.81;

出错 decic (line 66)
res = feval(odefun,t0,y0,yp0,varargin{:});

出错 model1_3_1 (line 26)
[u0,up0]=decic(@ode,t0,u0,[0 0],up0,[0 0])


请教问题原方程及初始条件

请教问题原方程及初始条件

最佳答案


wjb986555360 发表于 2022-11-13 00:06:32
你这段程序写的语法问题很大,你最好把你要求的方程及条件发出来
回复此楼

1 条回复


wjb986555360 发表于 2022-11-13 00:06:32
你这段程序写的语法问题很大,你最好把你要求的方程及条件发出来
回复此楼

qwerty204204 发表于 2022-11-14 18:08:05
wjb986555360 发表于 2022-11-13 00:06
你这段程序写的语法问题很大,你最好把你要求的方程及条件发出来

麻烦您给看下该怎么改好呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表