matlab中定义符号方程,怎么将自定义符号方程的系数提出来的,并将系数化为数值形式...

function [ceq, c]=diaoyongyueshu(h)

q1=10;q3=60;q4=75;q5=130;q6=110;q7=100;q8=-10;q10=-50;

B=[3*h(1)+2*h(2)+(h(1)^2/h(2)),h(2),0,0,0,0,0,0;

h(2)-(h(1)^2/h(2)),2*(h(2)+h(3)),h(3),0,0,0,0,0;

0,h(3),2*(h(3)+h(4)),h(4),0,0,0,0;

0,0,h(4),2*(h(4)+h(5)),h(5),0,0,0;

0,0,0,h(5),2*(h(5)+h(6)),h(6),0,0;

0,0,0,0,h(6),2*(h(6)+h(7)),h(7),0;

0,0,0,0,0,h(7),2*(h(7)+h(8)),h(8)-(h(9)^2/h(8));

0,0,0,0,0,0,h(8),3*h(9)+2*h(8)+(h(9)^2/h(8))];

E=[6*(q3/h(2)+q1/h(1))-6*(1/h(1)+1/h(2))*q1;(6/h(2))*q1+6*q4/h(3)-6*(1/h(2)+1/h(3))*q3;6*((q5-q4)/h(4)-(q4-q3)/h(3));6*((q6-q5)/h(5)-(q5-q4)/h(4));6*((q7-q6)/h(6)-(q6-q5)/h(5));6*((q8-q7)/h(7)-(q7-q6)/h(6));6*q10/h(8)-6*(1/h(8)+1/h(7))*q8+6*q7/h(7);-6*(1/h(9)+1/h(8))*q10+6*q10/h(9)+6*q8/h(8)];

D=inv(B)*E;

x1=D(1,1);

x2=D(2,1);

x3=D(3,1);

x4=D(4,1);

x5=D(5,1);

x6=D(6,1);

x7=D(7,1);

x8=D(8,1);

q2=q1+(h(1)^2/6)*x1;

q9=q10+(h(9)^2/6)*x5;

f1=-x1*h(2)/2+(q3-q2)/h(2)+(x1-x2)*h(2)/6;

f2=-x2*h(3)/2+(q4-q3)/h(3)+(x2-x3)*h(3)/6;

f3=-x3*h(4/2)+(q5-q4)/h(4)+(x3-x4)*h(4)/6;

f4=-x4*h(5)/2+(q6-q5)/h(5)+(x4-x5)*h(5)/6;

f5=-x5*h(6)/2+(q7-q6)/h(6)+(x5-x6)*h(6)/6;

f6=-x6*h(7)/2+(q8-q7)/h(7)+(x6-x7)*h(7)/6;

f7=-x7*h(8)/2+(q9-q8)/h(8)+(x7-x8)*h(8)/6;

f8=-x8*h(9)/2+(q10-q9)/h(9)+(x8-0)*h(9)/6;

f9=(q2-q1)/h(1)-h(1)*x1/6;

f10=(-h(2)*x1*x2/2*(x2-x1))+((q3-q2)/h(2))-(h(2)*(x2-x1)/6);

f11=(-h(3)*x2*x3/2*(x3-x2))+((q4-q3)/h(3))-(h(3)*(x3-x2)/6);

f12=(-h(4)*x3*x4/2*(x4-x3))+((q5-q4)/h(4))-(h(4)*(x4-x3)/6);

f13=(-h(5)*x4*x5/2*(x5-x4))+((q6-q5)/h(5))-(h(5)*(x5-x4)/6);

f14=(-h(6)*x5*x6/2*(x6-x5))+((q7-q6)/h(6))-(h(6)*(x6-x5)/6);

f15=(-h(7)*x6*x7/2*(x7-x6))+((q8-q7)/h(7))-(h(7)*(x7-x6)/6);

f16=(-h(8)*x7*x8/2*(x8-x7))+((q9-q8)/h(8))-(h(8)*(x8-x7)/6);

f17=((q10-q9)/h(9))-(h(9)*(-x8)/6);

c(1)=max(abs([x1,x2,x3,x4,x5,x6,x7,x8]))-45;

c(2)=max(abs([(x1-0)/h(1),(x2-x1)/h(2),(x3-x2)/h(3),(x4-x3)/h(4),(x5-x4)/h(5),(x6-x5)/h(6),(x7-x6)/h(7),(x8-x7)/h(8),(0-x8)/h(9)]))-60;

c(3)=max(abs([f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17]))-100;

c=[c(1);c(2);c(3)];

ceq=[];

主程序

clc

clear all

fun=@(h)h(1)+h(2)+h(3)+h(4)+h(5)+h(6)+h(7)+h(8)+h(9);

h0=[3.607,3.607,2.878,4.275,5.612,2.915,5.879,1.336,1.336];

A=[];b=[];Aeq=[];beq=[];vlb=[0,0,0,0,0,0];vub=[];

nonlcon=@diaoyongyueshu;

options.StepTolerance=1e-6;

[x,fval,exitflag]=fmincon(fun,h0,A,b,Aeq,beq,vlb,vub,nonlcon,options)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值