我试图做一个能检查x和y是否是线性的函数 独立或不给予一般解决方案
cx + dy = 0
所以这就是我的代码:
function myfun (x,y,n,n2) % sprintf('Input function respect to t'); r = [1,x,y]; % n=Degree of power in functions in f1 % n2=input('Degree of power in functions in f2 syms t syms r if n==1 && n2==1 A=[r;diff(r,t,1);diff(r,t,1)]; W=det(A); if W==0 sprintf('Linearly Independent'); else sprintf('Linearly Dependent'); end end if n==1 && n2==2 A=[r;diff(r,t,1);diff(r,t,2)]; W=det(A); if W==0 sprintf('Linearly Independent'); else sprintf('Linearly Dependent'); end end if n==2 && n2==2 A=[r;diff(r,t,1);diff(r,t,2)]; W=det(A); if W==0 sprintf('Linearly Independent'); else sprintf('Linearly Dependent'); end end if n==2 && n2==4 A=[r;diff(r,t,1);diff(r,t,4)]; W=det(A); if W==0 sprintf('Linearly Independent'); else sprintf('Linearly Dependent'); end end When i try to run it for eg. myfun('2*t^2','t^4',2,4) , it gives error
矩阵必须是方形的。 myfun出错(第39行) W = DET(A);
但是当我单独运行它时,代码确实有效。这是否意味着我 错误地传递了这个功能还是有人可以帮助我?
编辑:这是我早期的代码大纲:
>> r=[1,2*t^2,t^4]
r =
[ 1, 2*t^2, t^4]
>> A=[r;diff(r,t,1);diff(r,t,4)];
W=det(A);
>> W
W =
96*t
>> A
A =
[ 1, 2*t^2, t^4]
[ 0, 4*t, 4*t^3]
[ 0, 0, 24]
答案 0 :(得分:0)
正确 - 所以你提供了x和y作为t的函数,但你在myfun中有一个新的符号t由
定义syms t
在定义x和y方面,t与t无关。你也在myfun中重新定义了r!
因此,删除r的重新定义并将t传递给函数,如下所示:
function myfun(t,x,y,n,n2)
r = [1,x,y];
A=[r;diff(r,t,n);diff(r,t,n2)];
W=det(A);
if W==0
fprintf('Linearly Dependent');
else
fprintf('Linearly Independent');
end
end
请注意,您不需要分别测试每对n1和n2。
sprintf也会将结果打印到字符串
str = sprintf(...)
要打印到屏幕,您需要使用
fprintf(1, 'Linearly Independent');
1表示打印到屏幕。如果它被文件标识符替换,它将打印到文件。查看fprintf文档。
现在在函数外部定义t并将函数调用为:
syms t
myfun(t, 2*t^2',t^4, 1, 2)
哦,还有一件事
W == 0 => L.Dependence
W ~= 0 => L.Independence