问题:求解线性方程
我有一个3×3矩阵,我想把3个表达式作为包含像
这样的矩阵单元格的输入2*b(1,1)+3*b(1,2)+3*b(1,3)
3*b(2,1)+4*b(2,3)+3*b(2,3)
并使用矩阵
中的不同单元格值对它们进行评估 0 1 0
1 0 0
1 0 0
0 1 0
0 1 0
1 0 0 etc.,
我使用了以下代码,得到了结果,但我只能使用单元格值。当我尝试用数字表达表达式时,它显示以下错误:
*警告:文件:pro.m行:5列:9此行上的表达式在执行时将生成错误。错误将是:使用时出错 ==> vertcat CAT参数维度不一致。
???使用==>时出错pro at 5错误使用==> vertcat CAT参数维度不一致。*
这是我的代码:
clc;
clear all;
close all;
cell = ['b(1,1)+b(1,2)';'b(2,1)+b(2 ,3)';'b(3,3)+b(3,2)'];
exp = cellstr(cell);
res = [0,0,0];
display(res);
display(exp);
a = zeros(3,3);
for i = 1:1:3
a(1,i) = 1;
if(i>1)
a(1,i-1) = 0;
end
for j = 1:1:3
a(2,j) = 1;
if(j>1)
a(2,j-1) = 0;
end
for k = 1:1:3
a(3,k) = 1;
if(k>1)
a(3,k-1) = 0;
end
b = a;
res(k) = eval(exp{k});
if res(1) == 1
if res(2) == 1
if res(3) == 1
display(res);
display(b);
break;
end
end
end
end
a(3,k)=0;
end
a(2,j) = 0;
end
;
帮助我如何输入带数字和矩阵单元格的字符串......
答案 0 :(得分:0)
这不是在Matlab中初始化cell的有效表达式:
cell = ['b(1,1)+b(1,2)';'b(2,1)+b(2 ,3)';'b(3,3)+b(3,2)'];
您必须使用大括号 {} :
cell = {'b(1,1)+b(1,2)';'b(2,1)+b(2 ,3)';'b(3,3)+b(3,2)'};
BTW,如果你想解决 AX + b = 0 形式的线性方程式,你可以简单地尝试 X = -inv(A) * b
% Define system
A = [2 3 1; 7 -1 1; 4 0 5];
b = [1 0 1].';
% Solve system
X = -inv(A)*b;