700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > matlab数值法解方程fsolve 关于fsolve求解方程组数值解

matlab数值法解方程fsolve 关于fsolve求解方程组数值解

时间:2020-05-22 16:12:19

相关推荐

matlab数值法解方程fsolve 关于fsolve求解方程组数值解

我相求这么一个方程组,现在的代码是这么写的:

主程序:syms c1 c2 c3 c4 r

c = [c1,c2,c3,c4];

digits(4)

es = c1*x_0(:,1)+c2*x_0(:,2)+c3*x_0(:,3)+c4*x_0(:,4);

yy = vpa(dot(AA*c',c)/dot(BB*c',c));

y = vpa(sum(es.^2));

L = yy+r*(y-1);

L1=diff(L,c1);

L2=diff(L,c2);

L3=diff(L,c3);

L4=diff(L,c4);

Lr=diff(L,r);

x0 = rand(5,1);

x=vpa(fsolve('func',x0,optimset('Display','off')));

ess = x(1)*x_0(:,1)+x(2)*x_0(:,2)+x(3)*x_0(:,3)+x(4)*x_0(:,4);

func函数是这样的

function q = func( p )

c1 = p(1);c2 = p(2);c3 = p(3);c4 = p(4);r = p(5);

q(1)=- r*(2.274e-13*c2 - 2.0*c1 + 1.819e-12*c3) - (1.0*(7.323e-20*c1 + 3.48e-20*c2 - 1.943e-20*c3 + 7.162e-20*c4))/(c2*(2.906e-17*c1 - 1.0*c2 + 4.142e-17*c3 - 2.082e-17*c4) + c4*(5.551e-17*c1 - 2.082e-17*c2 + 4.857e-17*c3 - 1.0*c4) - 1.0*c3*(2.489e-16*c1 - 4.142e-17*c2 + c3 - 4.857e-17*c4) - 1.0*c1*(c1 - 2.906e-17*c2 + 2.489e-16*c3 - 5.551e-17*c4)) - (1.0*(c2*(1.74e-20*c1 + 8.266e-21*c2 - 4.617e-21*c3 + 1.701e-20*c4) + c4*(3.581e-20*c1 + 1.701e-20*c2 - 9.502e-21*c3 + 3.502e-20*c4) + c1*(3.662e-20*c1 + 1.74e-20*c2 - 9.716e-21*c3 + 3.581e-20*c4) - 1.0*c3*(9.716e-21*c1 + 4.617e-21*c2 - 2.578e-21*c3 + 9.502e-21*c4))*(2.0*c1 - 5.811e-17*c2 + 4.979e-16*c3 - 1.11e-16*c4))/(c2*(2.906e-17*c1 - 1.0*c2 + 4.142e-17*c3 - 2.082e-17*c4) + c4*(5.551e-17*c1 - 2.082e-17*c2 + 4.857e-17*c3 - 1.0*c4) - 1.0*c3*(2.489e-16*c1 - 4.142e-17*c2 + c3 - 4.857e-17*c4) - 1.0*c1*(c1 - 2.906e-17*c2 + 2.489e-16*c3 - 5.551e-17*c4))^2;

q(2)=(1.0*(c2*(1.74e-20*c1 + 8.266e-21*c2 - 4.617e-21*c3 + 1.701e-20*c4) + c4*(3.581e-20*c1 + 1.701e-20*c2 - 9.502e-21*c3 + 3.502e-20*c4) + c1*(3.662e-20*c1 + 1.74e-20*c2 - 9.716e-21*c3 + 3.581e-20*c4) - 1.0*c3*(9.716e-21*c1 + 4.617e-21*c2 - 2.578e-21*c3 + 9.502e-21*c4))*(5.811e-17*c1 - 2.0*c2 + 8.283e-17*c3 - 4.163e-17*c4))/(c2*(2.906e-17*c1 - 1.0*c2 + 4.142e-17*c3 - 2.082e-17*c4) + c4*(5.551e-17*c1 - 2.082e-17*c2 + 4.857e-17*c3 - 1.0*c4) - 1.0*c3*(2.489e-16*c1 - 4.142e-17*c2 + c3 - 4.857e-17*c4) - 1.0*c1*(c1 - 2.906e-17*c2 + 2.489e-16*c3 - 5.551e-17*c4))^2 - r*(2.274e-13*c1 - 2.0*c2 + 2.245e-12*c3 - 3.411e-13*c4) - (1.0*(3.48e-20*c1 + 1.653e-20*c2 - 9.233e-21*c3 + 3.403e-20*c4))/(c2*(2.906e-17*c1 - 1.0*c2 + 4.142e-17*c3 - 2.082e-17*c4) + c4*(5.551e-17*c1 - 2.082e-17*c2 + 4.857e-17*c3 - 1.0*c4) - 1.0*c3*(2.489e-16*c1 - 4.142e-17*c2 + c3 - 4.857e-17*c4) - 1.0*c1*(c1 - 2.906e-17*c2 + 2.489e-16*c3 - 5.551e-17*c4));

