如何用matlab求解二阶微分方程,以及程序实例

如何用matlab求解二阶微分方程,以及程序实例,第1张

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11555428.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存