matlab求导长方程,然后计算结果
Derivative long equation in matlab, then calculation the result
我有这样一个例子:
我有一个元素的速度===导数它====>元素的加速度。
速度是从许多方程计算的,像这样:
syms m w k E mI c w t L z;
E=2.7*10^10;
L=21;
mI=0.001332;
z=5;
m=500;
k=1*10^7;
c=30000;
w=300;
t=1;
a=((((m*w^2-k)/(E*mI))^2+(c*w/(E*mI))^2)^(1/8));
b=(atan(-c*w/(m*w^2-k))/4+pi/4);
syms cosi(w);
cosi=a*exp(t*b);
delta=2*(1-cosh(cosi*L)*cos(cosi*L));
syms v(w);
v=((sin(cosi*L)-sinh(cosi*L))*(cosh(cosi*z)+cos(cosi*z))+(cosh(cosi*L)...
-cos(cosi*L))*(sinh(cosi*z)+sin(cosi*z)))...
/(E*mI*cosi^3*delta);
f=jacobian(v,w);
m,k,E,mI,c为常量,w为自变量。
1.Now 我想计算 v 的导数
2.Now 我想将这些代码编译成Net 程序集以供c# 程序调用。我该如何解决它。
function [resultv,resultf]=Untitled4(m1, w1, k1, E1, mI1, c1, t1, L1, z1)
syms m w k E mI c w t L z cosi(w)
a=((((m*w^2-k)/(E*mI))^2+(c*w/(E*mI))^2)^(1/8));
b=(atan(-c*w/(m*w^2-k))/4+pi/4);
cosi=a*exp(t*b);
delta=2*(1-cosh(cosi*L)*cos(cosi*L));
v=((sin(cosi*L)-sinh(cosi*L))*(cosh(cosi*z)+cos(cosi*z))+(cosh(cosi*L)...
-cos(cosi*L))*(sinh(cosi*z)+sin(cosi*z)))...
/(E*mI*cosi^3*delta);
f=jacobian(v,w);
E=E1;
L=L1;
mI=mI1;
z=z1;
m=m1;
k=k1;
c=c1;
w=w1;
t=t1;
resultv=double(subs(v));
resultf = double(subs(f));
end
非常感谢。
使用jacobian
。假设您想推导 wrt w
syms m w k E mI c w t L z
a=((((m*w^2-k)/(E*mI))^2+(c*w/(E*mI))^2)^(1/8));
b=(atan(-c*w/(m*w^2-k))/4+pi/4);
cosi=(a*exp(t*b));
delta=2*(1-cosh(cosi*L)*cos(cosi*L));
v=((sin(cosi*L)-sinh(cosi*L))*(cosh(cosi*z)+cos(cosi*z))+(cosh(cosi*L)...
-cos(cosi*L))*(sinh(cosi*z)+sin(cosi*z)))...
/(E*mI*cosi^3*delta);
jacobian(v,w)
问题更新后更新
syms m w k E mI c w t L z cosi(w)
a=((((m*w^2-k)/(E*mI))^2+(c*w/(E*mI))^2)^(1/8));
b=(atan(-c*w/(m*w^2-k))/4+pi/4);
cosi=a*exp(t*b);
delta=2*(1-cosh(cosi*L)*cos(cosi*L));
v=((sin(cosi*L)-sinh(cosi*L))*(cosh(cosi*z)+cos(cosi*z))+(cosh(cosi*L)...
-cos(cosi*L))*(sinh(cosi*z)+sin(cosi*z)))...
/(E*mI*cosi^3*delta);
f=jacobian(v,w);
E=2.7*10^10;
L=21;
mI=0.001332;
z=5;
m=500;
k=1*10^7;
c=30000;
w=300;
t=1;
results = double(subs(f))
我有这样一个例子: 我有一个元素的速度===导数它====>元素的加速度。 速度是从许多方程计算的,像这样:
syms m w k E mI c w t L z;
E=2.7*10^10;
L=21;
mI=0.001332;
z=5;
m=500;
k=1*10^7;
c=30000;
w=300;
t=1;
a=((((m*w^2-k)/(E*mI))^2+(c*w/(E*mI))^2)^(1/8));
b=(atan(-c*w/(m*w^2-k))/4+pi/4);
syms cosi(w);
cosi=a*exp(t*b);
delta=2*(1-cosh(cosi*L)*cos(cosi*L));
syms v(w);
v=((sin(cosi*L)-sinh(cosi*L))*(cosh(cosi*z)+cos(cosi*z))+(cosh(cosi*L)...
-cos(cosi*L))*(sinh(cosi*z)+sin(cosi*z)))...
/(E*mI*cosi^3*delta);
f=jacobian(v,w);
m,k,E,mI,c为常量,w为自变量。 1.Now 我想计算 v 的导数 2.Now 我想将这些代码编译成Net 程序集以供c# 程序调用。我该如何解决它。
function [resultv,resultf]=Untitled4(m1, w1, k1, E1, mI1, c1, t1, L1, z1)
syms m w k E mI c w t L z cosi(w)
a=((((m*w^2-k)/(E*mI))^2+(c*w/(E*mI))^2)^(1/8));
b=(atan(-c*w/(m*w^2-k))/4+pi/4);
cosi=a*exp(t*b);
delta=2*(1-cosh(cosi*L)*cos(cosi*L));
v=((sin(cosi*L)-sinh(cosi*L))*(cosh(cosi*z)+cos(cosi*z))+(cosh(cosi*L)...
-cos(cosi*L))*(sinh(cosi*z)+sin(cosi*z)))...
/(E*mI*cosi^3*delta);
f=jacobian(v,w);
E=E1;
L=L1;
mI=mI1;
z=z1;
m=m1;
k=k1;
c=c1;
w=w1;
t=t1;
resultv=double(subs(v));
resultf = double(subs(f));
end
非常感谢。
使用jacobian
。假设您想推导 wrt w
syms m w k E mI c w t L z
a=((((m*w^2-k)/(E*mI))^2+(c*w/(E*mI))^2)^(1/8));
b=(atan(-c*w/(m*w^2-k))/4+pi/4);
cosi=(a*exp(t*b));
delta=2*(1-cosh(cosi*L)*cos(cosi*L));
v=((sin(cosi*L)-sinh(cosi*L))*(cosh(cosi*z)+cos(cosi*z))+(cosh(cosi*L)...
-cos(cosi*L))*(sinh(cosi*z)+sin(cosi*z)))...
/(E*mI*cosi^3*delta);
jacobian(v,w)
问题更新后更新
syms m w k E mI c w t L z cosi(w)
a=((((m*w^2-k)/(E*mI))^2+(c*w/(E*mI))^2)^(1/8));
b=(atan(-c*w/(m*w^2-k))/4+pi/4);
cosi=a*exp(t*b);
delta=2*(1-cosh(cosi*L)*cos(cosi*L));
v=((sin(cosi*L)-sinh(cosi*L))*(cosh(cosi*z)+cos(cosi*z))+(cosh(cosi*L)...
-cos(cosi*L))*(sinh(cosi*z)+sin(cosi*z)))...
/(E*mI*cosi^3*delta);
f=jacobian(v,w);
E=2.7*10^10;
L=21;
mI=0.001332;
z=5;
m=500;
k=1*10^7;
c=30000;
w=300;
t=1;
results = double(subs(f))