q(3)=(1.0*(1.943e-20*c1 + 9.233e-21*c2 - 5.157e-21*c3 + 1.9e-20*c4))/(c2*(2.906e-17*c1 - 1.0*c2 + 4.142e-17*c3 - 2.082e-17*c4) + c4*(5.551e-17*c1 - 2.082e-17*c2 + 4.857e-17*c3 - 1.0*c4) - 1.0*c3*(2.489e-16*c1 - 4.142e-17*c2 + c3 - 4.857e-17*c4) - 1.0*c1*(c1 - 2.906e-17*c2 + 2.489e-16*c3 - 5.551e-17*c4)) - r*(1.819e-12*c1 + 2.245e-12*c2 - 2.0*c3 - 7.105e-13*c4) - (1.0*(4.979e-16*c1 - 8.283e-17*c2 + 2.0*c3 - 9.714e-17*c4)*(c2*(1.74e-20*c1 + 8.266e-21*c2 - 4.617e-21*c3 + 1.701e-20*c4) + c4*(3.581e-20*c1 + 1.701e-20*c2 - 9.502e-21*c3 + 3.502e-20*c4) + c1*(3.662e-20*c1 + 1.74e-20*c2 - 9.716e-21*c3 + 3.581e-20*c4) - 1.0*c3*(9.716e-21*c1 + 4.617e-21*c2 - 2.578e-21*c3 + 9.502e-21*c4)))/(c2*(2.906e-17*c1 - 1.0*c2 + 4.142e-17*c3 - 2.082e-17*c4) + c4*(5.551e-17*c1 - 2.082e-17*c2 + 4.857e-17*c3 - 1.0*c4) - 1.0*c3*(2.489e-16*c1 - 4.142e-17*c2 + c3 - 4.857e-17*c4) - 1.0*c1*(c1 - 2.906e-17*c2 + 2.489e-16*c3 - 5.551e-17*c4))^2;

q(4)=r*(3.411e-13*c2 + 7.105e-13*c3 + 2.0*c4) - (1.0*(7.162e-20*c1 + 3.403e-20*c2 - 1.9e-20*c3 + 7.004e-20*c4))/(c2*(2.906e-17*c1 - 1.0*c2 + 4.142e-17*c3 - 2.082e-17*c4) + c4*(5.551e-17*c1 - 2.082e-17*c2 + 4.857e-17*c3 - 1.0*c4) - 1.0*c3*(2.489e-16*c1 - 4.142e-17*c2 + c3 - 4.857e-17*c4) - 1.0*c1*(c1 - 2.906e-17*c2 + 2.489e-16*c3 - 5.551e-17*c4)) + (1.0*(c2*(1.74e-20*c1 + 8.266e-21*c2 - 4.617e-21*c3 + 1.701e-20*c4) + c4*(3.581e-20*c1 + 1.701e-20*c2 - 9.502e-21*c3 + 3.502e-20*c4) + c1*(3.662e-20*c1 + 1.74e-20*c2 - 9.716e-21*c3 + 3.581e-20*c4) - 1.0*c3*(9.716e-21*c1 + 4.617e-21*c2 - 2.578e-21*c3 + 9.502e-21*c4))*(1.11e-16*c1 - 4.163e-17*c2 + 9.714e-17*c3 - 2.0*c4))/(c2*(2.906e-17*c1 - 1.0*c2 + 4.142e-17*c3 - 2.082e-17*c4) + c4*(5.551e-17*c1 - 2.082e-17*c2 + 4.857e-17*c3 - 1.0*c4) - 1.0*c3*(2.489e-16*c1 - 4.142e-17*c2 + c3 - 4.857e-17*c4) - 1.0*c1*(c1 - 2.906e-17*c2 + 2.489e-16*c3 - 5.551e-17*c4))^2;

q(5)=(0.3564*c1 + 0.6837*c2 + 0.5763*c3 + 0.06982*c4)^2 + (0.6115*c1 - 0.02933*c2 - 0.5906*c3 + 0.1352*c4)^2 + (0.2437*c1 - 0.7247*c2 + 0.5636*c3 + 0.1245*c4)^2 + (0.07592*c1 - 0.04065*c2 + 0.0289*c3 - 0.9757*c4)^2 + (0.6587*c1 - 0.06987*c2 + 0.02453*c3 - 0.09683*c4)^2 - 1.0;

end

其实func里的函数q(1)q(2)q(3)q(4)q(5)就是主程序里的L1L2L3L4L5的计算结果,先运行完之后,又复制粘贴进func去的,应该怎么做才能把这五个方程直接放func里呢? 谢谢!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。