[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
?
Solved

Matrix discretisation routine in C

Posted on 2001-07-09
4
Medium Priority
?
273 Views
Last Modified: 2006-11-17
Looking for the EFFICIENT algorithm implimented in C.
0
Comment
Question by:john_t
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
4 Comments
 
LVL 4

Expert Comment

by:prashant_n_mhatre
ID: 6269104
state-space matrices?
0
 

Author Comment

by:john_t
ID: 6270133
yes
0
 
LVL 4

Expert Comment

by:prashant_n_mhatre
ID: 6270164
If you have access to MATLAB, have a look at MATLAB c2d command. They use matrix discretization using matrix exponentials but for you it will be very difficult to implement.

I know 3 routines do this. The good one is in Fortran (not in C) and it is easy to understand. I'll get it tomorrow.
0
 
LVL 4

Accepted Solution

by:
prashant_n_mhatre earned 800 total points
ID: 6272990
Here it goes...
If you don't understand terminology...let me know..


c     returns the discretized state and input transition matrices

     subroutine discret(a,b,delt,phi,gam,nord,ni)
     implicit real*8(a-h,o-z)

     dimension si(100,100),q(100,100),sb(100,100),prod(100,100)
     dimension a(100,100),b(100,15)
     dimension phi(100,100),gam(100,15)

     do i=1,nord
        q(i,i)=1.0
        si(i,i)=q(i,i)
      end do

     do k=150,1,-1
        if(k.eq.1) then
           call matmul(si,b,nord,nord,ni,sb,100,100,100)
           do i=1,nord
              do j=1,ni
                     gam(i,j)=sb(i,j)*delt
               end do
            end do
           call matmul(a,si,nord,nord,nord,prod,100,100,100)
           do i=1,nord+1
              do j=1,nord+1
                     phi(i,j)=prod(i,j)*delt+q(i,j)
               end do
            end do
        else
           call matmul(a,si,nord+1,nord+1,nord+1,prod,100,100,100)
           do i=1,nord+1
              do j=1,nord+1
                     si(i,j)=q(i,j)+prod(i,j)*delt/float(k)
               end do
            end do
        endif
      end do

     return
     end

c     _______________________________________________________________________________
c     subroutine to obtain the product of two matrices
     
     subroutine matmul(a2,b2,m3,n3,iq,c1,ia,ib,ic)
     implicit real*8(a-h,o-z)

     dimension a2(ia,1),b2(ib,1),c1(ic,1)

     do i=1,m3
        do j=1,iq
           c1(i,j)=0.0
           do k=1,n3
                  c1(i,j)=c1(i,j)+a2(i,k)*b2(k,j)
            end do
         end do
      end do

     return
     end
c     _______________________________________________________________________________

0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Today, the web development industry is booming, and many people consider it to be their vocation. The question you may be asking yourself is – how do I become a web developer?
What do responsible coders do? They don't take detrimental shortcuts. They do take reasonable security precautions, create important automation, implement sufficient logging, fix things they break, and care about users.
In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …
Introduction to Processes

649 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question