![]() |
版主 一个简单的问题
[SIZE="6"][/SIZE]
我是一个MATLAB的初学者,昨天老师留了个实验,用matlab求一个系统传递函数的未知参数.下面是我想的框架.主要的不是求解的原理问题,就是程序的可行性,有些注释,希望给些指点. syms s y=ilaplace(0.35/((s+0.5)*(s+0.7))); for t=0:3 g(t)=y; end /*t=0到3 时,将Y的值赋予g(t)*/ A=[g(1),g(2);g(2),g(3)]; /*方程组-g(0)=a1*g(1)+a2*g(2) ;-g(1)=a1*g(2)+a2*g(3)求a1.a2 */ B=[-g(0),-g(1)]; C=[a1,a2]; C=B/A; /*求出a1,a2 */ x=solve('1+ai*x+a2*x^2') /*1+ai*x+a2*x^2=0 的根*/ s1=log(x1); s2=log(x2); D=[1,1;exp(s1),exp(s2)]; E=[g(0),g(1)]; F=[c1,c2]; F=E/F; /*求出c1,c2*/ |
[SIZE="4"]程序的问题还是挺多的,你的y 还想是在做 拉式变换哦
错误:1. g(t) 你是从0开始取的,这是不对的,向量的第一个位置对应的是1,不是0 2. C=[a1,a2],直接删除,虽然能明白你的意思,但是不是这么用的,把这个删除了,再把下面的程序 C=B/A 改为 [a1,a2]=B/A ,就可以了。 3. 你的a1求出来是 -1, a2=0,那么解那个方程组的时候 只能得到一个解,不会有两个解 [/SIZE] |
[COLOR="Red"]x=solve('1+ai*x+a2*x^2')[/COLOR]
[SIZE="4"]这个程序,如果这么写的话 a1,a2 都是字母串,而不是数值 所以应该改为: syms x f=@(a1,a2) 1+a1*x+a2*x^2; X=solve(f(a1,a2)); 就可以了[/SIZE] 不过方程只有1个解,你想得到2个解,那你的问题是不是哪里弄错了呢? |
所有时间均为北京时间。现在的时间是 14:35。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.