Matlab 版 (精华区)

发信人: zjliu (秋天的萝卜), 信区: Matlab
标  题: [合集] 赋的值传递
发信站: 哈工大紫丁香 (Mon Nov 22 11:41:41 2004), 站内

────────────────────────────────────────
  incoming (♂惺惺作态♂)          于  (Wed Sep 15 10:16:40 2004)  说道:



────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Wed Sep 15 10:43:02 2004)  说道:

看看这个:
E3=1;
m2=2;

S1='(m1+4*m2+m4)*v0=m1*v1+(4*m2+m4)*v2';
S2='1/2*(m1+4*m2+m4)*v0^2+E1=1/2*m1*v1^2+1/2*(4*m2+m4)*v2^2';
[v1,v2]=solve(S1,S2)
S3='(4*m2+m4)*v2=4*m2*v3+m4*v4';
S4='1/2*(4*m2+m4)*v2^2+E2=1/2*4*m2*v3^2+1/2*m4*v4^2';
[v3,v4]=solve(S3,S4)
v21=sqrt(E3/(2*m2))

【 在 incoming (♂惺惺作态♂) 的大作中提到: 】
: 标  题: 赋的值传递
: 发信站: BBS 哈工大紫丁香站 (Wed Sep 15 10:16:40 2004)

: --
: clear all 
: disp('please input v0='); 
: v0=input(''); 
: disp('please input E1='); 
: E1=input(''); 
: disp('please input E2='); 
: E2=input(''); 
: disp('please input E3='); 
: E3=input(''); 
: disp('please input m1='); 
: m1=input(''); 
: disp('please input m2='); 
: m2=input(''); 
: disp('please input m4='); 
: m4=input(''); 
: S1='(m1+4*m2+m4)*v0=m1*v1+(4*m2+m4)*v2'; 
: S2='1/2*(m1+4*m2+m4)*v0^2+E1=1/2*m1*v1^2+1/2*(4*m2+m4)*v2^2'; 
: [v1,v2]=solve(S1,S2) 
: S3='(4*m2+m4)*v2=4*m2*v3+m4*v4'; 
: S4='1/2*(4*m2+m4)*v2^2+E2=1/2*4*m2*v3^2+1/2*m4*v4^2'; 
: [v3,v4]=solve(S3,S4) 
: v21=sqrt(E3/(2*m2)) 

: 这样一个程序,求方程组的解后参数传递不过来,不能求出最后的v1,v2,v3,v4 
: 请问,怎么办哦 
:  是不是求解的命令不恰当啊,在线等 
: 用subs也不行啊,到底怎么才能传递参数啊

: ★http://dignity.net163.com  ^_^                                                                                               [m


: ※ 修改:·incoming 於 Sep 15 10:18:13 2004 修改本文·[FROM: 221.237.6.252]
: ※ 来源:·哈工大紫丁香 http://bbs.hit.edu.cn·[FROM: 221.237.6.252]




────────────────────────────────────────
  incoming (♂惺惺作态♂)          于  (Wed Sep 15 10:52:29 2004)  说道:

你是说直接赋值,我试过了,不行的阿0
有没有别的命令啊
可求解这种方程组的根啊
【 在 zjliu (秋天的萝卜) 的大作中提到: 】
: 看看这个:
: E3=1;
: m2=2;
: S1='(m1+4*m2+m4)*v0=m1*v1+(4*m2+m4)*v2';
: S2='1/2*(m1+4*m2+m4)*v0^2+E1=1/2*m1*v1^2+1/2*(4*m2+m4)*v2^2';
: [v1,v2]=solve(S1,S2)
: S3='(4*m2+m4)*v2=4*m2*v3+m4*v4';
: S4='1/2*(4*m2+m4)*v2^2+E2=1/2*4*m2*v3^2+1/2*m4*v4^2';
: ...................





────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Wed Sep 15 11:23:35 2004)  说道:

我看了你的方程的解,你仔细看一下,v1的表达式里面含有v2,
v3和v4之间也存在着这样的交叉现象,这个是问题的根源

【 在 incoming (♂惺惺作态♂) 的大作中提到: 】
: 你是说直接赋值,我试过了,不行的阿0
: 有没有别的命令啊
: 可求解这种方程组的根啊
: ...................



