1、首先看一下matlab求解方程的方法,首先指明所解方程的变量,然后指明方程,未知数和限制条件,最后求解方程。
2、在matlab命令行窗口中输入symsx[x,params,conds]=solve(sin(x)==1,'ReturnConditions', true),按回车键可以得到方程解。
3、转换一下,可以看到sin(x)=1方程的解是如下图所示 。
4、也可以求解下面的一个方程。
5、输入symsabcyx;[x,y]=solve([a*x^2+b*y+c==0,a*x+2*y==4],[x,y])。
6、按回车键可以得到方程解。
我最近也学了一点,主要是用于BP网络上面的编程,这里有个例子你先看看!X
=
[0
1
0
1]
clusters
=
5
points
=
10
std_dev
=
0.05
P
=
nngenc(X,clusters,points,std_dev)
plot(P(1,:),P(2,:),'+r')
title('输入样本向量')
xlabel('p(1)')
ylabel('p(2)')
%建立网络
net=newc([0
10
1],5,0.1)
%得到网络权值,并在图上绘出
figure
plot(P(1,:),P(2,:),'+r')
w=net.iw{1}
hold
on
plot(w(:,1),w(:,2),'ob')
hold
off
title('输入样本向量及初始权值')
xlabel('p(1)')
ylabel('p(2)')
figure
plot(P(1,:),P(2,:),'+r')
hold
on
%训练网络
net.trainParam.epochs=7
net=init(net)
net=train(net,P)
%得到训练后的网络权值,并在图上绘出
w=net.iw{1}
plot(w(:,1),w(:,2),'ob')
hold
off
title('输入样本向量及更新后的权值')
xlabel('p(1)')
ylabel('p(2)')
a=0
p
=
[0.6
0.8]
a=sim(net,p)
出错原因:下列的函数表达式定义错误,
x=fmincon('((-3*x(1)+2*x(2)+fval1)^2+(4*x(1)+3*x(2)+fval2)^2)^(1/2)',x0,A,b,[],[],lb,[])
纠正方法,用句柄函数来定义函数表达式,即
@(x)((-3*x(1)+2*x(2)+fval1)^2+(4*x(1)+3*x(2)+fval2)^2)^(1/2)
完整写法如下,
x=fmincon(@(x)((-3*x(1)+2*x(2)+fval1)^2+(4*x(1)+3*x(2)+fval2)^2)^(1/2),x0,A,b,[],[],lb,[])
更改后运行,可得到
x1 = 0.1756;x2= 5.8829
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)