-
2021-04-21 15:54:46
想求解含有未知数x2 x3 x4 x6 l5 l6的矩阵方程,代码如下:
syms x2 x3 x4 x6 l5 l6
a=[cosd(-90) sind(-90) 0 -100;-sind(-90)*cosd(90) cosd(-90)*sind(90) sind(90) -60*sind(90);sind(-90)*sind(90) -cosd(-90)*sind(90) cosd(90) -60*cosd(90);0 0 0 1]
b=[cos(x2) sin(x2) 0 -70;-sin(x2)*cosd(-120) cos(x2)*sind(-120) sind(-120) 40*sind(-120);sin(x2)*sind(-120) -cos(x2)*sind(-120) cosd(-120) 40*cosd(-120);0 0 0 1]
c=[cos(x3) sin(x3) 0 60;-sin(x3)*cosd(90) cos(x3)*sind(90) sind(90) -140*sind(90);sin(x3)*sind(90) -cos(x3)*sind(90) cosd(90) -140*cosd(90);0 0 0 1]
d=[cos(x4) sin(x4) 0 -50;-sin(x4)*cosd(-90) cos(x4)*sind(-90) sind(-90) -15*sind(-90);sin(x4)*sind(-90) -cos(x4)*sind(-90) cosd(-90) -15*cosd(-90);0 0 0 1]
e=[cosd(30) sind(30) 0 -110;-sind(30)*cosd(145) cosd(30)*sind(145) sind(145) -l5*sin(145);sind(30)*sind(145) -cosd(30)*sind(145) cosd(145) -l5*cosd(145);0 0 0 1]
f=[cos(x6) sin(x6) 0 -130;-sin(x6)*cosd(90) cos(x6)*sind(90) sind(90) -l6*sind(90);sin(x6)*sind(90) -cos(x6)*sind(90) cosd(90) -l6*cosd(90);0 0 0 1]
g=a*b*c*d*e*f
i=[1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1]
h=g'-i';%h=0
k=solve('h(1,1)','h(1,2)','h(1,3)','h(1,4)','h(2,1)','h(2,2)','h(2,3)','h(2,4)','h(3,1)','h(3,2)','h(3,3)','h(3,4)',x2,x3,x4,x6,l5,l6);
x2=eval(k.x2)
x3=eval(k.x3)
x4=eval(k.x4)
x6=eval(k.x6)
l5=eval(k.l5)
l6=eval(k.l6)
求解后matlab显示:
Warning: 12 equations in 6 variables.
> In solve at 113
In sym.solve at 49
Warning: Explicit solution could not be found.
> In solve at 140
In sym.solve at 49
??? Access to an object's fields is only permitted within its methods.
请好心高手帮帮忙!多谢!
更多相关内容 -
在matlab中利用solve来解两个未知数的方程组解不出来,求高手指教
2021-04-18 03:12:22这里有两个关于未知数c1和c2的方程,其中一个方程只包含未知数c1,另一个方程包含c1和c2,我单独解第一个方程的话可以得到c1的解,但是第二个方程就解不出结果了,请高手指点一下。方程一是:1.05157-1.222668+....这里有两个关于未知数c1和c2的方程,其中一个方程只包含未知数c1,另一个方程包含c1和c2,我单独解第一个方程的话可以得到c1的解,但是第二个方程就解不出结果了,请高手指点一下。
方程一是:1.05157-1.222668+.0048063*(1-exp(-.479452*c1))+.0098652*(1-exp(-.9835616*c1))+.0147561*(1-exp(-1.479452*c1))+.0196046*(1-exp(-1.983562*c1))+.0242522*(1-exp(-2.479452*c1))+.0288602*(1-exp(-2.983562*c1))+0.4*.9673068*(1-exp(-2.983562*c1))=0
方程二是:1.12898-3.341505+.0076901*(1-exp(-.479452*c1))+.0157843*(1-exp(-.9835616*c1))+.0236098*(1-exp(-1.479452*c1))+.0313674*(1-exp(-1.983562*c1))+.0388035*(1-exp(-2.479452*c1))+.0461763*(1-exp(-2.983562*c1))+.0532934*(1-exp(-2.983562*c1-.4986301*c2))+.0603177*(1-exp(-2.983562*c1-1.00274*c2))+.0670641*(1-exp(-2.983562*c1-1.49863*c2))+.0737597*(1-exp(-2.983562*c1-2.00274*c2))+.0801891*(1-exp(-2.983562*c1-2.49863*c2))+.0865684*(1-exp(-2.983562*c1-3.00274*c2))+.0926922*(1-exp(-2.983562*c1-3.49863*c2))+.0987661*(1-exp(-2.983562*c1-4.00274*c2))+.1046266*(1-exp(-2.983562*c1-4.50137*c2))+.1104049*(1-exp(-2.983562*c1-5.005479*c2))+0.4*.8637214*(1-exp(-2.983562*c1-5.005479*c2))=0
下面是我的程式:>> c1=solve('1.05157-1.222668+.0048063*(1-exp(-.479452*c1))+.0098652*(1-exp(-.9835616*c1))+.0147561*(1-exp(-1.479452*c1))+.0196046*(1-exp(-1.983562*c1))+.0242522*(1-exp(-2.479452*c1))+.0288602*(1-exp(-2.983562*c1))+0.4*.9673068*(1-exp(-2.983562*c1))','c1')
c1 =
0.15438446386393466762440363354485
>> c2=solve('1.12898-3.341505+.0076901*(1-exp(-.479452*c1))+.0157843*(1-exp(-.9835616*c1))+.0236098*(1-exp(-1.479452*c1))+.0313674*(1-exp(-1.983562*c1))+.0388035*(1-exp(-2.479452*c1))+.0461763*(1-exp(-2.983562*c1))+.0532934*(1-exp(-2.983562*c1-.4986301*c2))+.0603177*(1-exp(-2.983562*c1-1.00274*c2))+.0670641*(1-exp(-2.983562*c1-1.49863*c2))+.0737597*(1-exp(-2.983562*c1-2.00274*c2))+.0801891*(1-exp(-2.983562*c1-2.49863*c2))+.0865684*(1-exp(-2.983562*c1-3.00274*c2))+.0926922*(1-exp(-2.983562*c1-3.49863*c2))+.0987661*(1-exp(-2.983562*c1-4.00274*c2))+.1046266*(1-exp(-2.983562*c1-4.50137*c2))+.1104049*(1-exp(-2.983562*c1-5.005479*c2))+0.4*.8637214*(1-exp(-2.983562*c1-5.005479*c2))','c2')
Warning: Explicit solution could not be found.
> In solve at 179
c2 =
[ empty sym ]
我试过了fsolve函数,但是计算出来的结果跟上面计算出来的c1差太多,理论上c1和c2都是零点几的数字。
这个问题困扰了我好多天,实在想不出来该怎么解了。
请问高手,我要解这两个方程该怎样改程式啊?谢谢
-
matlab求解含三个未知数的三个方程组成的方程组求不出正确解
2021-01-30 23:44:41<p>s=tf('s') Gop1=1.3/(1+s*2)*exp(-1.8*s) GCL1=Gop1/(1+Gop1);...0.565,(x*sin((314*z)/315)*...这个方程组中的另外两个方程是根据虚部=0,实部=-1得到的</p> -
c语言实现,用最小二乘法求解方程数多于未知变量的线性方程组的最适解(即矛盾方程组)
2021-05-21 12:46:25函数功能:用最小二乘法求解方程数多于未知变量的线性方程组的最适解。 测试代码: #define Q 5 #define ROWNUM 6 int main() { double solution[Q-1],eqt[Q][Q]={0}; double a[ROWNUM][Q]={{3,-2,4,6,-11},{4,3,2,...
一、代码:
/***************************************************************************
* ArgMin.h
* Author
* Fri Aug 5 17:18:47 2005
* Copyright 2005
* Email
****************************************************************************/
#include "stdio.h"
#include "math.h"
/* Interface */
//solve the linear equations using "argmin" method
int ArgMin(double *inMtrx,int COLUMN,int rowNum,int colNum,double *solution);
//Solve a series of linear equations
int SolveLinearEqts(double *inMtrx,int COLUMN,int rowNum,int colNum,double *solution);
//Elimination of unknowns
int ReduceUnknowns(double *mtrx_tmp,int COLUMN,int rowNo,int colNo,int rowNum,int colNum);
/* Begin Coding */
//ArgMin using "solvelineareqts".
int ArgMin(double *mtrx_tmp,int COLUMN,int rowNum,int colNum,double *solution)
{
int k,l,j;
double *eqt;
int *q;
q=&colNum;
eqt=(double *)malloc(colNum*colNum*sizeof(double));
//printf("%d",*q);
for(k=0;k
for(l=0;l
{
eqt[k*COLUMN+l]=0;
for(j=0;j
eqt[k*COLUMN+l]+=*(mtrx_tmp+COLUMN*j+k)*(*(mtrx_tmp+COLUMN*j+l));
}
for(k=0;k
{
eqt[k*COLUMN+*q-1]=0;
for(j=0;j
eqt[k*COLUMN+*q-1]+=*(mtrx_tmp+COLUMN*j+*q-1)*(*(mtrx_tmp+COLUMN*j+k));
}
/* show the contents of eqts */
/*int m,n;
printf("eqt:/n");
for(m=0;m
{
for(n=0;n
printf("%.2lf/t",eqt[m*COLUMN+n]);
printf("/n");
}*/
if(!SolveLinearEqts(eqt,COLUMN,(*q-1),*q,solution)) {
return 0;
}
return 1;
}
//Solve the solution of a series of linear equations
int SolveLinearEqts(double *inMtrx,int COLUMN,int rowNum,int colNum,double *solution)
{
int i,j;
double tmpSum;
if(rowNum!=(colNum-1)) {
printf("Can't solve the equations because equation number ");
printf("is not the same as unknow parameters!/n");
return 0;
}
//reduce unknown parameters
for(i=0;i
{
if(!ReduceUnknowns(inMtrx,COLUMN,i,i,rowNum,colNum)) {
printf("/nNeed more Equations to solve elements in matrix A/n");
printf("(Tip: You can try setting a different /"theta/" value or ");
printf("checking the data introduced to function/"CalculateCoeff/"!)/n");
return 0;
}
}
//Calculate the equation at the bottom to acquire value of the first
//variable, then Substitute the solved variables to the equations in
//order to solve more variables:
for(i=rowNum-1;i>=0;i--)
{
tmpSum=0;
for(j=i+1;j
tmpSum+=*(solution+j)*(*(inMtrx+i*COLUMN+j));
if(fabs(inMtrx[i*COLUMN+i])<0.000001) {
printf("/nNeed more Equations to solve elements in matrix A/n");
printf("(Tip: You can try setting a different /"theta/" value, /n or ");
printf("checking the data introduced to function/"CalculateCoeff/"!)/n");
return 0;
}
*(solution+i)=(*(inMtrx+i*COLUMN+colNum-1)-tmpSum)/(*(inMtrx+i*COLUMN+i));
}
return 1;
}
/*Column number of Array is COLUMN_A, but actually the number of figures
in each row is "colNum"! */
int ReduceUnknowns(double *mtrx_tmp,int COLUMN,int rowNo,int colNo,int rowNum,int colNum)
{
int i,j,tmpInt;
double tmpDbl1,tmpDbl2;
double rowMax,colMax;
double *p,*mp;
/*Adjust the rowNo whose value is zero in matrix_tmp[rowNo][colNo] down to
a suitable site*/
p=mtrx_tmp+rowNo*COLUMN+colNo;
mp=mtrx_tmp+rowNo*COLUMN+colNo;
//select main variable:
/*rowMax=fabs(*p);
for(j=colNo+1;j
{
p++;
if(rowMax
rowMax=fabs(*p);
}
}
if(rowMax==0) return 0;
p+=COLUMN-(colNum-colNo-1);
colMax=fabs(*(mtrx_tmp+rowNo*COLUMN+colNo))/rowMax;
tmpInt=rowNo;
for(i=rowNo+1;i
{
rowMax=fabs(*p);
for(j=colNo+1;j
{
p++;
if(rowMax
rowMax=fabs(*p);
}
}
p+=COLUMN-(colNum-colNo-1);
if(rowMax==0) return 0;
tmpDbl1=fabs(*(mtrx_tmp+i*COLUMN+colNo))/rowMax;
if(colMax
colMax=tmpDbl1;
tmpInt=i;
}
}
//change the whole row of "tmpInt" to "rowNo"
for(j=colNo;j
{
tmpDbl1=*(mtrx_tmp+rowNo*COLUMN+j);
*(mtrx_tmp+rowNo*COLUMN+j)=*(mtrx_tmp+tmpInt*COLUMN+j);
*(mtrx_tmp+tmpInt*COLUMN+j)=tmpDbl1;
}*/
/*Transform the matrix_tmp using linear calculation methods*/
tmpDbl1=*p;
p+=COLUMN;
for(i=rowNo+1;i
{
if(fabs(*p)<0.000001) continue;
tmpDbl2=*p;
for(j=colNo;j
{
*p=*p-*mp*tmpDbl2/tmpDbl1;
p++;
mp++;
}
p+=COLUMN-(colNum-colNo);
mp-=colNum-colNo;
}
return 1;
}
二、测试
/******************************************************************************/ (1)int ArgMin(double *inMtrx,int COLUMN,int rowNum,int colNum,double *solution); 函数功能:用最小二乘法求解方程数多于未知变量的线性方程组的最适解。 测试代码: #define Q 5 #define ROWNUM 6 int main() { double solution[Q-1],eqt[Q][Q]={0}; double a[ROWNUM][Q]={{3,-2,4,6,-11},{4,3,2,9,-2},{2,6,8,3,4},{2,4,5,3,3}, {0,0,8,6,-20},{3,4,5,6,0}}; ArgMin(&a[0][0],Q,ROWNUM,Q,&solution[0]); for(i=0;i
-
MATLAB 求解积分上、下限含有未知数的方程
2022-04-11 20:30:06最近在复习MATLAB方面的知识,突然发现在解方程时,如果自变量在积分上限或下限,这样的方程不知道怎么求解。于是先在网上和MATLAB论坛上搜索了一下,发现都没有这样的解决方法。在经过一番尝试之后,终于解决了这个...最近在复习MATLAB方面的知识,突然发现在解方程时,如果自变量在积分上限或下限,这样的方程不知道怎么求解。于是先在网上和MATLAB论坛上搜索了一下,发现都没有这样的解决方法。在经过一番尝试之后,终于解决了这个问题,所以想着分享一下,以免有遇到同样问题的朋友。
其实,利用solve函数就可以解决这个问题。例如,我们求解下面这个方程:
先定义符号变量
编辑
添加图片注释,不超过 140 字(可选)
然后进行求解
编辑切换为居中
添加图片注释,不超过 140 字(可选)
这里提示我们可以最好用vpasolve函数,
编辑切换为居中
添加图片注释,不超过 140 字(可选)
好了,现在没有提示Warning了。到这里,问题就解决了。
最后,希望能帮助到有需要的朋友,也欢迎喜欢编程的朋友一起交流!
-
采用solve求解包含两个未知量的等式,用一个表示另外一个未知量的解,但是得不到这样的解
2021-04-24 01:51:49%得到Rdc的解关系,包含Tdc W=2:5; %设定温度范围 z=subs(JRdc,Tdc,W); 将w的值赋予Tdc,得出半径的值 z %这就是所求出不同温度下的半径 运行后出现6横root(),单独运行上面代码到w=2:5上面时,出来的结果为... -
用matlab求解一个两重积分方程(未知数在积分下限,含复数积分)
2021-04-20 06:06:416、PFA的计算,积分上限为无穷大,但取无穷大的上限容易导致出错(我不确定是否可通过算法设置避免),因而从实际计算需要出发,上限取一个有限值,例如1000。 结果 r = 10.3200 参考代码 N=25;M=4; Fw=@(w)((1-j*... -
【pyhton解决数学问题】2用python解方程
2022-04-19 10:52:15目录 ...是表示两个数学式(如两个数、函数、量、运算)之间相等关系的一种等式,使等式成立的未知数的值称为“解”或“根”。求方程的解的过程称为“解方程”。 下面我们介绍如何用python解方... -
【教程】用计算器解方程(牛顿法)
2021-06-19 04:09:39一、前言很多计算器都自带利用标准式解方程的功能,解方程式,需要手动输入abc的值。但这样往往需要化简出abc到底是多少,这样容易计算错误,还加大了计算量,往往在注册考试中不实用。下面我介绍一个直接的方法,... -
Python | 含多个未知参数方程的曲线绘制
2020-08-09 23:23:13Python | 含多个未知参数方程的曲线绘制1 背景2 代码解决3 参考 1 背景 前几天,一位高中同(ji)学(you)给我发来一个问题,具体见下面图片: 上述除了Vo和fu,其余字母均已知,而且fu并不是u的函数,就是一个... -
用matlab解三元一次方程组_matlab解高阶方程_matlab二分法求方程的近似解
2021-04-20 02:24:37解三元一次方程组系统默认用户浏览 854matlab解三元一次方程组问题,求大神帮忙。代码是这个,就是一个公式计算:symsuva;LA=1.203;LB=0.6054;LC=1.203;S1=(u^2+v^2*cos(a))/(u^2+v^2);S2=(u*v*(1-cos(a)))/(u^2+v^2... -
Mathematica 解方程组 (数字方程组&含表达式的方程组)
2020-12-14 10:27:55这里是具有两个未知量的简单线性方程: Solve[{a x + b y == 1, x - y == 2}, {x, y}] 不需要是线性方程也可以解。 如果输出是空,如下 - In[2]:= Solve[{l1 + lm == k1, l2 + lm == k2, l1 + (l2 lm/(l2 + lm))... -
求解线性超定方程组的最小二乘解[n个未知数,大于n个方程组](附代码)
2018-12-18 11:24:49本文针对n个未知数,大于n个方程组。求解未知数的问题,matlab代码。 一、首先,请注意,本文说的是线性超定方程组,方程组是线性的,不含有未知数的出发以及乘方。 求线性超定方程组,有这么几种方法: 1. 直接... -
如何用fsolve函数求一个含参矩阵行列式等于0的方程
2021-04-22 18:00:02-8870578056445081/2305843009213693952, 8870578056445081/2305843009213693952] 我知道可以用solve函数求出一个w的值,但是满足这个方程有很多解,我要把前五个解求出来,solve函数无法实现,但是fsolve函数对... -
方程:方程(equation)是指含有未知数的等式
2019-10-03 13:55:12是表示两个数学式(如两个数、函数、量、运算)之间相等关系的一种等式,使等式成立的未知数的值称为“解”或“根”。求方程的解的过程称为“解方程”。 方程中文一词出自古代数学专著《九章算术》,其第八卷即名... -
方程中参数未知怎么在MATLAB中表?
2021-04-19 01:45:24这两点大体上验证了我前面的感觉。。 这个问题应该有比较科学的解决方式,可惜我不会。只提供一种最简单、最“野蛮”的的解决方式了:既然不能在solve中用u和u1等代替前面的表达式,那只能直接把表达式写入solve中... -
用Python如何解数学方程
2020-12-17 06:35:25原标题:用Python如何解数学方程 我们先从简单的来例题1: 这是北师大版小学六年级上册课本95页的一道解方程练习题:x...import sympy # 引入解方程的专业模块sympyx = sympy.symbols("x") # 申明未知数"x"a = sympy... -
解三元一次方程组的方法
2021-05-24 08:27:50一、定义如果方程组中含有三个未知数,每个方程中含有未知数的项的次数都是一次,并且方程组中一共有两个或两个以上的方程,这样的方程组叫做三元一次方程组。解三元一次方程组的基本思路是:通过"代入"或"加减"进行... -
matlab solve函数解含参方程
2021-05-07 12:10:52已知含参数的复合函数的值域求定义域令t=kx^2+(k+1)x+1,当k=0时,由t=x+1>0,得x>-1.当k>0时,由t=(kx+1)(x+1)>0,有0含绝对值的函数奇偶性判断不管表达式是怎么样的!判断函数的奇偶性都是按照下面两步:1,... -
若一个二元一次方程的一个解为
2020-12-20 05:16:10二元一次方程组的解法:解方程的依据—等式性质1.a=b←→a+c=b+c2.a=b←→ac=bc ...②将y = ax + b 或 x = ay + b代入另一个方程,消去一个未知数,从而将另一个方程变成一元一次方程;③解这个一元一次方程,求出... -
matlab中input输入多个数_方程的计算机处理914_Matlab
2020-11-21 02:50:25计算机语言运用--数值计算9-方程的计算机处理91-4_Matlab计算机:电子线路组成的计算机器。人与计算机则是通过计算机语言-符号系统说给计算机听而交流。计算机语言有低级语言-机器语言、汇编、高级语言-C/C++/C#/VB/... -
请教高手如何用matlab解多元二次不等式的解,有三个未知数x1,x2,x3,约束条件如下:
2021-04-18 06:31:56共回答了15个问题采纳率:86.7%楼上正解无错再给一种不同的形式function zd0323format long%改变格式,使更精确输出结果%% 目标函数function y=fun(x)y=-(0.36*x(1)+0.25*x(2)+0.39*x(3));%求最大值,就是求负目标函数... -
用Python解方程
2020-12-03 07:33:53我们先从简单的来例题1: 这是北师大版小学六年级上册课本95页的一道解方程练习题:大家可以先口算一下,这道...引入解方程的专业模块sympy2 x = sympy.symbols("x") # 申明未知数"x"3 a = sympy.solve([x+(1/5)*x-2... -
算法题 高斯消元解线性方程组(Python)
2020-12-30 19:44:08如果给定线性方程组存在唯一解,则输出共n行,其中第i行输出第i个未知数的解,结果保留两位小数。 如果给定线性方程组存在无数解,则输出“Infinite group solutions”。 如果给定线性方程组无解,则输. -
洛谷 P2312 解方程
2017-06-30 21:49:00题目描述 已知多项式方程: $a_0+a_1x+a_2x^2+..+a_nx^n=0$//用LaTex好看多了 求这个方程在[1, m ] 内...第一行包含2 个整数n 、m ,每两个整数之间用一个空格隔开。 接下来的n+1 行每行包含一个整数,依次为a0... -
用matlab求解符号方程及符号方程组
2021-04-21 09:17:15符号方程的求解MATLAB7.0中的符号计算可以求解线性方程(组)、代数方程的符号解、非线性符号方程(组)、常微分方程(组),求解这些方程(组)是通过调用solve函数实现的,如求解代数方程的符号解调用solve函数的格式是... -
一个二元一次方程的一个解是
2021-03-07 11:08:11所谓“消元”就是减少未知数的个数,使多元方程最终转化为一元方程再解出未知数。这种将方程组中的未知数个数由多化少,逐一解决的想法,叫做消元思想。如:5x+6y=7 2x+3y=4,变为5x+6y=7 4x+6y=8消元方法:代入消元法... -
MATLAB学习笔记(七)——MATLAB解方程与函数极值
2019-10-05 11:21:04(一)线性方程组求解 包含n个未知数,由n个方程构成的线性方程组为: 其矩阵表示形式为: 其中 一、直接求解法 1、左除法 x=A\b; 如果A是奇异的,或者接近奇异的。MATLAB会发出警告信息的。 2、利用矩阵的分解来... -
解方程 ( 迭代法/牛顿迭代/高斯消元 ) 详解及模板
2018-07-28 10:47:27以下内容参考:https://blog.csdn.net/lxt_Lucia~~ 一.迭代法解方程 ( 组 ) 的根 ... ...首先,迭代法解方程的实质是按照下列步骤构造一个序列x0,x1,…,xn,来逐步逼近方程f(x)=0的解: ... -
方程组的解的情形是[]A.有惟一解B.无解C.有两解D.有无数解
2021-01-12 09:57:44定义:一般地,使二元一次方程组的两个方程左、右两边的值都相等的两个未知数的值,叫做二元一次方程组的解。求方程组的解的过程,叫做解方程组。二元一次方程组的解法:消元法1)代入消元法用代入消元法的一般步骤是...