────────────────────────────────────────
  incoming (♂惺惺作态♂)          于  (Wed Sep 15 11:29:18 2004)  说道:

那个当然了,这是二元方程组啊,前两个是一组,后两个是一组啊,后一组要靠前一族方
程组的解啊,通过第一个方程组,解出v1,v2,然后带进后一组里面解出v3,v4没什么问
题啊,
可就是赋的值不能传递进来
【 在 zjliu (秋天的萝卜) 的大作中提到: 】
: 我看了你的方程的解,你仔细看一下,v1的表达式里面含有v2,
: v3和v4之间也存在着这样的交叉现象,这个是问题的根源





────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Wed Sep 15 11:36:00 2004)  说道:

你的方程写得有问题,整理一下吧
【 在 incoming (♂惺惺作态♂) 的大作中提到: 】
: 那个当然了,这是二元方程组啊,前两个是一组,后两个是一组啊,后一组要靠前一族方
: 程组的解啊,通过第一个方程组,解出v1,v2,然后带进后一组里面解出v3,v4没什么问
: 题啊,
: ...................



────────────────────────────────────────
  incoming (♂惺惺作态♂)          于  (Wed Sep 15 11:37:07 2004)  说道:

应该不会啊,好的,我再回去看看,下午再说了
【 在 zjliu (秋天的萝卜) 的大作中提到: 】
: 你的方程写得有问题,整理一下吧





────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Wed Sep 15 13:42:52 2004)  说道:

我对你的方程做了系数代换,这回有数值解了
S1='a1-m1*v1-b1*v2=0';
S2='c1-m1*v1^2-b1*v2^2=0';
[v1,v2]=solve(S1,S2)
S3='b2-4*m2*v3-m4*v4=0';
S4='c2=4*m2*v3^2+m4*v4^2';
[v3,v4]=solve(S3,S4)
v21=sqrt(E3/(2*m2))
v0=0.5;
E1=1;
E2=2;
E3=3;
m1=7;
m2=8;
m4=9;
a1=(m1+4*m2+m4)*v0;
b1=4*m2+m4;
c1=a1*v0^2+E1;
v1r=char(v1(1));
eval(['v1=double([',char(v1(1)),',',char(v1(2)),'])'])
eval(['v2=double([',char(v2(1)),',',char(v2(2)),'])'])

b2=b1*v2(1);
c2=b1*v2(1)^2+2*E2;
eval(['v3(1:2)=double([',char(v3(1)),',',char(v3(2)),'])'])
eval(['v4(1:2)=double([',char(v4(1)),',',char(v4(2)),'])'])

b2=b1*v2(2);
c2=b1*v2(2)^2+2*E2;
eval(['v3(3:4)=double([',char(v3(1)),',',char(v3(2)),'])'])
eval(['v4(3:4)=double([',char(v4(1)),',',char(v4(2)),'])'])

【 在 incoming (♂惺惺作态♂) 的大作中提到: 】
: 应该不会啊,好的,我再回去看看,下午再说了




────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Wed Sep 15 13:50:07 2004)  说道:

我的体会:使用solveh函数求解时,注意使系数变得最简,
否则会带来麻烦

【 在 zjliu (秋天的萝卜) 的大作中提到: 】
: 我对你的方程做了系数代换,这回有数值解了
: S1='a1-m1*v1-b1*v2=0';
: S2='c1-m1*v1^2-b1*v2^2=0';
: ...................



────────────────────────────────────────
  incoming (♂惺惺作态♂)          于  (Thu Sep 16 16:34:14 2004)  说道:

你那个不是系数代换啊,就是先代换了一项阿!不过还是谢谢你给我想了这个办法!我自
己也弄出来了,是用subs命令,再定义了符号表达式之后,直接的把方程组中系数置换为
工作空间中的变量(m文件开始的input产生的变量,当然也可以编一function函数),这
样子最后就得到正确解了
【 在 zjliu (秋天的萝卜) 的大作中提到: 】
: 我的体会:使用solveh函数求解时,注意使系数变得最简,
: 否则会带来麻烦





[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.286毫秒