作业帮 > 数学 > 作业

mathematica解方程组 (循环,选择)

来源:学生作业帮 编辑:拍题作业网作业帮 分类:数学作业 时间:2024/04/26 04:08:59
mathematica解方程组 (循环,选择)
想用mathematica解方程组:
1不同情况,有的系数会变化,比如{ax+by=0,cx+dy=k}中的a会变化,比如:可取1,2,3,4,5..我想用一个循环就像c里的for,改变a【i】的值,定义数组a[]的时候能不能把所有元素都设定成一个数(0),然后我用循环赋值(因为大多数情况都是0),对语言不了解,谢谢
2 当x
那个有点复杂,就举个简单的例子吧
比如:
x1=10-a[[1]] p
x2 =20- 3 x1-a[[2]]p
x3=30 -4 x2-a[[3]] p
x4= 40-5 x3-a[[4]]p=0
a[]的值开始是0,只有两个a[]有值(第一个是t(t=1),第二个就是t/2),比如第一次的初始值,a[1]=1,a[2]=1/2,a[3],a[4]=0。第二次a[1]=1,a[3]=1/2;同理a[2],a[3];a[2],a[4]........
谢谢
不好意思,表达能力有限。
1 4个方程,因为最后一个方程可以写成40- 5 x3-a[[4]] p=0
2 p是未知,x1, x2, x3是未知,同理就是:a[1]=0 ,a[2]=1, a[3]=1/2,a[4]=0;a[1]=0, a[2]=1, a[3]=0,a[4]=1/2。以此类推:a[1]=0 ,a[2]=0 , a[3]=1, a[4]=1/2。我写的a[2],a[3]就是只有这两个数有值,且第一个数为1,第二个数为1/2。
3 p是未知可以判断方程的解吧,方程个数=未知数个数
4 x1如果是负,就令x1=0,把x1=0代入,算出x2,x3,p的值。若x1为正,则继续。同理x2为负,令x2=0,代入后算x3 ,p的值(x1的值不修改,也就是说把第二个方程替换为x2=0。并不由第二个方程算x1)。谢谢
又没说清楚。。(我的语文啊),不重解x1,上边的括号里有说明。可以理解为把第二个方程换为x2=0。而且后边的方程里也没有x1,所以不用管x1
可以实现的,你把你的想法再写具体点,我可以帮你实现.你要写成像课本上的题目的形式一样明白我才能做,而你只是简要的说了你的想法,我不想花时间去理解你的想法.
补充:
a[]的值开始是0,只有两个a[]有值(第一个是t(t=1),第二个就是t/2),比如第一次的初始值,a[1]=1,a[2]=1/2,a[3],a[4]=0.第二次a[1]=1,a[3]=1/2;同理a[2],a[3];a[2],a[4].
p是未知,5个x,5个方程(或者4个x,4个方程,x4可以不设)
(1)到底几个方程还是方程个数未知?
(2)"同理a[2],a[3];a[2],a[4].p是未知,
(3)p是未知的如何判断方程的解是正是负?还是p是要输入的?
(4)当算出x1或x2或x3为负时,将谁改成值为0,继续计算其他值?
你先把你的意思说给旁边人听,看看他们能理解你的意思不,然后再考虑我能否理解你的意思.
补充:
4 x1如果是负,就令x1=0,把x1=0代入,算出x2,x3,p的值.若x1为正,则继续.同理x2为负,令x2=0,代入后算x3 ,p的值(x1的值不修改,也就是说把第二个方程替换为x2=0.并不由第二个方程算x1).
中的"同理x2为负,令x2=0,代入后算x3 ,p的值"部分我还想问一下,将x2改为0后还重新解x1否.因为单纯的改变x2,会导致整个方程组变化的,x1的值也会受到影响.如果将x2改为0后,重新解x1,那么x1再出现负值该如何处理.
你的理解是有问题的,我不说你的问题了,按照你的想法我写了程序,你直接复制运行就可以了:
a = {1,1/2,0,0};
b = {"x1=","x2=","x3=","p="};
jie = Table[
Solve[{x1 == 10 - a[[1]] p,x2 == 20 - 3 x1 - a[[2]] p,
x3 == 30 - 4 x2 - a[[3]] p,40 - 5 x3 - a[[4]] p == 0},{x1,x2,
x3,p}][[1,i,-1]],{i,1,4}];
Print["直接解得的结果:"]
Table[{b[[ii]] ToString[N[jie[[ii]]]]},{ii,1,4}]
If[jie[[1]] < 0,
jie = Flatten
[Append[{0},
Table[Solve[{x2 == 20 - a[[2]] p,x3 == 30 - 4 x2 - a[[3]] p,
40 - 5 x3 - a[[4]] p == 0},{x2,x3,p}][[1,i,-1]],{i,1,
3}]
]
]
];
Print["判断x1后的结果:"]
Table[{b[[ii]] ToString[N[jie[[ii]]]]},{ii,1,4}]
If[jie[[2]] < 0,
jie = Flatten
[Append[{jie[[1]],0},
Table[Solve[{x3 == 30 - a[[3]] p,
40 - 5 x3 - a[[4]] p == 0},{x3,p}][[1,i,-1]],{i,1,2}]
]
]
];
Print["判断x2后的结果:"]
Table[{b[[ii]] ToString[N[jie[[ii]]]]},{ii,1,4}]
If[jie[[3]] < 0,
jie = Flatten
[Append[{jie[[1]],jie[[2]],0},
Solve[{40 - a[[4]] p == 0},{p}][[1,1,-1]]
]
]
];
Print["判断x3后的结果:"]
Table[{b[[ii]] ToString[N[jie[[ii]]]]},{ii,1,4}]
If[jie[[4]] < 0,
jie = {jie[[1]],jie[[2]],jie[[3]],0}
];
Print["判断x4后的结果,也是最终结果:"]
Table[{b[[ii]] ToString[N[jie[[ii]]]]},{ii,1,4}]