95 lines
4.3 KiB
HTML
95 lines
4.3 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
|
"http://www.w3.org/TR/REC-html40/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>Description of sylvester3</title>
|
|
<meta name="keywords" content="sylvester3">
|
|
<meta name="description" content="solves a*x+b*x*c=d">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
<meta name="generator" content="m2html © 2003 Guillaume Flandin">
|
|
<meta name="robots" content="index, follow">
|
|
<link type="text/css" rel="stylesheet" href="../m2html.css">
|
|
</head>
|
|
<body>
|
|
<a name="_top"></a>
|
|
<div><a href="../index.html">Home</a> > <a href="index.html">.</a> > sylvester3.m</div>
|
|
|
|
<!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png"> Master index</a></td>
|
|
<td align="right"><a href="index.html">Index for . <img alt=">" border="0" src="../right.png"></a></td></tr></table>-->
|
|
|
|
<h1>sylvester3
|
|
</h1>
|
|
|
|
<h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
|
|
<div class="box"><strong>solves a*x+b*x*c=d</strong></div>
|
|
|
|
<h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
|
|
<div class="box"><strong>function x=sylvester3(a,b,c,d) </strong></div>
|
|
|
|
<h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
|
|
<div class="fragment"><pre class="comment"> solves a*x+b*x*c=d</pre></div>
|
|
|
|
<!-- crossreference -->
|
|
<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
|
|
This function calls:
|
|
<ul style="list-style-image:url(../matlabicon.gif)">
|
|
</ul>
|
|
This function is called by:
|
|
<ul style="list-style-image:url(../matlabicon.gif)">
|
|
<li><a href="dr1.html" class="code" title="function [dr,info]=dr1(dr,task)">dr1</a> Copyright (C) 2001 Michel Juillard</li></ul>
|
|
<!-- crossreference -->
|
|
|
|
|
|
<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
|
|
<div class="fragment"><pre>0001 <span class="comment">% solves a*x+b*x*c=d</span>
|
|
0002 <a name="_sub0" href="#_subfunctions" class="code">function x=sylvester3(a,b,c,d)</a>
|
|
0003 n = size(a,1);
|
|
0004 m = size(c,1);
|
|
0005 <span class="keyword">if</span> n == 1
|
|
0006 x=d./(a*ones(1,m)+b*c);
|
|
0007 <span class="keyword">return</span>
|
|
0008 <span class="keyword">end</span>
|
|
0009 <span class="keyword">if</span> m == 1
|
|
0010 x = (a+c*b)\d;
|
|
0011 <span class="keyword">return</span>;
|
|
0012 <span class="keyword">end</span>
|
|
0013 x=zeros(n,m);
|
|
0014 [u,t]=schur(c);
|
|
0015 [aa,bb,qq,zz]=qz(full(a),full(b),<span class="string">'real'</span>); <span class="comment">% available in Matlab version 6.0</span>
|
|
0016 d=qq*d*u;
|
|
0017 i = 1;
|
|
0018 <span class="keyword">while</span> i < m
|
|
0019 <span class="keyword">if</span> t(i+1,i) == 0
|
|
0020 <span class="keyword">if</span> i == 1
|
|
0021 c = zeros(n,1);
|
|
0022 <span class="keyword">else</span>
|
|
0023 c = bb*(x(:,1:i-1)*t(1:i-1,i));
|
|
0024 <span class="keyword">end</span>
|
|
0025 x(:,i)=(aa+bb*t(i,i))\(d(:,i)-c);
|
|
0026 i = i+1;
|
|
0027 <span class="keyword">else</span>
|
|
0028 <span class="keyword">if</span> i == n
|
|
0029 c = zeros(n,1);
|
|
0030 c1 = zeros(n,1);
|
|
0031 <span class="keyword">else</span>
|
|
0032 c = bb*(x(:,1:i-1)*t(1:i-1,i));
|
|
0033 c1 = bb*(x(:,1:i-1)*t(1:i-1,i+1));
|
|
0034 <span class="keyword">end</span>
|
|
0035 z = [aa+bb*t(i,i) bb*t(i+1,i); bb*t(i,i+1) aa+bb*t(i+1,i+1)]<span class="keyword">...</span>
|
|
0036 \[d(:,i)-c;d(:,i+1)-c1];
|
|
0037 x(:,i) = z(1:n);
|
|
0038 x(:,i+1) = z(n+1:end);
|
|
0039 i = i + 2;
|
|
0040 <span class="keyword">end</span>
|
|
0041 <span class="keyword">end</span>
|
|
0042 <span class="keyword">if</span> i == m
|
|
0043 c = bb*(x(:,1:m-1)*t(1:m-1,m));
|
|
0044 x(:,m)=(aa+bb*t(m,m))\(d(:,m)-c);
|
|
0045 <span class="keyword">end</span>
|
|
0046 x=zz*x*u';
|
|
0047
|
|
0048 <span class="comment">% 01/25/03 MJ corrected bug for i==m (sign of c in x determination)</span>
|
|
0049 <span class="comment">% 01/31/03 MJ added 'real' to qz call</span></pre></div>
|
|
<hr><address>Generated on Fri 16-Jun-2006 09:09:06 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> © 2003</address>
|
|
</body>
|
|
</html> |