s=struct('parent',{'A','B','C','D','E','F','G'},'children',{'BC','DE','F','G','','',''})
function [nodesnum]=numofnodes(s,num,node)%s为树的结构体,node为子树的根节点
syms A
for i=1:size(s,2)
if isequal(s(i)parent,node)
t=i
end
end
if isempty(s(t)children)
num=num
else
A=s(t)children
num=size(A,2)+num
end
for j=1:size(A,2)
for k=t:size(s,2)
if isequal(s(k)parent,A(j))
numofnodes(s,num,s(k)parent)
你这个题目的意思应该是让你用多项式拟合的结果求解第三问。
第二问多项式拟合可以用polyfit函数实现。
用第一个函数形式,其中的三个参数分别是已知点的横纵坐标(x,y)和多项式阶数(n),p为多项式系数,降幂排列。你可以根据自己需要写循环计算不同阶数下的拟合多项式,然后对拟合结果进行评价,可以用SSE等指标进行评价。具体评价指标有哪些,你可以看这篇文章“网页链接”。然后选择最优拟合多项式,采用roots函数求零点坐标,选取最合适的解。
p就是之前多项式拟合中的p(其中最后一项减去0002,可以用p(end)
=
p(end)
-
0002;实现),r为多项式的根。
s=0:01:1;
v=s;
t=(v+10)/(s+40(3^(1/2)))
在(1+10)后面加个点,这样就是向量运算了。
由于题主现在使用的matlab是高版本,而你提供的代码在低版本上使用是没有问题的。所以你应该这样来写:
sysm x y z
[x,y,z]=vpasolve(1245572133718800698226781/703687441776640000000 - (776609y)/20000 - (40122129979280075z)/1125899906842624 - (38626517211016134611x)/562949953421312000==0,(x-226853)/cosd(513402)==(y-179944)/cosd(386598),(y-179944)/cosd(386598)==(z-136981)/cosd(520148))
运行结果
你的问题可以表示为以下整数规划问题:
设A、B两种产品分别生产x1,x2件即求整数规划问题
2x1+3x2<=100
4x1+2x2<=120
x1,x2>=0
x1,x2是整数
求函数f(x1,x2)=-6x1-4x2的最小值
一般整数规划需要使用分支定界法来求解,分支定界法的第一步通常是忽略x1、x2必须为整数的条件,去求解上述线性规划问题。但是我在matlab里求出来最小值x1,x2正好是整数。所以,后面分支定界的一大串步骤就不需要了。但是推荐你还是查一下算法步骤,或者网上也能找到分支定界算法的matlab代码。以下是在matlab中求解问题的步骤:
A=[2 3;4 2] %A是不等式组的系数矩阵
B=[100;120]%B是不等式组的常数项组成的向量
xmin=[0;0]
xmax=[inf;inf] %x1、x2的取值范围
f=[-6;-4]%目标函数,加负号求最小值,即原题目中的最大值
[x,fmin,flag]=linprog(f,A,B,[],[],xmin,xmax,x0) %使用linprog求解
x=[20 20] fmin=-200
如何用matlab来解决材料力学超静定问题,求解思路利用有限元法原理,对超静定结构梁(桁架)分解成若干个有限单元,建立单元的力与位移之间的关系,然后再将各单元通过节点联结起来,单元间的力通过节点进行传递,建立整体结构的力与位移之间的关系,将问题简化成矩阵计算问题,然后利用数学软件matlab的编程进行求解。
具体求解步骤可按下列方法进行:
1、根据单元剖分原则,把结构剖分成若干份;
2、单元分析,写出单元的刚阵(以矩阵形式表示);
3、综合各单元,按节点位移序号组成结构的总刚阵[K],总外力列阵{F}和总位移列阵
{qr};根据边界条件,简化矩阵;
4、由{qr}=inv([K]r){Fr}, 求解各节点的变形; %inv([K]r)为[K]r的逆矩阵
5、由{F}=[Kz] {q},可解得各节点反力
6、按上述要求,进行matlab编程,以解决力学超静定问题。
具体可以参照这篇文档,网页链接。
出现这样的问题,最关键的是把ode45()的位置设置错误,不能放在其调用的函数内。这样的结果就到底是谁调用谁,分不清自己。
ode45()正确的方法是:
y0=[0;0]; %从orbit()中移出来
[t,x]=ode45(@orbit,[0 12],y0) %从orbit()中移出来
其他,orbit()本身还有问题,写的比较乱,orbit()要求反馈变量dy含糊不清。
还有什么疑问,可以再交流或通过私信的方式交流也可以。交流时,最后提供完整的代码,这样好帮你分析问题所在。
这个代码书写有误。
[D,Fcr]=vpasolve('AFcr+BFcr+CFcr^2+MFcr^3-NFcr^4-L=0');
应该这样写
[D,Fcr]=vpasolve(AFcr+BFcr+CFcr^2+MFcr^3-NFcr^4-L==0);
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)